%{ #include int yylex(void); void yyerror(char const *); void printValue(char *val) { fprintf(stderr, "%s", val); } #include "utils.h" %} %union{ char *stringVal; } %error-verbose %token VECTOR NEW JTABLE ADDELEMENT NONTRAITE %token STRING %type QuotedString %% Text : Instruction | Text Instruction ; Instruction : VectorDef | VectorValue | TableDef | error ; VectorDef: VECTOR STRING '=' NEW VECTOR '(' ')' ';' {createVector($2);} ; VectorValue: STRING '.' ADDELEMENT '(' QuotedString ')' ';' {addVectorStringValue($1, $5);} | STRING '.' ADDELEMENT '(' STRING ')' ';' {addVectorVectorValue($1, $5);} ; QuotedString: '"' STRING '"' {$$ = $2} ; TableDef: JTABLE STRING '=' NEW JTABLE '(' STRING ',' STRING ')' ';' {createTable($2, $7, $9);} ;