BNF for SatchParser.jj

NON-TERMINALS

Read ::= ( clause )* <EOF>
clause ::= ( <CLAUSE_NAME> )? ( body )? "--->" ( head )? "."
body ::= ( atom ( "," atom )* )
head ::= ( atom ( ";" atom )* )
atom ::= ( <FKT_SYMBOL> ( args )? ( <FKT_SYMBOL> term )? )
| ( <VAR> | <INTEGER> ) <FKT_SYMBOL> term
term ::= <VAR>
| compound
| <INTEGER>
compound ::= <FKT_SYMBOL> ( args )?
args ::= "(" term ( "," term )* ")"