leo/parser
Collin Chin b3ae194ef7
Merge pull request #1624 from AleoHQ/bug/1405-reject-one-element-tuples
[Fix] Disallow 1 element tuple types and variables
2022-02-18 18:16:42 -08:00
..
benches cleaned up benchmark code, added massive.leo benchmark 2022-02-08 18:26:24 -07:00
examples parser binary: fail on syntax error 2022-02-16 18:14:53 +01:00
src Merge pull request #1624 from AleoHQ/bug/1405-reject-one-element-tuples 2022-02-18 18:16:42 -08:00
tests/serialization migrate parser 2022-01-21 12:32:09 -08:00
Cargo.toml pull upstream testnet2 resolve conflicts 2022-02-01 13:30:03 -08:00
README.md migrate parser 2022-01-21 12:32:09 -08:00

Leo Parser

Crates.io Authors License

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