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
nodeandnpm(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>)--setshow predict sets--tableshow predict table--tokenshow token list--astshow AST--lluse LL(1) parser as parser, the default is recursive descent parser- If the file is in
samplefolder, then you can omit full path and just type file name for convenience - For example,
pnpm snlc 1 -- --astwill compilesample/1.snland print AST
