import java_cup.runtime.*;

parser code {:

    public void syntax_error(Symbol cur_token) {
        report_error("Sytax error at line " + (cur_token.left+1) +
            ", column " + cur_token.right, null);
    }

    public void initSymbolTable(int size) {
        symtab = new SymbolTable(size);
    }

    public SymbolTable getSymbolTable() {
        return symtab;
    }

    protected SymbolTable symtab;

:}

terminal BOOLEAN;
terminal ELSE;
terminal IF;
terminal INT;
terminal VOID;
terminal WHILE;
terminal TRUE;
terminal FALSE;
terminal FLOAT;
terminal STRING;
terminal STRUCT;
terminal RETURN;
terminal PRINT;
terminal REF;
terminal LEFT_PAREN; // "("
terminal RT_PAREN;   // ")"
terminal LEFT_BRACE; // "{"
terminal RT_BRACE;   // "}"
terminal SEMI;       // ";"
terminal COMMA;      // ","
terminal LEFT_BRKT;  // "["
terminal RT_BRKT;    // "]"
terminal EQ;         // "="
terminal PLUS;       // "+"
terminal MINUS;      // "-"
terminal TIMES;      // "*"
terminal DIVIDE;     // "/"
terminal LESS;       // "<"
terminal LESS_EQ;    // "<="
terminal GTR;        // ">"
terminal GTR_EQ;     // ">="
terminal EQ_EQ;      // "=="
terminal NOT_EQ;     // "!="
terminal AND;        // "&&"
terminal OR;         // "||"
terminal NOT;        // "!"
terminal DOT;        // "."
terminal UNY_PLUS;   // unary "+"
terminal UNY_MINUS;  // unary "-"
terminal IDENT;      // identifier
terminal INTEGER;    // decimal, hex, or octal integer
terminal FLOATING_PT;// floating point
terminal STRING_LIT; // floating point


/**** Put terminal and rule definitions starting here ****/
