jwrapper: accept interfaces
[nit.git] / src / parser / README.md
1 Parser and AST for the Nit language
2
3 The parser ans the AST are mostly used by all tools.
4
5 The `parser` is the tool that transform source-files into abstract syntax trees (AST) (see `parser_nodes`)
6 While the AST is a higher abstraction than blob of text, the AST is still limited and represents only *What the programmer says*.
7
8 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.
9
10 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.
11
12 ## SableCC
13
14 Most files in this directory are generated from a grammar for sablecc3 ( http://www.sablecc.org ).
15 In order to generate nit parser, you need the alternate SableCC3 generator ( http://www.mare.ee/indrek/sablecc/ ).
16
17 ## Contents
18
19 * fact_parser.pl: Script used to factorize parser.nit
20 * Makefile: Update grammar and generate .nit files
21 * nit.sablecc3xx: Extended sablecc3 grammar (see prescc.pl)
22 * prescc.pl: Program to transform an extended sablecc3 to a standard one
23 * parser_nodes.nit: token and nodes classes hierarchy used by the parser and the lexer
24 * tables.nit, tables_nit.h: Interfaces to access the tables needed by the parser and the lexer
25 * xss/*.xss: alternate SableCC3 template files for the Nit language
26
27
28 The following are generated but present to avoid the need of sablecc3:
29
30 * lexer.nit: generated lexer
31 * parser.nit: generated parser
32 * parser_prod.nit: All production with generated visit methods
33 * tables_nit.c: The tables needed by the parser and the lexer
34 * parser_abs.nit: Raw generated token and nodes classes used to maintain coherence of parser_nodes.nit
35
36
37 Other temp files produced by the Makefile:
38
39 * .nit.sablecc3: Sablecc3 grammar after processing
40 * .nit.sablecc3.dump: Dump of the grammar to improve sablecc3 multiple runs
41 * .parser-nofact.nit: The parser generated by SableCC3 before factorization by fact_parser.pl
42