%{ #include extern int yylex(void); extern void yyerror(const char*); %} %token LEFTBRACE RIGHTBRACE MAP AREA CORNER NORTH EAST SOUTH WEST NAME COORDINATE %define parse.error verbose %start input %% input : MAP NAME LEFTBRACE areas RIGHTBRACE ; areas : areas area | area ; area : AREA NAME LEFTBRACE corners RIGHTBRACE ; corners : corners corner | corner ; corner : CORNER COORDINATE direction COORDINATE direction ; direction : NORTH | EAST | SOUTH | WEST ; %% int main(void) { printf("Write a complete input, ending with EOF:\n"); yyparse(); printf("Ok!\n"); return 0; } void yyerror(const char *s) { printf("Incorrect input! Error message: %s\n", s); } int yywrap(void) { return 1; }