| ... | @@ -170,6 +170,9 @@ | ... | @@ -170,6 +170,9 @@ |
| 170 | background: #a8b9cc; | 170 | background: #a8b9cc; |
| 171 | color: #000; | 171 | color: #000; |
| 172 | } | 172 | } |
| | 173 | figcaption.peg-cap { |
| | 174 | background: #fcdba5; |
| | 175 | } |
| 173 | figcaption.javascript-cap { | 176 | figcaption.javascript-cap { |
| 174 | background: #365d95; | 177 | background: #365d95; |
| 175 | color: #fff; | 178 | color: #fff; |
| ... | @@ -196,6 +199,25 @@ | ... | @@ -196,6 +199,25 @@ |
| 196 | visibility: visible; | 199 | visibility: visible; |
| 197 | } | 200 | } |
| 198 | | 201 | |
| | 202 | pre { |
| | 203 | counter-reset: line; |
| | 204 | } |
| | 205 | pre .line:before { |
| | 206 | counter-increment: line; |
| | 207 | content: counter(line); |
| | 208 | display: inline-block; |
| | 209 | padding-right: 1em; |
| | 210 | width: 2em; |
| | 211 | text-align: right; |
| | 212 | color: #999; |
| | 213 | } |
| | 214 | th pre code { |
| | 215 | background: none; |
| | 216 | } |
| | 217 | th .line:before { |
| | 218 | display: none; |
| | 219 | } |
| | 220 | |
| 199 | @media (prefers-color-scheme: dark) { | 221 | @media (prefers-color-scheme: dark) { |
| 200 | body{ | 222 | body{ |
| 201 | background:#121212; | 223 | background:#121212; |
| ... | @@ -269,6 +291,10 @@ | ... | @@ -269,6 +291,10 @@ |
| 269 | background-color: #b27306; | 291 | background-color: #b27306; |
| 270 | color: #000; | 292 | color: #000; |
| 271 | } | 293 | } |
| | 294 | figcaption.peg-cap { |
| | 295 | background-color: #b27306; |
| | 296 | color: #000; |
| | 297 | } |
| 272 | figcaption.shell-cap { | 298 | figcaption.shell-cap { |
| 273 | background: #2a2a2a; | 299 | background: #2a2a2a; |
| 274 | color: #fff; | 300 | color: #fff; |
| ... | @@ -11844,35 +11870,35 @@ fn readU32Be() u32 {} | ... | @@ -11844,35 +11870,35 @@ fn readU32Be() u32 {} |
| 11844 | {#header_close#} | 11870 | {#header_close#} |
| 11845 | | 11871 | |
| 11846 | {#header_open|Grammar#} | 11872 | {#header_open|Grammar#} |
| 11847 | <pre><code>Root &lt;- skip container_doc_comment? ContainerMembers eof | 11873 | {#syntax_block|peg|grammar.y#}Root <- skip container_doc_comment? ContainerMembers eof |
| 11848 | | 11874 | |
| 11849 | # *** Top level *** | 11875 | # *** Top level *** |
| 11850 | ContainerMembers &lt;- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations) | 11876 | ContainerMembers <- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations) |
| 11851 | | 11877 | |
| 11852 | ContainerDeclarations | 11878 | ContainerDeclarations |
| 11853 | &lt;- TestDecl ContainerDeclarations | 11879 | <- TestDecl ContainerDeclarations |
| 11854 | / TopLevelComptime ContainerDeclarations | 11880 | / TopLevelComptime ContainerDeclarations |
| 11855 | / doc_comment? KEYWORD_pub? TopLevelDecl ContainerDeclarations | 11881 | / doc_comment? KEYWORD_pub? TopLevelDecl ContainerDeclarations |
| 11856 | / | 11882 | / |
| 11857 | | 11883 | |
| 11858 | TestDecl &lt;- doc_comment? KEYWORD_test STRINGLITERALSINGLE? Block | 11884 | TestDecl <- doc_comment? KEYWORD_test STRINGLITERALSINGLE? Block |
| 11859 | | 11885 | |
| 11860 | TopLevelComptime &lt;- doc_comment? KEYWORD_comptime BlockExpr | 11886 | TopLevelComptime <- doc_comment? KEYWORD_comptime BlockExpr |
| 11861 | | 11887 | |
| 11862 | TopLevelDecl | 11888 | TopLevelDecl |
| 11863 | &lt;- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block) | 11889 | <- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block) |
| 11864 | / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl | 11890 | / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl |
| 11865 | / KEYWORD_usingnamespace Expr SEMICOLON | 11891 | / KEYWORD_usingnamespace Expr SEMICOLON |
| 11866 | | 11892 | |
| 11867 | FnProto &lt;- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr | 11893 | FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr |
| 11868 | | 11894 | |
| 11869 | VarDecl &lt;- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? LinkSection? (EQUAL Expr)? SEMICOLON | 11895 | VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? LinkSection? (EQUAL Expr)? SEMICOLON |
| 11870 | | 11896 | |
| 11871 | ContainerField &lt;- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON (KEYWORD_anytype / TypeExpr) ByteAlign?)? (EQUAL Expr)? | 11897 | ContainerField <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON (KEYWORD_anytype / TypeExpr) ByteAlign?)? (EQUAL Expr)? |
| 11872 | | 11898 | |
| 11873 | # *** Block Level *** | 11899 | # *** Block Level *** |
| 11874 | Statement | 11900 | Statement |
| 11875 | &lt;- KEYWORD_comptime? VarDecl | 11901 | <- KEYWORD_comptime? VarDecl |
| 11876 | / KEYWORD_comptime BlockExprStatement | 11902 | / KEYWORD_comptime BlockExprStatement |
| 11877 | / KEYWORD_nosuspend BlockExprStatement | 11903 | / KEYWORD_nosuspend BlockExprStatement |
| 11878 | / KEYWORD_suspend BlockExprStatement | 11904 | / KEYWORD_suspend BlockExprStatement |
| ... | @@ -11884,50 +11910,50 @@ Statement | ... | @@ -11884,50 +11910,50 @@ Statement |
| 11884 | / AssignExpr SEMICOLON | 11910 | / AssignExpr SEMICOLON |
| 11885 | | 11911 | |
| 11886 | IfStatement | 11912 | IfStatement |
| 11887 | &lt;- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )? | 11913 | <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )? |
| 11888 | / IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement ) | 11914 | / IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement ) |
| 11889 | | 11915 | |
| 11890 | LabeledStatement &lt;- BlockLabel? (Block / LoopStatement) | 11916 | LabeledStatement <- BlockLabel? (Block / LoopStatement) |
| 11891 | | 11917 | |
| 11892 | LoopStatement &lt;- KEYWORD_inline? (ForStatement / WhileStatement) | 11918 | LoopStatement <- KEYWORD_inline? (ForStatement / WhileStatement) |
| 11893 | | 11919 | |
| 11894 | ForStatement | 11920 | ForStatement |
| 11895 | &lt;- ForPrefix BlockExpr ( KEYWORD_else Statement )? | 11921 | <- ForPrefix BlockExpr ( KEYWORD_else Statement )? |
| 11896 | / ForPrefix AssignExpr ( SEMICOLON / KEYWORD_else Statement ) | 11922 | / ForPrefix AssignExpr ( SEMICOLON / KEYWORD_else Statement ) |
| 11897 | | 11923 | |
| 11898 | WhileStatement | 11924 | WhileStatement |
| 11899 | &lt;- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )? | 11925 | <- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )? |
| 11900 | / WhilePrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement ) | 11926 | / WhilePrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement ) |
| 11901 | | 11927 | |
| 11902 | BlockExprStatement | 11928 | BlockExprStatement |
| 11903 | &lt;- BlockExpr | 11929 | <- BlockExpr |
| 11904 | / AssignExpr SEMICOLON | 11930 | / AssignExpr SEMICOLON |
| 11905 | | 11931 | |
| 11906 | BlockExpr &lt;- BlockLabel? Block | 11932 | BlockExpr <- BlockLabel? Block |
| 11907 | | 11933 | |
| 11908 | # *** Expression Level *** | 11934 | # *** Expression Level *** |
| 11909 | AssignExpr &lt;- Expr (AssignOp Expr)? | 11935 | AssignExpr <- Expr (AssignOp Expr)? |
| 11910 | | 11936 | |
| 11911 | Expr &lt;- BoolOrExpr | 11937 | Expr <- BoolOrExpr |
| 11912 | | 11938 | |
| 11913 | BoolOrExpr &lt;- BoolAndExpr (KEYWORD_or BoolAndExpr)* | 11939 | BoolOrExpr <- BoolAndExpr (KEYWORD_or BoolAndExpr)* |
| 11914 | | 11940 | |
| 11915 | BoolAndExpr &lt;- CompareExpr (KEYWORD_and CompareExpr)* | 11941 | BoolAndExpr <- CompareExpr (KEYWORD_and CompareExpr)* |
| 11916 | | 11942 | |
| 11917 | CompareExpr &lt;- BitwiseExpr (CompareOp BitwiseExpr)? | 11943 | CompareExpr <- BitwiseExpr (CompareOp BitwiseExpr)? |
| 11918 | | 11944 | |
| 11919 | BitwiseExpr &lt;- BitShiftExpr (BitwiseOp BitShiftExpr)* | 11945 | BitwiseExpr <- BitShiftExpr (BitwiseOp BitShiftExpr)* |
| 11920 | | 11946 | |
| 11921 | BitShiftExpr &lt;- AdditionExpr (BitShiftOp AdditionExpr)* | 11947 | BitShiftExpr <- AdditionExpr (BitShiftOp AdditionExpr)* |
| 11922 | | 11948 | |
| 11923 | AdditionExpr &lt;- MultiplyExpr (AdditionOp MultiplyExpr)* | 11949 | AdditionExpr <- MultiplyExpr (AdditionOp MultiplyExpr)* |
| 11924 | | 11950 | |
| 11925 | MultiplyExpr &lt;- PrefixExpr (MultiplyOp PrefixExpr)* | 11951 | MultiplyExpr <- PrefixExpr (MultiplyOp PrefixExpr)* |
| 11926 | | 11952 | |
| 11927 | PrefixExpr &lt;- PrefixOp* PrimaryExpr | 11953 | PrefixExpr <- PrefixOp* PrimaryExpr |
| 11928 | | 11954 | |
| 11929 | PrimaryExpr | 11955 | PrimaryExpr |
| 11930 | &lt;- AsmExpr | 11956 | <- AsmExpr |
| 11931 | / IfExpr | 11957 | / IfExpr |
| 11932 | / KEYWORD_break BreakLabel? Expr? | 11958 | / KEYWORD_break BreakLabel? Expr? |
| 11933 | / KEYWORD_comptime Expr | 11959 | / KEYWORD_comptime Expr |
| ... | @@ -11939,33 +11965,33 @@ PrimaryExpr | ... | @@ -11939,33 +11965,33 @@ PrimaryExpr |
| 11939 | / Block | 11965 | / Block |
| 11940 | / CurlySuffixExpr | 11966 | / CurlySuffixExpr |
| 11941 | | 11967 | |
| 11942 | IfExpr &lt;- IfPrefix Expr (KEYWORD_else Payload? Expr)? | 11968 | IfExpr <- IfPrefix Expr (KEYWORD_else Payload? Expr)? |
| 11943 | | 11969 | |
| 11944 | Block &lt;- LBRACE Statement* RBRACE | 11970 | Block <- LBRACE Statement* RBRACE |
| 11945 | | 11971 | |
| 11946 | LoopExpr &lt;- KEYWORD_inline? (ForExpr / WhileExpr) | 11972 | LoopExpr <- KEYWORD_inline? (ForExpr / WhileExpr) |
| 11947 | | 11973 | |
| 11948 | ForExpr &lt;- ForPrefix Expr (KEYWORD_else Expr)? | 11974 | ForExpr <- ForPrefix Expr (KEYWORD_else Expr)? |
| 11949 | | 11975 | |
| 11950 | WhileExpr &lt;- WhilePrefix Expr (KEYWORD_else Payload? Expr)? | 11976 | WhileExpr <- WhilePrefix Expr (KEYWORD_else Payload? Expr)? |
| 11951 | | 11977 | |
| 11952 | CurlySuffixExpr &lt;- TypeExpr InitList? | 11978 | CurlySuffixExpr <- TypeExpr InitList? |
| 11953 | | 11979 | |
| 11954 | InitList | 11980 | InitList |
| 11955 | &lt;- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE | 11981 | <- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE |
| 11956 | / LBRACE Expr (COMMA Expr)* COMMA? RBRACE | 11982 | / LBRACE Expr (COMMA Expr)* COMMA? RBRACE |
| 11957 | / LBRACE RBRACE | 11983 | / LBRACE RBRACE |
| 11958 | | 11984 | |
| 11959 | TypeExpr &lt;- PrefixTypeOp* ErrorUnionExpr | 11985 | TypeExpr <- PrefixTypeOp* ErrorUnionExpr |
| 11960 | | 11986 | |
| 11961 | ErrorUnionExpr &lt;- SuffixExpr (EXCLAMATIONMARK TypeExpr)? | 11987 | ErrorUnionExpr <- SuffixExpr (EXCLAMATIONMARK TypeExpr)? |
| 11962 | | 11988 | |
| 11963 | SuffixExpr | 11989 | SuffixExpr |
| 11964 | &lt;- KEYWORD_async PrimaryTypeExpr SuffixOp* FnCallArguments | 11990 | <- KEYWORD_async PrimaryTypeExpr SuffixOp* FnCallArguments |
| 11965 | / PrimaryTypeExpr (SuffixOp / FnCallArguments)* | 11991 | / PrimaryTypeExpr (SuffixOp / FnCallArguments)* |
| 11966 | | 11992 | |
| 11967 | PrimaryTypeExpr | 11993 | PrimaryTypeExpr |
| 11968 | &lt;- BUILTINIDENTIFIER FnCallArguments | 11994 | <- BUILTINIDENTIFIER FnCallArguments |
| 11969 | / CHAR_LITERAL | 11995 | / CHAR_LITERAL |
| 11970 | / ContainerDecl | 11996 | / ContainerDecl |
| 11971 | / DOT IDENTIFIER | 11997 | / DOT IDENTIFIER |
| ... | @@ -11985,94 +12011,93 @@ PrimaryTypeExpr | ... | @@ -11985,94 +12011,93 @@ PrimaryTypeExpr |
| 11985 | / STRINGLITERAL | 12011 | / STRINGLITERAL |
| 11986 | / SwitchExpr | 12012 | / SwitchExpr |
| 11987 | | 12013 | |
| 11988 | ContainerDecl &lt;- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto | 12014 | ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto |
| 11989 | | 12015 | |
| 11990 | ErrorSetDecl &lt;- KEYWORD_error LBRACE IdentifierList RBRACE | 12016 | ErrorSetDecl <- KEYWORD_error LBRACE IdentifierList RBRACE |
| 11991 | | 12017 | |
| 11992 | GroupedExpr &lt;- LPAREN Expr RPAREN | 12018 | GroupedExpr <- LPAREN Expr RPAREN |
| 11993 | | 12019 | |
| 11994 | IfTypeExpr &lt;- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)? | 12020 | IfTypeExpr <- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)? |
| 11995 | | 12021 | |
| 11996 | LabeledTypeExpr | 12022 | LabeledTypeExpr |
| 11997 | &lt;- BlockLabel Block | 12023 | <- BlockLabel Block |
| 11998 | / BlockLabel? LoopTypeExpr | 12024 | / BlockLabel? LoopTypeExpr |
| 11999 | | 12025 | |
| 12000 | LoopTypeExpr &lt;- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr) | 12026 | LoopTypeExpr <- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr) |
| 12001 | | 12027 | |
| 12002 | ForTypeExpr &lt;- ForPrefix TypeExpr (KEYWORD_else TypeExpr)? | 12028 | ForTypeExpr <- ForPrefix TypeExpr (KEYWORD_else TypeExpr)? |
| 12003 | | 12029 | |
| 12004 | WhileTypeExpr &lt;- WhilePrefix TypeExpr (KEYWORD_else Payload? TypeExpr)? | 12030 | WhileTypeExpr <- WhilePrefix TypeExpr (KEYWORD_else Payload? TypeExpr)? |
| 12005 | | 12031 | |
| 12006 | SwitchExpr &lt;- KEYWORD_switch LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE | 12032 | SwitchExpr <- KEYWORD_switch LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE |
| 12007 | | 12033 | |
| 12008 | # *** Assembly *** | 12034 | # *** Assembly *** |
| 12009 | AsmExpr &lt;- KEYWORD_asm KEYWORD_volatile? LPAREN Expr AsmOutput? RPAREN | 12035 | AsmExpr <- KEYWORD_asm KEYWORD_volatile? LPAREN Expr AsmOutput? RPAREN |
| 12010 | | 12036 | |
| 12011 | AsmOutput &lt;- COLON AsmOutputList AsmInput? | 12037 | AsmOutput <- COLON AsmOutputList AsmInput? |
| 12012 | | 12038 | |
| 12013 | AsmOutputItem &lt;- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN (MINUSRARROW TypeExpr / IDENTIFIER) RPAREN | 12039 | AsmOutputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN (MINUSRARROW TypeExpr / IDENTIFIER) RPAREN |
| 12014 | | 12040 | |
| 12015 | AsmInput &lt;- COLON AsmInputList AsmClobbers? | 12041 | AsmInput <- COLON AsmInputList AsmClobbers? |
| 12016 | | 12042 | |
| 12017 | AsmInputItem &lt;- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN Expr RPAREN | 12043 | AsmInputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN Expr RPAREN |
| 12018 | | 12044 | |
| 12019 | AsmClobbers &lt;- COLON StringList | 12045 | AsmClobbers <- COLON StringList |
| 12020 | | 12046 | |
| 12021 | # *** Helper grammar *** | 12047 | # *** Helper grammar *** |
| 12022 | BreakLabel &lt;- COLON IDENTIFIER | 12048 | BreakLabel <- COLON IDENTIFIER |
| 12023 | | 12049 | |
| 12024 | BlockLabel &lt;- IDENTIFIER COLON | 12050 | BlockLabel <- IDENTIFIER COLON |
| 12025 | | 12051 | |
| 12026 | FieldInit &lt;- DOT IDENTIFIER EQUAL Expr | 12052 | FieldInit <- DOT IDENTIFIER EQUAL Expr |
| 12027 | | 12053 | |
| 12028 | WhileContinueExpr &lt;- COLON LPAREN AssignExpr RPAREN | 12054 | WhileContinueExpr <- COLON LPAREN AssignExpr RPAREN |
| 12029 | | 12055 | |
| 12030 | LinkSection &lt;- KEYWORD_linksection LPAREN Expr RPAREN | 12056 | LinkSection <- KEYWORD_linksection LPAREN Expr RPAREN |
| 12031 | | 12057 | |
| 12032 | # Fn specific | 12058 | # Fn specific |
| 12033 | CallConv &lt;- KEYWORD_callconv LPAREN Expr RPAREN | 12059 | CallConv <- KEYWORD_callconv LPAREN Expr RPAREN |
| 12034 | | 12060 | |
| 12035 | ParamDecl | 12061 | ParamDecl |
| 12036 | &lt;- doc_comment? (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType | 12062 | <- doc_comment? (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType |
| 12037 | / DOT3 | 12063 | / DOT3 |
| 12038 | | 12064 | |
| 12039 | ParamType | 12065 | ParamType |
| 12040 | &lt;- KEYWORD_anytype | 12066 | <- KEYWORD_anytype |
| 12041 | / TypeExpr | 12067 | / TypeExpr |
| 12042 | | 12068 | |
| 12043 | # Control flow prefixes | 12069 | # Control flow prefixes |
| 12044 | IfPrefix &lt;- KEYWORD_if LPAREN Expr RPAREN PtrPayload? | 12070 | IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload? |
| 12045 | | 12071 | |
| 12046 | WhilePrefix &lt;- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr? | 12072 | WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr? |
| 12047 | | 12073 | |
| 12048 | ForPrefix &lt;- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload | 12074 | ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload |
| 12049 | | 12075 | |
| 12050 | # Payloads | 12076 | # Payloads |
| 12051 | Payload &lt;- PIPE IDENTIFIER PIPE | 12077 | Payload <- PIPE IDENTIFIER PIPE |
| 12052 | | 12078 | |
| 12053 | PtrPayload &lt;- PIPE ASTERISK? IDENTIFIER PIPE | 12079 | PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE |
| 12054 | | 12080 | |
| 12055 | PtrIndexPayload &lt;- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE | 12081 | PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE |
| 12056 | | 12082 | |
| 12057 | | 12083 | |
| 12058 | # Switch specific | 12084 | # Switch specific |
| 12059 | SwitchProng &lt;- SwitchCase EQUALRARROW PtrPayload? AssignExpr | 12085 | SwitchProng <- SwitchCase EQUALRARROW PtrPayload? AssignExpr |
| 12060 | | 12086 | |
| 12061 | SwitchCase | 12087 | SwitchCase |
| 12062 | &lt;- SwitchItem (COMMA SwitchItem)* COMMA? | 12088 | <- SwitchItem (COMMA SwitchItem)* COMMA? |
| 12063 | / KEYWORD_else | 12089 | / KEYWORD_else |
| 12064 | | 12090 | |
| 12065 | SwitchItem &lt;- Expr (DOT3 Expr)? | 12091 | SwitchItem <- Expr (DOT3 Expr)? |
| 12066 | | 12092 | |
| 12067 | # Operators | 12093 | # Operators |
| 12068 | AssignOp | 12094 | AssignOp |
| 12069 | &lt;- ASTERISKEQUAL | 12095 | <- ASTERISKEQUAL |
| 12070 | / SLASHEQUAL | 12096 | / SLASHEQUAL |
| 12071 | / PERCENTEQUAL | 12097 | / PERCENTEQUAL |
| 12072 | / PLUSEQUAL | 12098 | / PLUSEQUAL |
| 12073 | / MINUSEQUAL | 12099 | / MINUSEQUAL |
| 12074 | / LARROW2EQUAL | 12100 | / LARROW2EQUAL |
| 12075 | / LARROW2PIPEEQUAL | | |
| 12076 | / RARROW2EQUAL | 12101 | / RARROW2EQUAL |
| 12077 | / AMPERSANDEQUAL | 12102 | / AMPERSANDEQUAL |
| 12078 | / CARETEQUAL | 12103 | / CARETEQUAL |
| ... | @@ -12083,7 +12108,7 @@ AssignOp | ... | @@ -12083,7 +12108,7 @@ AssignOp |
| 12083 | / EQUAL | 12108 | / EQUAL |
| 12084 | | 12109 | |
| 12085 | CompareOp | 12110 | CompareOp |
| 12086 | &lt;- EQUALEQUAL | 12111 | <- EQUALEQUAL |
| 12087 | / EXCLAMATIONMARKEQUAL | 12112 | / EXCLAMATIONMARKEQUAL |
| 12088 | / LARROW | 12113 | / LARROW |
| 12089 | / RARROW | 12114 | / RARROW |
| ... | @@ -12091,36 +12116,33 @@ CompareOp | ... | @@ -12091,36 +12116,33 @@ CompareOp |
| 12091 | / RARROWEQUAL | 12116 | / RARROWEQUAL |
| 12092 | | 12117 | |
| 12093 | BitwiseOp | 12118 | BitwiseOp |
| 12094 | &lt;- AMPERSAND | 12119 | <- AMPERSAND |
| 12095 | / CARET | 12120 | / CARET |
| 12096 | / PIPE | 12121 | / PIPE |
| 12097 | / KEYWORD_orelse | 12122 | / KEYWORD_orelse |
| 12098 | / KEYWORD_catch Payload? | 12123 | / KEYWORD_catch Payload? |
| 12099 | | 12124 | |
| 12100 | BitShiftOp | 12125 | BitShiftOp |
| 12101 | &lt;- LARROW2 | 12126 | <- LARROW2 |
| 12102 | / RARROW2 | 12127 | / RARROW2 |
| 12103 | | 12128 | |
| 12104 | AdditionOp | 12129 | AdditionOp |
| 12105 | &lt;- PLUS | 12130 | <- PLUS |
| 12106 | / MINUS | 12131 | / MINUS |
| 12107 | / PLUS2 | 12132 | / PLUS2 |
| 12108 | / PLUSPERCENT | 12133 | / PLUSPERCENT |
| 12109 | / MINUSPERCENT | 12134 | / MINUSPERCENT |
| 12110 | / PLUSPIPE | | |
| 12111 | / MINUSPIPE | | |
| 12112 | | 12135 | |
| 12113 | MultiplyOp | 12136 | MultiplyOp |
| 12114 | &lt;- PIPE2 | 12137 | <- PIPE2 |
| 12115 | / ASTERISK | 12138 | / ASTERISK |
| 12116 | / SLASH | 12139 | / SLASH |
| 12117 | / PERCENT | 12140 | / PERCENT |
| 12118 | / ASTERISK2 | 12141 | / ASTERISK2 |
| 12119 | / ASTERISKPERCENT | 12142 | / ASTERISKPERCENT |
| 12120 | / ASTERISKPIPE | | |
| 12121 | | 12143 | |
| 12122 | PrefixOp | 12144 | PrefixOp |
| 12123 | &lt;- EXCLAMATIONMARK | 12145 | <- EXCLAMATIONMARK |
| 12124 | / MINUS | 12146 | / MINUS |
| 12125 | / TILDE | 12147 | / TILDE |
| 12126 | / MINUSPERCENT | 12148 | / MINUSPERCENT |
| ... | @@ -12129,86 +12151,86 @@ PrefixOp | ... | @@ -12129,86 +12151,86 @@ PrefixOp |
| 12129 | / KEYWORD_await | 12151 | / KEYWORD_await |
| 12130 | | 12152 | |
| 12131 | PrefixTypeOp | 12153 | PrefixTypeOp |
| 12132 | &lt;- QUESTIONMARK | 12154 | <- QUESTIONMARK |
| 12133 | / KEYWORD_anyframe MINUSRARROW | 12155 | / KEYWORD_anyframe MINUSRARROW |
| 12134 | / SliceTypeStart (ByteAlign / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)* | 12156 | / SliceTypeStart (ByteAlign / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)* |
| 12135 | / PtrTypeStart (KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)* | 12157 | / PtrTypeStart (KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)* |
| 12136 | / ArrayTypeStart | 12158 | / ArrayTypeStart |
| 12137 | | 12159 | |
| 12138 | SuffixOp | 12160 | SuffixOp |
| 12139 | &lt;- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET | 12161 | <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET |
| 12140 | / DOT IDENTIFIER | 12162 | / DOT IDENTIFIER |
| 12141 | / DOTASTERISK | 12163 | / DOTASTERISK |
| 12142 | / DOTQUESTIONMARK | 12164 | / DOTQUESTIONMARK |
| 12143 | | 12165 | |
| 12144 | FnCallArguments &lt;- LPAREN ExprList RPAREN | 12166 | FnCallArguments <- LPAREN ExprList RPAREN |
| 12145 | | 12167 | |
| 12146 | # Ptr specific | 12168 | # Ptr specific |
| 12147 | SliceTypeStart &lt;- LBRACKET (COLON Expr)? RBRACKET | 12169 | SliceTypeStart <- LBRACKET (COLON Expr)? RBRACKET |
| 12148 | | 12170 | |
| 12149 | PtrTypeStart | 12171 | PtrTypeStart |
| 12150 | &lt;- ASTERISK | 12172 | <- ASTERISK |
| 12151 | / ASTERISK2 | 12173 | / ASTERISK2 |
| 12152 | / LBRACKET ASTERISK (LETTERC / COLON Expr)? RBRACKET | 12174 | / LBRACKET ASTERISK (LETTERC / COLON Expr)? RBRACKET |
| 12153 | | 12175 | |
| 12154 | ArrayTypeStart &lt;- LBRACKET Expr (COLON Expr)? RBRACKET | 12176 | ArrayTypeStart <- LBRACKET Expr (COLON Expr)? RBRACKET |
| 12155 | | 12177 | |
| 12156 | # ContainerDecl specific | 12178 | # ContainerDecl specific |
| 12157 | ContainerDeclAuto &lt;- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE | 12179 | ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE |
| 12158 | | 12180 | |
| 12159 | ContainerDeclType | 12181 | ContainerDeclType |
| 12160 | &lt;- KEYWORD_struct | 12182 | <- KEYWORD_struct |
| 12161 | / KEYWORD_opaque | 12183 | / KEYWORD_opaque |
| 12162 | / KEYWORD_enum (LPAREN Expr RPAREN)? | 12184 | / KEYWORD_enum (LPAREN Expr RPAREN)? |
| 12163 | / KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)? | 12185 | / KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)? |
| 12164 | | 12186 | |
| 12165 | # Alignment | 12187 | # Alignment |
| 12166 | ByteAlign &lt;- KEYWORD_align LPAREN Expr RPAREN | 12188 | ByteAlign <- KEYWORD_align LPAREN Expr RPAREN |
| 12167 | | 12189 | |
| 12168 | # Lists | 12190 | # Lists |
| 12169 | IdentifierList &lt;- (doc_comment? IDENTIFIER COMMA)* (doc_comment? IDENTIFIER)? | 12191 | IdentifierList <- (doc_comment? IDENTIFIER COMMA)* (doc_comment? IDENTIFIER)? |
| 12170 | | 12192 | |
| 12171 | SwitchProngList &lt;- (SwitchProng COMMA)* SwitchProng? | 12193 | SwitchProngList <- (SwitchProng COMMA)* SwitchProng? |
| 12172 | | 12194 | |
| 12173 | AsmOutputList &lt;- (AsmOutputItem COMMA)* AsmOutputItem? | 12195 | AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem? |
| 12174 | | 12196 | |
| 12175 | AsmInputList &lt;- (AsmInputItem COMMA)* AsmInputItem? | 12197 | AsmInputList <- (AsmInputItem COMMA)* AsmInputItem? |
| 12176 | | 12198 | |
| 12177 | StringList &lt;- (STRINGLITERAL COMMA)* STRINGLITERAL? | 12199 | StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL? |
| 12178 | | 12200 | |
| 12179 | ParamDeclList &lt;- (ParamDecl COMMA)* ParamDecl? | 12201 | ParamDeclList <- (ParamDecl COMMA)* ParamDecl? |
| 12180 | | 12202 | |
| 12181 | ExprList &lt;- (Expr COMMA)* Expr? | 12203 | ExprList <- (Expr COMMA)* Expr? |
| 12182 | | 12204 | |
| 12183 | # *** Tokens *** | 12205 | # *** Tokens *** |
| 12184 | eof &lt;- !. | 12206 | eof <- !. |
| 12185 | bin &lt;- [01] | 12207 | bin <- [01] |
| 12186 | bin_ &lt;- '_'? bin | 12208 | bin_ <- '_'? bin |
| 12187 | oct &lt;- [0-7] | 12209 | oct <- [0-7] |
| 12188 | oct_ &lt;- '_'? oct | 12210 | oct_ <- '_'? oct |
| 12189 | hex &lt;- [0-9a-fA-F] | 12211 | hex <- [0-9a-fA-F] |
| 12190 | hex_ &lt;- '_'? hex | 12212 | hex_ <- '_'? hex |
| 12191 | dec &lt;- [0-9] | 12213 | dec <- [0-9] |
| 12192 | dec_ &lt;- '_'? dec | 12214 | dec_ <- '_'? dec |
| 12193 | | 12215 | |
| 12194 | bin_int &lt;- bin bin_* | 12216 | bin_int <- bin bin_* |
| 12195 | oct_int &lt;- oct oct_* | 12217 | oct_int <- oct oct_* |
| 12196 | dec_int &lt;- dec dec_* | 12218 | dec_int <- dec dec_* |
| 12197 | hex_int &lt;- hex hex_* | 12219 | hex_int <- hex hex_* |
| 12198 | | 12220 | |
| 12199 | ox80_oxBF &lt;- [\200-\277] | 12221 | ox80_oxBF <- [\200-\277] |
| 12200 | oxF4 &lt;- '\364' | 12222 | oxF4 <- '\364' |
| 12201 | ox80_ox8F &lt;- [\200-\217] | 12223 | ox80_ox8F <- [\200-\217] |
| 12202 | oxF1_oxF3 &lt;- [\361-\363] | 12224 | oxF1_oxF3 <- [\361-\363] |
| 12203 | oxF0 &lt;- '\360' | 12225 | oxF0 <- '\360' |
| 12204 | ox90_0xBF &lt;- [\220-\277] | 12226 | ox90_0xBF <- [\220-\277] |
| 12205 | oxEE_oxEF &lt;- [\356-\357] | 12227 | oxEE_oxEF <- [\356-\357] |
| 12206 | oxED &lt;- '\355' | 12228 | oxED <- '\355' |
| 12207 | ox80_ox9F &lt;- [\200-\237] | 12229 | ox80_ox9F <- [\200-\237] |
| 12208 | oxE1_oxEC &lt;- [\341-\354] | 12230 | oxE1_oxEC <- [\341-\354] |
| 12209 | oxE0 &lt;- '\340' | 12231 | oxE0 <- '\340' |
| 12210 | oxA0_oxBF &lt;- [\240-\277] | 12232 | oxA0_oxBF <- [\240-\277] |
| 12211 | oxC2_oxDF &lt;- [\302-\337] | 12233 | oxC2_oxDF <- [\302-\337] |
| 12212 | | 12234 | |
| 12213 | # From https://lemire.me/blog/2018/05/09/how-quickly-can-you-check-that-a-string-is-valid-unicode-utf-8/ | 12235 | # From https://lemire.me/blog/2018/05/09/how-quickly-can-you-check-that-a-string-is-valid-unicode-utf-8/ |
| 12214 | # First Byte Second Byte Third Byte Fourth Byte | 12236 | # First Byte Second Byte Third Byte Fourth Byte |
| ... | @@ -12222,7 +12244,7 @@ oxC2_oxDF &lt;- [\302-\337] | ... | @@ -12222,7 +12244,7 @@ oxC2_oxDF &lt;- [\302-\337] |
| 12222 | # [0xF1,0xF3] [0x80,0xBF] [0x80,0xBF] [0x80,0xBF] | 12244 | # [0xF1,0xF3] [0x80,0xBF] [0x80,0xBF] [0x80,0xBF] |
| 12223 | # 0xF4 [0x80,0x8F] [0x80,0xBF] [0x80,0xBF] | 12245 | # 0xF4 [0x80,0x8F] [0x80,0xBF] [0x80,0xBF] |
| 12224 | | 12246 | |
| 12225 | mb_utf8_literal &lt;- | 12247 | mb_utf8_literal <- |
| 12226 | oxF4 ox80_ox8F ox80_oxBF ox80_oxBF | 12248 | oxF4 ox80_ox8F ox80_oxBF ox80_oxBF |
| 12227 | / oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF | 12249 | / oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF |
| 12228 | / oxF0 ox90_0xBF ox80_oxBF ox80_oxBF | 12250 | / oxF0 ox90_0xBF ox80_oxBF ox80_oxBF |
| ... | @@ -12232,164 +12254,156 @@ mb_utf8_literal &lt;- | ... | @@ -12232,164 +12254,156 @@ mb_utf8_literal &lt;- |
| 12232 | / oxE0 oxA0_oxBF ox80_oxBF | 12254 | / oxE0 oxA0_oxBF ox80_oxBF |
| 12233 | / oxC2_oxDF ox80_oxBF | 12255 | / oxC2_oxDF ox80_oxBF |
| 12234 | | 12256 | |
| 12235 | ascii_char_not_nl_slash_squote &lt;- [\000-\011\013-\046-\050-\133\135-\177] | 12257 | ascii_char_not_nl_slash_squote <- [\000-\011\013-\046-\050-\133\135-\177] |
| 12236 | | 12258 | |
| 12237 | char_escape | 12259 | char_escape |
| 12238 | &lt;- &quot;\\x&quot; hex hex | 12260 | <- "\\x" hex hex |
| 12239 | / &quot;\\u{&quot; hex+ &quot;}&quot; | 12261 | / "\\u{" hex+ "}" |
| 12240 | / &quot;\\&quot; [nr\\t'&quot;] | 12262 | / "\\" [nr\\t'"] |
| 12241 | char_char | 12263 | char_char |
| 12242 | &lt;- mb_utf8_literal | 12264 | <- mb_utf8_literal |
| 12243 | / char_escape | 12265 | / char_escape |
| 12244 | / ascii_char_not_nl_slash_squote | 12266 | / ascii_char_not_nl_slash_squote |
| 12245 | | 12267 | |
| 12246 | string_char | 12268 | string_char |
| 12247 | &lt;- char_escape | 12269 | <- char_escape |
| 12248 | / [^\\&quot;\n] | 12270 | / [^\\"\n] |
| 12249 | | 12271 | |
| 12250 | container_doc_comment &lt;- ('//!' [^\n]* [ \n]*)+ | 12272 | container_doc_comment <- ('//!' [^\n]* [ \n]*)+ |
| 12251 | doc_comment &lt;- ('///' [^\n]* [ \n]*)+ | 12273 | doc_comment <- ('///' [^\n]* [ \n]*)+ |
| 12252 | line_comment &lt;- '//' ![!/][^\n]* / '////' [^\n]* | 12274 | line_comment <- '//' ![!/][^\n]* / '////' [^\n]* |
| 12253 | line_string &lt;- (&quot;\\\\&quot; [^\n]* [ \n]*)+ | 12275 | line_string <- ("\\\\" [^\n]* [ \n]*)+ |
| 12254 | skip &lt;- ([ \n] / line_comment)* | 12276 | skip <- ([ \n] / line_comment)* |
| 12255 | | 12277 | |
| 12256 | CHAR_LITERAL &lt;- &quot;'&quot; char_char &quot;'&quot; skip | 12278 | CHAR_LITERAL <- "'" char_char "'" skip |
| 12257 | FLOAT | 12279 | FLOAT |
| 12258 | &lt;- &quot;0x&quot; hex_int &quot;.&quot; hex_int ([pP] [-+]? dec_int)? skip | 12280 | <- "0x" hex_int "." hex_int ([pP] [-+]? dec_int)? skip |
| 12259 | / dec_int &quot;.&quot; dec_int ([eE] [-+]? dec_int)? skip | 12281 | / dec_int "." dec_int ([eE] [-+]? dec_int)? skip |
| 12260 | / &quot;0x&quot; hex_int &quot;.&quot;? [pP] [-+]? dec_int skip | 12282 | / "0x" hex_int [pP] [-+]? dec_int skip |
| 12261 | / dec_int &quot;.&quot;? [eE] [-+]? dec_int skip | 12283 | / dec_int [eE] [-+]? dec_int skip |
| 12262 | INTEGER | 12284 | INTEGER |
| 12263 | &lt;- &quot;0b&quot; bin_int skip | 12285 | <- "0b" bin_int skip |
| 12264 | / &quot;0o&quot; oct_int skip | 12286 | / "0o" oct_int skip |
| 12265 | / &quot;0x&quot; hex_int skip | 12287 | / "0x" hex_int skip |
| 12266 | / dec_int skip | 12288 | / dec_int skip |
| 12267 | STRINGLITERALSINGLE &lt;- &quot;\&quot;&quot; string_char* &quot;\&quot;&quot; skip | 12289 | STRINGLITERALSINGLE <- "\"" string_char* "\"" skip |
| 12268 | STRINGLITERAL | 12290 | STRINGLITERAL |
| 12269 | &lt;- STRINGLITERALSINGLE | 12291 | <- STRINGLITERALSINGLE |
| 12270 | / (line_string skip)+ | 12292 | / (line_string skip)+ |
| 12271 | IDENTIFIER | 12293 | IDENTIFIER |
| 12272 | &lt;- !keyword [A-Za-z_] [A-Za-z0-9_]* skip | 12294 | <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip |
| 12273 | / &quot;@\&quot;&quot; string_char* &quot;\&quot;&quot; skip | 12295 | / "@\"" string_char* "\"" skip |
| 12274 | BUILTINIDENTIFIER &lt;- &quot;@&quot;[A-Za-z_][A-Za-z0-9_]* skip | 12296 | BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip |
| 12275 | | 12297 | |
| 12276 | | 12298 | |
| 12277 | AMPERSAND &lt;- '&amp;' ![=] skip | 12299 | AMPERSAND <- '&' ![=] skip |
| 12278 | AMPERSANDEQUAL &lt;- '&amp;=' skip | 12300 | AMPERSANDEQUAL <- '&=' skip |
| 12279 | ASTERISK &lt;- '*' ![*%=] skip | 12301 | ASTERISK <- '*' ![*%=] skip |
| 12280 | ASTERISK2 &lt;- '**' skip | 12302 | ASTERISK2 <- '**' skip |
| 12281 | ASTERISKEQUAL &lt;- '*=' skip | 12303 | ASTERISKEQUAL <- '*=' skip |
| 12282 | ASTERISKPERCENT &lt;- '*%' ![=] skip | 12304 | ASTERISKPERCENT <- '*%' ![=] skip |
| 12283 | ASTERISKPERCENTEQUAL &lt;- '*%=' skip | 12305 | ASTERISKPERCENTEQUAL <- '*%=' skip |
| 12284 | ASTERISKPIPE &lt;- '*|' ![=] skip | 12306 | CARET <- '^' ![=] skip |
| 12285 | ASTERISKPIPEEQUAL &lt;- '*|=' skip | 12307 | CARETEQUAL <- '^=' skip |
| 12286 | CARET &lt;- '^' ![=] skip | 12308 | COLON <- ':' skip |
| 12287 | CARETEQUAL &lt;- '^=' skip | 12309 | COMMA <- ',' skip |
| 12288 | COLON &lt;- ':' skip | 12310 | DOT <- '.' ![*.?] skip |
| 12289 | COMMA &lt;- ',' skip | 12311 | DOT2 <- '..' ![.] skip |
| 12290 | DOT &lt;- '.' ![*.?] skip | 12312 | DOT3 <- '...' skip |
| 12291 | DOT2 &lt;- '..' ![.] skip | 12313 | DOTASTERISK <- '.*' skip |
| 12292 | DOT3 &lt;- '...' skip | 12314 | DOTQUESTIONMARK <- '.?' skip |
| 12293 | DOTASTERISK &lt;- '.*' skip | 12315 | EQUAL <- '=' ![>=] skip |
| 12294 | DOTQUESTIONMARK &lt;- '.?' skip | 12316 | EQUALEQUAL <- '==' skip |
| 12295 | EQUAL &lt;- '=' ![&gt;=] skip | 12317 | EQUALRARROW <- '=>' skip |
| 12296 | EQUALEQUAL &lt;- '==' skip | 12318 | EXCLAMATIONMARK <- '!' ![=] skip |
| 12297 | EQUALRARROW &lt;- '=&gt;' skip | 12319 | EXCLAMATIONMARKEQUAL <- '!=' skip |
| 12298 | EXCLAMATIONMARK &lt;- '!' ![=] skip | 12320 | LARROW <- '<' ![<=] skip |
| 12299 | EXCLAMATIONMARKEQUAL &lt;- '!=' skip | 12321 | LARROW2 <- '<<' ![=] skip |
| 12300 | LARROW &lt;- '&lt;' ![&lt;=] skip | 12322 | LARROW2EQUAL <- '<<=' skip |
| 12301 | LARROW2 &lt;- '&lt;&lt;' ![=] skip | 12323 | LARROWEQUAL <- '<=' skip |
| 12302 | LARROW2PIPE &lt;- '&lt;&lt;|' ![=] skip | 12324 | LBRACE <- '{' skip |
| 12303 | LARROW2PIPEEQUAL &lt;- '&lt;&lt;|=' ![=] skip | 12325 | LBRACKET <- '[' skip |
| 12304 | LARROW2EQUAL &lt;- '&lt;&lt;=' skip | 12326 | LPAREN <- '(' skip |
| 12305 | LARROWEQUAL &lt;- '&lt;=' skip | 12327 | MINUS <- '-' ![%=>] skip |
| 12306 | LBRACE &lt;- '{' skip | 12328 | MINUSEQUAL <- '-=' skip |
| 12307 | LBRACKET &lt;- '[' skip | 12329 | MINUSPERCENT <- '-%' ![=] skip |
| 12308 | LPAREN &lt;- '(' skip | 12330 | MINUSPERCENTEQUAL <- '-%=' skip |
| 12309 | MINUS &lt;- '-' ![%=&gt;] skip | 12331 | MINUSRARROW <- '->' skip |
| 12310 | MINUSEQUAL &lt;- '-=' skip | 12332 | PERCENT <- '%' ![=] skip |
| 12311 | MINUSPERCENT &lt;- '-%' ![=] skip | 12333 | PERCENTEQUAL <- '%=' skip |
| 12312 | MINUSPERCENTEQUAL &lt;- '-%=' skip | 12334 | PIPE <- '|' ![|=] skip |
| 12313 | MINUSPIPE &lt;- '-|' ![=] skip | 12335 | PIPE2 <- '||' skip |
| 12314 | MINUSPIPEEQUAL &lt;- '-|=' skip | 12336 | PIPEEQUAL <- '|=' skip |
| 12315 | MINUSRARROW &lt;- '-&gt;' skip | 12337 | PLUS <- '+' ![%+=] skip |
| 12316 | PERCENT &lt;- '%' ![=] skip | 12338 | PLUS2 <- '++' skip |
| 12317 | PERCENTEQUAL &lt;- '%=' skip | 12339 | PLUSEQUAL <- '+=' skip |
| 12318 | PIPE &lt;- '|' ![|=] skip | 12340 | PLUSPERCENT <- '+%' ![=] skip |
| 12319 | PIPE2 &lt;- '||' skip | 12341 | PLUSPERCENTEQUAL <- '+%=' skip |
| 12320 | PIPEEQUAL &lt;- '|=' skip | 12342 | LETTERC <- 'c' skip |
| 12321 | PLUS &lt;- '+' ![%+=] skip | 12343 | QUESTIONMARK <- '?' skip |
| 12322 | PLUS2 &lt;- '++' skip | 12344 | RARROW <- '>' ![>=] skip |
| 12323 | PLUSEQUAL &lt;- '+=' skip | 12345 | RARROW2 <- '>>' ![=] skip |
| 12324 | PLUSPERCENT &lt;- '+%' ![=] skip | 12346 | RARROW2EQUAL <- '>>=' skip |
| 12325 | PLUSPERCENTEQUAL &lt;- '+%=' skip | 12347 | RARROWEQUAL <- '>=' skip |
| 12326 | PLUSPIPE &lt;- '+|' ![=] skip | 12348 | RBRACE <- '}' skip |
| 12327 | PLUSPIPEEQUAL &lt;- '+|=' skip | 12349 | RBRACKET <- ']' skip |
| 12328 | LETTERC &lt;- 'c' skip | 12350 | RPAREN <- ')' skip |
| 12329 | QUESTIONMARK &lt;- '?' skip | 12351 | SEMICOLON <- ';' skip |
| 12330 | RARROW &lt;- '&gt;' ![&gt;=] skip | 12352 | SLASH <- '/' ![=] skip |
| 12331 | RARROW2 &lt;- '&gt;&gt;' ![=] skip | 12353 | SLASHEQUAL <- '/=' skip |
| 12332 | RARROW2EQUAL &lt;- '&gt;&gt;=' skip | 12354 | TILDE <- '~' skip |
| 12333 | RARROWEQUAL &lt;- '&gt;=' skip | 12355 | |
| 12334 | RBRACE &lt;- '}' skip | 12356 | end_of_word <- ![a-zA-Z0-9_] skip |
| 12335 | RBRACKET &lt;- ']' skip | 12357 | KEYWORD_align <- 'align' end_of_word |
| 12336 | RPAREN &lt;- ')' skip | 12358 | KEYWORD_allowzero <- 'allowzero' end_of_word |
| 12337 | SEMICOLON &lt;- ';' skip | 12359 | KEYWORD_and <- 'and' end_of_word |
| 12338 | SLASH &lt;- '/' ![=] skip | 12360 | KEYWORD_anyframe <- 'anyframe' end_of_word |
| 12339 | SLASHEQUAL &lt;- '/=' skip | 12361 | KEYWORD_anytype <- 'anytype' end_of_word |
| 12340 | TILDE &lt;- '~' skip | 12362 | KEYWORD_asm <- 'asm' end_of_word |
| 12341 | | 12363 | KEYWORD_async <- 'async' end_of_word |
| 12342 | end_of_word &lt;- ![a-zA-Z0-9_] skip | 12364 | KEYWORD_await <- 'await' end_of_word |
| 12343 | KEYWORD_align &lt;- 'align' end_of_word | 12365 | KEYWORD_break <- 'break' end_of_word |
| 12344 | KEYWORD_allowzero &lt;- 'allowzero' end_of_word | 12366 | KEYWORD_callconv <- 'callconv' end_of_word |
| 12345 | KEYWORD_and &lt;- 'and' end_of_word | 12367 | KEYWORD_catch <- 'catch' end_of_word |
| 12346 | KEYWORD_anyframe &lt;- 'anyframe' end_of_word | 12368 | KEYWORD_comptime <- 'comptime' end_of_word |
| 12347 | KEYWORD_anytype &lt;- 'anytype' end_of_word | 12369 | KEYWORD_const <- 'const' end_of_word |
| 12348 | KEYWORD_asm &lt;- 'asm' end_of_word | 12370 | KEYWORD_continue <- 'continue' end_of_word |
| 12349 | KEYWORD_async &lt;- 'async' end_of_word | 12371 | KEYWORD_defer <- 'defer' end_of_word |
| 12350 | KEYWORD_await &lt;- 'await' end_of_word | 12372 | KEYWORD_else <- 'else' end_of_word |
| 12351 | KEYWORD_break &lt;- 'break' end_of_word | 12373 | KEYWORD_enum <- 'enum' end_of_word |
| 12352 | KEYWORD_callconv &lt;- 'callconv' end_of_word | 12374 | KEYWORD_errdefer <- 'errdefer' end_of_word |
| 12353 | KEYWORD_catch &lt;- 'catch' end_of_word | 12375 | KEYWORD_error <- 'error' end_of_word |
| 12354 | KEYWORD_comptime &lt;- 'comptime' end_of_word | 12376 | KEYWORD_export <- 'export' end_of_word |
| 12355 | KEYWORD_const &lt;- 'const' end_of_word | 12377 | KEYWORD_extern <- 'extern' end_of_word |
| 12356 | KEYWORD_continue &lt;- 'continue' end_of_word | 12378 | KEYWORD_fn <- 'fn' end_of_word |
| 12357 | KEYWORD_defer &lt;- 'defer' end_of_word | 12379 | KEYWORD_for <- 'for' end_of_word |
| 12358 | KEYWORD_else &lt;- 'else' end_of_word | 12380 | KEYWORD_if <- 'if' end_of_word |
| 12359 | KEYWORD_enum &lt;- 'enum' end_of_word | 12381 | KEYWORD_inline <- 'inline' end_of_word |
| 12360 | KEYWORD_errdefer &lt;- 'errdefer' end_of_word | 12382 | KEYWORD_noalias <- 'noalias' end_of_word |
| 12361 | KEYWORD_error &lt;- 'error' end_of_word | 12383 | KEYWORD_nosuspend <- 'nosuspend' end_of_word |
| 12362 | KEYWORD_export &lt;- 'export' end_of_word | 12384 | KEYWORD_noinline <- 'noinline' end_of_word |
| 12363 | KEYWORD_extern &lt;- 'extern' end_of_word | 12385 | KEYWORD_opaque <- 'opaque' end_of_word |
| 12364 | KEYWORD_fn &lt;- 'fn' end_of_word | 12386 | KEYWORD_or <- 'or' end_of_word |
| 12365 | KEYWORD_for &lt;- 'for' end_of_word | 12387 | KEYWORD_orelse <- 'orelse' end_of_word |
| 12366 | KEYWORD_if &lt;- 'if' end_of_word | 12388 | KEYWORD_packed <- 'packed' end_of_word |
| 12367 | KEYWORD_inline &lt;- 'inline' end_of_word | 12389 | KEYWORD_pub <- 'pub' end_of_word |
| 12368 | KEYWORD_noalias &lt;- 'noalias' end_of_word | 12390 | KEYWORD_resume <- 'resume' end_of_word |
| 12369 | KEYWORD_nosuspend &lt;- 'nosuspend' end_of_word | 12391 | KEYWORD_return <- 'return' end_of_word |
| 12370 | KEYWORD_noinline &lt;- 'noinline' end_of_word | 12392 | KEYWORD_linksection <- 'linksection' end_of_word |
| 12371 | KEYWORD_opaque &lt;- 'opaque' end_of_word | 12393 | KEYWORD_struct <- 'struct' end_of_word |
| 12372 | KEYWORD_or &lt;- 'or' end_of_word | 12394 | KEYWORD_suspend <- 'suspend' end_of_word |
| 12373 | KEYWORD_orelse &lt;- 'orelse' end_of_word | 12395 | KEYWORD_switch <- 'switch' end_of_word |
| 12374 | KEYWORD_packed &lt;- 'packed' end_of_word | 12396 | KEYWORD_test <- 'test' end_of_word |
| 12375 | KEYWORD_pub &lt;- 'pub' end_of_word | 12397 | KEYWORD_threadlocal <- 'threadlocal' end_of_word |
| 12376 | KEYWORD_resume &lt;- 'resume' end_of_word | 12398 | KEYWORD_try <- 'try' end_of_word |
| 12377 | KEYWORD_return &lt;- 'return' end_of_word | 12399 | KEYWORD_union <- 'union' end_of_word |
| 12378 | KEYWORD_linksection &lt;- 'linksection' end_of_word | 12400 | KEYWORD_unreachable <- 'unreachable' end_of_word |
| 12379 | KEYWORD_struct &lt;- 'struct' end_of_word | 12401 | KEYWORD_usingnamespace <- 'usingnamespace' end_of_word |
| 12380 | KEYWORD_suspend &lt;- 'suspend' end_of_word | 12402 | KEYWORD_var <- 'var' end_of_word |
| 12381 | KEYWORD_switch &lt;- 'switch' end_of_word | 12403 | KEYWORD_volatile <- 'volatile' end_of_word |
| 12382 | KEYWORD_test &lt;- 'test' end_of_word | 12404 | KEYWORD_while <- 'while' end_of_word |
| 12383 | KEYWORD_threadlocal &lt;- 'threadlocal' end_of_word | 12405 | |
| 12384 | KEYWORD_try &lt;- 'try' end_of_word | 12406 | keyword <- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe |
| 12385 | KEYWORD_union &lt;- 'union' end_of_word | | |
| 12386 | KEYWORD_unreachable &lt;- 'unreachable' end_of_word | | |
| 12387 | KEYWORD_usingnamespace &lt;- 'usingnamespace' end_of_word | | |
| 12388 | KEYWORD_var &lt;- 'var' end_of_word | | |
| 12389 | KEYWORD_volatile &lt;- 'volatile' end_of_word | | |
| 12390 | KEYWORD_while &lt;- 'while' end_of_word | | |
| 12391 | | | |
| 12392 | keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe | | |
| 12393 | / KEYWORD_anytype / KEYWORD_asm / KEYWORD_async / KEYWORD_await | 12407 | / KEYWORD_anytype / KEYWORD_asm / KEYWORD_async / KEYWORD_await |
| 12394 | / KEYWORD_break / KEYWORD_callconv / KEYWORD_catch / KEYWORD_comptime | 12408 | / KEYWORD_break / KEYWORD_callconv / KEYWORD_catch / KEYWORD_comptime |
| 12395 | / KEYWORD_const / KEYWORD_continue / KEYWORD_defer / KEYWORD_else | 12409 | / KEYWORD_const / KEYWORD_continue / KEYWORD_defer / KEYWORD_else |
| ... | @@ -12398,11 +12412,10 @@ keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe | ... | @@ -12398,11 +12412,10 @@ keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe |
| 12398 | / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline | 12412 | / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline |
| 12399 | / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed | 12413 | / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed |
| 12400 | / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection | 12414 | / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection |
| 12401 | / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch | 12415 | / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test |
| 12402 | / KEYWORD_test / KEYWORD_threadlocal / KEYWORD_try | 12416 | / KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable |
| 12403 | / KEYWORD_union / KEYWORD_unreachable | | |
| 12404 | / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while | 12417 | / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while |
| 12405 | </code></pre> | 12418 | {#end_syntax_block#} |
| 12406 | {#header_close#} | 12419 | {#header_close#} |
| 12407 | {#header_open|Zen#} | 12420 | {#header_open|Zen#} |
| 12408 | <ul> | 12421 | <ul> |