%{
#include <stdio.h>
%}
%token NOUN PRONOUN VERB ADVERB ADJECTIVE PREPOSITION CONJUNCTION
%%
sentence: simple_sentence { printf("Parsed a simple sentence.\n"); }
| compound_sentence
{ printf
("Parsed a
compound sentence
.\n"
); } ;
simple_sentence: subject verb object
| subject verb object prep_phrase
;
compound_sentence: simple_sentence CONJUNCTION simple_sentence
| compound_sentence CONJUNCTION simple_sentence
;
subject: NOUN
| PRONOUN
| ADJECTIVE subject
;
verb: VERB
| ADVERB VERB
| verb VERB
;
object: NOUN
| ADJECTIVE object
;
prep_phrase: PREPOSITION NOUN
;
%%
extern FILE *yyin;
main()
{
do
{
yyparse();
}
while(!feof(yyin));
}
yyerror(s)
char *s;
{
fprintf(stderr, "%s\n", s);
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiV9CgoldG9rZW4gTk9VTiBQUk9OT1VOIFZFUkIgQURWRVJCIEFESkVDVElWRSBQUkVQT1NJVElPTiBDT05KVU5DVElPTgoKJSUKCnNlbnRlbmNlOiBzaW1wbGVfc2VudGVuY2UgIHsgcHJpbnRmKCJQYXJzZWQgYSBzaW1wbGUgc2VudGVuY2UuXG4iKTsgfQogICAgICB8IGNvbXBvdW5kX3NlbnRlbmNlIHsgcHJpbnRmKCJQYXJzZWQgYSBjb21wb3VuZCBzZW50ZW5jZS5cbiIpOyB9CiAgICAgIDsKCnNpbXBsZV9zZW50ZW5jZTogc3ViamVjdCB2ZXJiIG9iamVjdAogICAgICB8ICAgICBzdWJqZWN0IHZlcmIgb2JqZWN0IHByZXBfcGhyYXNlCiAgICAgIDsKCmNvbXBvdW5kX3NlbnRlbmNlOiBzaW1wbGVfc2VudGVuY2UgQ09OSlVOQ1RJT04gc2ltcGxlX3NlbnRlbmNlCiAgICAgIHwgICAgIGNvbXBvdW5kX3NlbnRlbmNlIENPTkpVTkNUSU9OIHNpbXBsZV9zZW50ZW5jZQogICAgICA7CgpzdWJqZWN0OiAgICBOT1VOCiAgICAgIHwgICAgIFBST05PVU4KICAgICAgfCAgICAgQURKRUNUSVZFIHN1YmplY3QKICAgICAgOwoKdmVyYjogICAgICAgVkVSQgogICAgICB8ICAgICBBRFZFUkIgVkVSQgogICAgICB8ICAgICB2ZXJiIFZFUkIKICAgICAgOwoKb2JqZWN0OiAgICAgICAgICAgTk9VTgogICAgICB8ICAgICBBREpFQ1RJVkUgb2JqZWN0CiAgICAgIDsKCnByZXBfcGhyYXNlOiAgICAgUFJFUE9TSVRJT04gTk9VTgogICAgICA7CgolJQoKZXh0ZXJuIEZJTEUgKnl5aW47CgptYWluKCkKewogICAgICBkbwogICAgICAgIHsKICAgICAgICAgICAgeXlwYXJzZSgpOwogICAgICB9CiAgICAgICAgd2hpbGUoIWZlb2YoeXlpbikpOwp9Cgp5eWVycm9yKHMpCmNoYXIgKnM7CnsKICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHMpOwp9