Simple example recursive-descent parser for expressions.
- exp.sml -- parser
- The lexical analysis function converts a
char list into aSymbol list ; to see this try, e.g.,- use "exp.sml";
- lexical(explode "(1+2)*3-4/5+x");
- The parser takes a
Symbol list and produces aparse tree : Exp, e.g.,- expression(lexical(explode "(1+2)*3-4/5+x"));
- use "exp.sml";
- main.sml -- parse text from a file
- wrapper for the parser, asks for a file name, opens it,
calls the parser, e.g.,
- use "main.sml";
- run "data";
- use "main.sml";
- Note, these expressions include arithmetic (+, -, *, /), relational (=, <>, <=, >=, < >), and logical (and, or, not) operators.
- And there is a syntax (and semantics) for a small programming language [here].