This is a sample parser for first-order logic.   The grammar
was contributed by Frank Pfenning.

To construct the parser, first use ML-Yacc on the file "fol.grm" to construct
the files "fol_grm.sml" and "_fol_grm.sml".  This can be done by loading
ML-Yacc and typing ``ParseGen.parseGen "fol.grm"''.  Then construct the
lexer by using ML-Lex on the file fol.lex (``LexGen.lexGen "fol.lex"'').

To load it into Harlequin MLWorks, in the GUI open the project
yaccfol.mlp in the Project Workspace tool and compile and load the
targets using Project > Compile Target Sources and Project > Load
Targets.  This will build the parser structure automatically.

The end result is a structure Parser with four functions.  The
function prog_parse will parse a program in a string.  Then function
query_parse will parse a query in a string.  The function file_parse
will parse a program in a file.  The function top_parse will parse a
query from the standard input.

