\contentsline {section}{\numberline {1}Introduction}{4} \contentsline {subsection}{\numberline {1.1}General}{4} \contentsline {subsection}{\numberline {1.2}Modules}{5} \contentsline {subsection}{\numberline {1.3}Error Recovery}{5} \contentsline {subsection}{\numberline {1.4}Precedence}{6} \contentsline {subsection}{\numberline {1.5}Notation}{7} \contentsline {section}{\numberline {2}ML-Yacc specifications}{7} \contentsline {subsection}{\numberline {2.1}Lexical Definitions}{8} \contentsline {subsection}{\numberline {2.2}Grammar}{9} \contentsline {subsection}{\numberline {2.3}Required ML-Yacc Declarations}{10} \contentsline {subsection}{\numberline {2.4}Optional ML-Yacc Declarations}{11} \contentsline {subsection}{\numberline {2.5}Declarations for improving error-recovery}{13} \contentsline {subsection}{\numberline {2.6}Rules}{13} \contentsline {section}{\numberline {3}Producing files with ML-Yacc}{14} \contentsline {section}{\numberline {4}The lexical analyzer}{14} \contentsline {section}{\numberline {5}Creating the parser}{15} \contentsline {section}{\numberline {6}Using the parser}{18} \contentsline {subsection}{\numberline {6.1}Parser Structure Signatures}{18} \contentsline {subsection}{\numberline {6.2}Using the parser structure}{19} \contentsline {section}{\numberline {7}Examples}{20} \contentsline {subsection}{\numberline {7.1}Sample Grammar}{21} \contentsline {subsection}{\numberline {7.2}Sample Lexer}{22} \contentsline {subsection}{\numberline {7.3}Top-level code}{23} \contentsline {section}{\numberline {8}Signatures}{24} \contentsline {subsection}{\numberline {8.1}Parsing structure signatures}{24} \contentsline {subsection}{\numberline {8.2}Lexers}{26} \contentsline {subsection}{\numberline {8.3}Signatures for the functor produced by ML-Yacc}{27} \contentsline {subsection}{\numberline {8.4}User parser signatures}{29} \contentsline {section}{\numberline {9}Sharing constraints}{30} \contentsline {section}{\numberline {10}Hints}{31} \contentsline {subsection}{\numberline {10.1}Multiple start symbols}{31} \contentsline {subsection}{\numberline {10.2}Functorizing things further}{32} \contentsline {section}{\numberline {11}Acknowledgements}{33} \contentsline {section}{\numberline {12}Bugs}{33}