%include { #include #include } %syntax_error { printf("***SYNTAX ERROR (trying recovery)\n"); } %parse_failure { printf("***PARSING FAILED!!!!\n"); exit(99); } %parse_accept { printf("SUCCESSFUL PARSE!!!\n"); } configuration ::= stanzas. {;} stanzas ::= stanzas stanza. {;} stanzas ::= . {;} stanza ::= STANZA name(A) LBRACE settings RBRACE. {printf("Found stanza named '%s'\n",A);} settings ::= settings setting. {;} settings ::= . {;} setting ::= variable(A) EQUAL value(B) SEMICOLON. {printf("Found setting '%s' = '%s'\n",A,B);} name(A) ::= IDENTIFIER(B). {A = B;} variable(A) ::= IDENTIFIER(B). {A = B;} value(A) ::= STRING(B). {A = B;} value(A) ::= NUMBER(B). {A = B;}