Closed
Description
This issue tracks the work in documenting the grammar.
Since the grammar is very incomplete and I'm willing to complete it, I thought it would be better to do this inside the reference, alongside each item of the language.
Progress:
- Create a script to join the scattered grammar in one place.
- Lexical productions
- Keywords PR Added keywords grammar #97
- Identifiers PR Added identifiers grammar #89
- Comments PR Added grammar of comments #85
- Literals
- Char PR Add grammar for char, string, byte, and raw literals #121
- String PR Add grammar for char, string, byte, and raw literals #121
- Raw string PR Add grammar for char, string, byte, and raw literals #121
- Byte PR Add grammar for char, string, byte, and raw literals #121
- Byte string PR Add grammar for char, string, byte, and raw literals #121
- Raw byte string PR Add grammar for char, string, byte, and raw literals #121
- Integer PR Add integer literal's grammar #108
- Float PR Add float literal's grammar #109
- Bools PR Add boolean literal's grammar #110
- Symbols draft
- Paths draft
- Syntax productions
- Crates PR Added crates grammar #87
- Items
- Visibility PR Added visibility grammar #90
- Modules PR Modules grammar #143
- Extern crate PR Extern crate grammar #144
- Use declaration PR Use declaration grammar #145
- Static item
- Const value
- Functions draft
- Type aliases
- Enums
- Structs
- Unions
- Extern blocks
- Traits draft
- Implementations draft
- Const functions
- Extern functions
- Attributes PR Added attributes grammar #88
- Statements
- Item declarations
-
let
statements - Expression statements
- Expressions draft
- Literal Literal expression grammar #138
- Path
- Tuple
- Struct
- EnumerationVariant
- Block Blocks grammar #136
- Method call
- Field access Field access grammar #158
- Tuple indexing
- Call expression Call expression grammar #134
- Closure Closures grammar #135
- Array expression Array and indexing grammar #133
- Indexing expression Array and indexing grammar #133
- Range expression Range expressions grammar #142
- Operator expression Operator expressions grammar #141
- borrow
- dereference
- error propagation
- negation
- arithmetic and logical
- comparison
- lazy boolean
- typecast
- assignment
- compound assignment
- Grouped expression Operator expressions grammar #141
- Loop expressions Loops grammar #139
- loop
- while
- while let
- for
- break
- continue
- if If and if let grammar #137
- If let If and if let grammar #137
- match
- return Return expression grammar #140
- Patterns draft
- Wildcard
- Reference
- Struct
- TupleStruct
- Tuple
- Slice
- Identifier
- Path
- Literal
- Range
- Box
- Types
- path type
- qualified path type
- tuple type
- array type
- slice type
- reference type
- inferred type
- raw pointer type
- function pointer type
- trait object type
- impl trait type
- never type (divergent functions)
- parenthesized type
- Macros
- Macro definitions
- Macro invocations (and the places they can appear, scattered in other grammar items)