Created
August 18, 2010 02:11
-
-
Save rcfox/533111 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
grammar Parser::English | |
{ | |
rule TOP { <sentence> }; | |
rule sentence | |
{ | |
<noun_phrase> <verb_phrase> | |
| <noun_phrase> <auxillary> <verb_phrase> | |
| <auxillary> <noun_phrase> <verb_phrase> | |
}; | |
rule noun_phrase { <determiner>? <adjective_phrase>? <noun> <prepositional_phrase>? }; | |
rule verb_phrase { <verb> <noun_phrase>? <prepositional_phrase>? }; | |
rule prepositional_phrase { <preposition> <noun_phrase> }; | |
rule adjective_phrase { <adverb_phrase>? <adjective> }; | |
rule adverb_phrase { <adverb> <adverb_phrase>? }; | |
rule auxillary { <verb> }; | |
rule noun { noun <rest> }; | |
rule verb { verb <rest> }; | |
rule adjective { adjective <rest> }; | |
rule adverb { adverb <rest> }; | |
rule preposition { preposition <rest> }; | |
rule determiner { determiner <rest> }; | |
rule rest { \|?.*?\s? }; | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use v6; | |
use Test; | |
use Parser::English; | |
ok Parser::English.parse('noun verb'), 'Passes'; | |
nok Parser::English.parse('noun adverb'), 'Passes'; | |
ok Parser::English.parse('noun|verb verb'), 'Passes'; | |
ok Parser::English.parse('noun|verb noun|verb preposition noun|verb'), 'Passes'; | |
ok Parser::English.parse('determiner adjective|adverb noun verb'), 'Fails'; | |
done_testing; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment