%{
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);
}