/* DJ PARSER */ %code provides { #include "lex.yy.c" /* Function for printing generic syntax-error messages */ void yyerror(const char *str) { printf("Syntax error on line %d at token %s\n",yylineno,yytext); printf("(This version of the compiler exits after finding the first "); printf("syntax error.)\n"); exit(-1); } } %token FINAL CLASS ID EXTENDS MAIN NATTYPE %token NATLITERAL PRINTNAT READNAT PLUS MINUS TIMES EQUALITY GREATER %token ASSERT OR NOT IF ELSE WHILE %token ASSIGN NUL NEW THIS DOT %token SEMICOLON LBRACE RBRACE LPAREN RPAREN %token ENDOFFILE %start pgm %right ASSERT %% pgm : ENDOFFILE { return 0; } ; %% int main(int argc, char **argv) { if(argc!=2) { printf("Usage: dj-parse filename\n"); exit(-1); } yyin = fopen(argv[1],"r"); if(yyin==NULL) { printf("ERROR: could not open file %s\n",argv[1]); exit(-1); } /* parse the input program */ return yyparse(); }