124e6b2e9b
* visitor pattern * merge upstream, regen grammar readme * rename reducer to passes * update comments to properly reflect visitor * fmt and clippy fixes * fix comments Co-authored-by: collin <16715212+collinc97@users.noreply.github.com> |
||
---|---|---|
.. | ||
benches | ||
examples | ||
src | ||
Cargo.toml | ||
README.md |
Leo Parser
This directory contains the code to tokenize, lex and parse Leo files to the Leo AST.
Tokenizer
The tokenizer contains all tokens in Leo. It also decides which tokens are keywords. Meaning that keywords are a subset of tokens. The lexer goes through character by character as bytes, and converts the bytes into the tokens.
Tokens
Bolded ones are also keywords.
Literals
- CommentLine
- CommentBlock
- StringLit
- Ident
- Int
- True
- False
- AddressLit
- CharLit
Symbols
- At
- Not
- And (
&&
) - Ampersand (
&
) - Or
- Eq
- NotEq
- Lt
- LtEq
- Gt
- GtEq
- Add
- Minus
- Mul
- Div
- Exp
- Assign
- AddEq
- MinusEq
- MulEq
- DivEq
- ExpEq
- LeftParen
- RightParen
- LeftSquare
- RightSquare
- LeftCurly
- RightCurly
- Comma
- Dot
- DotDot
- DotDotDot
- Semicolon
- Colon
- DoubleColon
- Question
- Arrow
- Underscore
Types
- U8
- U16
- U32
- U64
- U128
- I8
- I16
- I32
- I64
- I128
- Field
- Group
- Bool
- Address
- Char
- BigSelf
Words
- Input
- LittleSelf
- Import
- As
- Circuit
- Console
- Const
- Else
- For
- Function
- If
- In
- Let
- Return
- Static
- String
Meta
- Eof
Parser
The parser converts the tokens to the Leo AST.
The parser is broken down to different files that correspond to different aspects of the AST:
-
File - Parses the top level nodes in Leo.
-
Types - Parses the type declarations in Leo.
-
Statements - Parses the different kinds of statements.
-
Expressions - Parses the different kinds of expressions.
For more information on those please read the Leo AST README, linked above.
Grammar Relation
All function and token names are as close as possible to the Leo Grammar