Parser and AST for the Nit language The parser and the AST are mostly used by all tools. The `parser` is the tool that transform source-files into abstract syntax trees (AST) (see `parser_nodes`) While the AST is a higher abstraction than blob of text, the AST is still limited and represents only *What the programmer says*. Classes of nodes of the AST starts with the letter `A` (for most things, eg. `AClassdef`) or `T` (for token eg. `TId`), there is no real reason except historical that might be solved with a new parser. Variable names of the AST usually starts with `n` (for node). This is also historical but some names with a `a` (to mimic the class name) remains. ## SableCC Most files in this directory are generated from a grammar for sablecc3 ( http://www.sablecc.org ). In order to generate nit parser, you need the alternate SableCC3 generator ( http://www.mare.ee/indrek/sablecc/ ). Moreover, the Nit language description file extends the standard SableCC3 syntax and includes parametric productions to factorize the description of the language. In order to simplify the development of the Nit tools, files produced by the parser generator are committed in the repository; therefore Java and SableCC3 is only required to alter the Nit syntax. ## Contents * fact_parser.pl: Script used to factorize parser.nit * Makefile: Update grammar and generate .nit files * nit.sablecc3xx: Extended sablecc3 grammar (see prescc.pl) * prescc.pl: Program to transform an extended sablecc3 to a standard one * parser_nodes.nit: token and nodes classes hierarchy used by the parser and the lexer * tables.nit, tables_nit.h: Interfaces to access the tables needed by the parser and the lexer * xss/*.xss: alternate SableCC3 template files for the Nit language * org/nitlanguage/gen: A Nit parser in Java, used for tests. use the `make java` rule to build it. The following are generated but present to avoid the need of sablecc3: * lexer.nit: generated lexer * parser.nit: generated parser * parser_prod.nit: All production with generated visit methods * tables_nit.c: The tables needed by the parser and the lexer * parser_abs.nit: Raw generated token and nodes classes used to maintain coherence of parser_nodes.nit Other temp files produced by the Makefile: * .nit.sablecc3: Sablecc3 grammar after processing * .nit.sablecc3.dump: Dump of the grammar to improve sablecc3 multiple runs * .parser-nofact.nit: The parser generated by SableCC3 before factorization by fact_parser.pl