SNL (Small Nested Language) is a pascal-like procedural language used for teaching purpose.
It's a suitable language for a toy compiler as it is very simple (and therefore incapable).
Check docs/snl.bnf
and sample snl code in sample
folder to find out more about this language.
- Lexical analysis
- Syntax analysis
- Predict set and table generated on the fly
- Recursive descent parsing
- LL(1) parsing
- Semantic analysis
- Command line interface
- You should have
node
andnpm
(orpnpm
,yarn
) in your computer and know the basic usage. (This project is using pnpm, you can also choose npm or yarn, doesn't matter too much) - Clone this repo and enter the directory
- Run
pnpm install
(ornpm install
) - Run
pnpm build
(ornpm run build
) to build the project pnpm snlc <file> -- <flags>
(ornpm run snlc <file> -- <flags>
)--set
show predict sets--table
show predict table--token
show token list--ast
show AST--ll
use LL(1) parser as parser, the default is recursive descent parser- If the file is in
sample
folder, then you can omit full path and just type file name for convenience - For example,
pnpm snlc 1 -- --ast
will compilesample/1.snl
and print AST