The lexer is generated as a DFA by parse/lexer.py
The parser tables are generated by a set of tools (including Jason Evans' Parsing.py module) from a simplified version of the Python 1.5.2 Grammar.
The DFA engine is now in a separate file, lib/lexer.scm.
Here's the parser so far.
The lexer tokens are fed through a one-token buffer that generates INDENT and DEDENT tokens when necessary. This is done by the top-level 'parse' function.
Following that are the expr datatypes, print functions, and finally the parsing functions themselves.
Here's a typical parsing function:
(define p-while-stmt ;; while_stmt: 'while' test ':' suite ['else' ':' suite] (_ test _ (item:nt _ body) (item:nt _ else)) -> (expr:while (p-expr test) (p-suite body) (p-else else)) x -> (perror "p-while-stmt" x))
Oh, and here's some sample output.
No comments:
Post a Comment