aboutsummaryrefslogtreecommitdiff
path: root/src/grammar.ron
blob: 8e8a71010204624e5e44a558dafc9019d8c5ee8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
Grammar(
    single_byte_tokens: [
        [";", "SEMI"],
        [",", "COMMA"],
        ["(", "L_PAREN"],
        [")", "R_PAREN"],
        ["{", "L_CURLY"],
        ["}", "R_CURLY"],
        ["[", "L_BRACK"],
        ["]", "R_BRACK"],
        ["<", "L_ANGLE"],
        [">", "R_ANGLE"],
        ["@", "AT"],
        ["#", "POUND"],
        ["~", "TILDE"],
        ["?", "QUESTION"],
        ["$", "DOLLAR"],
        ["&", "AMPERSAND"],
        ["|", "PIPE"],
        ["+", "PLUS"],
        ["*", "STAR"],
        ["/", "SLASH"],
        ["^", "CARET"],
        ["%", "PERCENT"],
    ],
    multi_byte_tokens: [
        [".", "DOT"],
        ["..", "DOTDOT"],
        ["...", "DOTDOTDOT"],
        ["..=", "DOTDOTEQ"],
        [":", "COLON"],
        ["::", "COLONCOLON"],
        ["=", "EQ"],
        ["==", "EQEQ"],
        ["=>", "FAT_ARROW"],
        ["!", "EXCL"],
        ["!=", "NEQ"],
        ["-", "MINUS"],
        ["->", "THIN_ARROW"],
    ],
    keywords: [
        "use",
        "fn",
        "struct",
        "enum",
        "trait",
        "impl",
        "true",
        "false",
        "as",
        "extern",
        "crate",
        "mod",
        "pub",
        "self",
        "super",
        "in",
        "where",
        "for",
        "loop",
        "while",
        "if",
        "else",
        "match",
        "const",
        "static",
        "mut",
        "unsafe",
        "type",
        "ref",
        "let",
        "move",
        "return",
    ],
    contextual_keywords: [
        "auto",
        "default",
        "union",
    ],
    tokens: [
        "ERROR",
        "IDENT",
        "UNDERSCORE",
        "WHITESPACE",
        "INT_NUMBER",
        "FLOAT_NUMBER",
        "LIFETIME",
        "CHAR",
        "BYTE",
        "STRING",
        "RAW_STRING",
        "BYTE_STRING",
        "RAW_BYTE_STRING",
        "COMMENT",
        "DOC_COMMENT",
        "SHEBANG",
    ],
    nodes: [
        "FILE",

        "STRUCT_ITEM",
        "ENUM_ITEM",
        "FN_ITEM",
        "EXTERN_CRATE_ITEM",
        "MOD_ITEM",
        "USE_ITEM",
        "STATIC_ITEM",
        "CONST_ITEM",
        "TRAIT_ITEM",
        "IMPL_ITEM",
        "TYPE_ITEM",

        "PAREN_TYPE",
        "TUPLE_TYPE",
        "NEVER_TYPE",
        "PATH_TYPE",
        "POINTER_TYPE",
        "ARRAY_TYPE",
        "SLICE_TYPE",
        "REFERENCE_TYPE",
        "PLACEHOLDER_TYPE",
        "FN_POINTER_TYPE",
        "FOR_TYPE",
        "IMPL_TRAIT_TYPE",

        "REF_PAT",
        "BIND_PAT",
        "PLACEHOLDER_PAT",

        "TUPLE_EXPR",
        "PATH_EXPR",
        "CALL_EXPR",
        "METHOD_CALL_EXPR",
        "FIELD_EXPR",
        "REF_EXPR",
        "DEREF_EXPR",
        "NOT_EXPR",
        "LAMBDA_EXPR",
        "STRUCT_LIT",
        "STRUCT_LIT_FIELD",
        "IF_EXPR",
        "BLOCK_EXPR",
        "RETURN_EXPR",

        "EXTERN_BLOCK_EXPR",
        "ENUM_VARIANT",
        "NAMED_FIELD",
        "POS_FIELD",
        "ATTR",
        "META_ITEM", // not an item actually
        "USE_TREE",
        "PATH",
        "PATH_SEGMENT",
        "LITERAL",
        "ALIAS",
        "VISIBILITY",
        "WHERE_CLAUSE",
        "ABI",
        "NAME",
        "NAME_REF",

        "LET_STMT",
        "EXPR_STMT",

        "TYPE_PARAM_LIST",
        "LIFETIME_PARAM",
        "TYPE_PARAM",
        "TYPE_ARG_LIST",
        "LIFETIME_ARG",
        "TYPE_ARG",
        "ASSOC_TYPE_ARG",

        "PARAM_LIST",
        "PARAM",
        "SELF_PARAM",
        "ARG_LIST",
    ]
)