Grammar for Logical Formulas for Java CUP Parser
The following is a LALR(1) grammar with precedence declarations for a subset of Isabelle/HOL formulas.
/* Terminals (tokens returned by the scanner). */ terminal EQUALS, AND, ASSIGN, UNION, ALL, EX, NOT, DOT, LPAREN, RPAREN; terminal LCURLYBRACKET, RCURLYBRACKET, COMMA; terminal String ID; /* Non-terminals */ non terminal boundform; non terminal boundform_list; non terminal formula; non terminal factor; non terminal set_expr; non terminal factor_list; non terminal factor_comma_list; non terminal variable; non terminal varList; /* Precedences */ precedence left AND; precedence left EQUALS; precedence left UNION; precedence left NOT; /* The grammar */ start with boundform; variable ::= ID; boundform ::= ALL varList | EX varList | formula; varList ::= variable DOT boundform | variable varList; formula ::= formula AND formula | formula UNION formula | formula EQUALS formula | NOT formula | factor_list; factor ::= variable | set_expr | LPAREN boundform_list RPAREN; boundform_list ::= boundform | boundform_list COMMA boundform; set_expr ::= LCURLYBRACKET RCURLYBRACKET | LCURLYBRACKET factor_comma_list RCURLYBRACKET | LCURLYBRACKET factor_comma_list DOT boundform RCURLYBRACKET; factor_comma_list ::= factor | factor_comma_list COMMA factor; factor_list ::= factor | factor_list factor | factor_list LPAREN factor ASSIGN factor_list RPAREN;