%{ extern char yytext[]; extern char copydat[]; char quad[64]; %} %union { char sval[256]; char * sdata; } %token <sval> IDENTIFIER ALLOW_TYPE CLASSNAME %token INT FLOAT VOID STRING %token <sdata> COPYDATA %token INTERFACE_KEYWORD %start interface_def %% interface_def : INTERFACE_KEYWORD allowance_list type_dec funname '(' argument_list ')' COPYDATA { printf($8);} ; allowance_list : /* empty */ | allowance | allowance_list '|' allowance {} ; allowance : ALLOW_TYPE {} ; type_dec_no_void : INT | STRING | FLOAT | CLASSNAME {} ; type_dec : type_dec_no_void | VOID {} ; funname : IDENTIFIER {} ; argument_list : /* empty */ | argument | argument_list ',' argument {} ; argument : type_dec_no_void | type_dec_no_void IDENTIFIER {} ; %% #include <stdio.h> extern char yytext[]; extern int column; int main() { /* Load classnames from external file */ printf( "Parsing.\n" ); *quad = '\0'; yyparse(); } yyerror(s) char *s; { fflush(stdout); printf("%s\n", s); }