authorgravatar for pfg@pfg.pwpfg <pfg@pfg.pw> 2021-10-02 16:33:58-04:00
committergravatar for pfg@pfg.pwpfg <pfg@pfg.pw> 2021-10-02 16:33:58-04:00
logcfbbd970754eb39345eeb6dd3423b128df5c359c
treebbad92630594a1b7ad17933c3a1441c5901b0287
parentd82b3e2fb1e02e05c7e3248296b82c808b786137

fix incorrectly escaped html


1 files changed, 260 insertions(+), 273 deletions(-)

doc/langref.html.in+260-273
...@@ -11650,35 +11650,35 @@ fn readU32Be() u32 {}...@@ -11650,35 +11650,35 @@ fn readU32Be() u32 {}
11650 {#header_close#}11650 {#header_close#}
1165111651
11652 {#header_open|Grammar#}11652 {#header_open|Grammar#}
11653 {#syntax_block|peg|zig.peg#}Root &lt;- skip container_doc_comment? ContainerMembers eof11653 {#syntax_block|peg|grammar.y#}Root <- skip container_doc_comment? ContainerMembers eof
1165411654
11655# *** Top level ***11655# *** Top level ***
11656ContainerMembers &lt;- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations)11656ContainerMembers <- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations)
1165711657
11658ContainerDeclarations11658ContainerDeclarations
11659 &lt;- TestDecl ContainerDeclarations11659 <- TestDecl ContainerDeclarations
11660 / TopLevelComptime ContainerDeclarations11660 / TopLevelComptime ContainerDeclarations
11661 / doc_comment? KEYWORD_pub? TopLevelDecl ContainerDeclarations11661 / doc_comment? KEYWORD_pub? TopLevelDecl ContainerDeclarations
11662 /11662 /
1166311663
11664TestDecl &lt;- doc_comment? KEYWORD_test STRINGLITERALSINGLE? Block11664TestDecl <- doc_comment? KEYWORD_test STRINGLITERALSINGLE? Block
1166511665
11666TopLevelComptime &lt;- doc_comment? KEYWORD_comptime BlockExpr11666TopLevelComptime <- doc_comment? KEYWORD_comptime BlockExpr
1166711667
11668TopLevelDecl11668TopLevelDecl
11669 &lt;- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block)11669 <- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block)
11670 / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl11670 / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl
11671 / KEYWORD_usingnamespace Expr SEMICOLON11671 / KEYWORD_usingnamespace Expr SEMICOLON
1167211672
11673FnProto &lt;- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr11673FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr
1167411674
11675VarDecl &lt;- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? LinkSection? (EQUAL Expr)? SEMICOLON11675VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? LinkSection? (EQUAL Expr)? SEMICOLON
1167611676
11677ContainerField &lt;- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON (KEYWORD_anytype / TypeExpr) ByteAlign?)? (EQUAL Expr)?11677ContainerField <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON (KEYWORD_anytype / TypeExpr) ByteAlign?)? (EQUAL Expr)?
1167811678
11679# *** Block Level ***11679# *** Block Level ***
11680Statement11680Statement
11681 &lt;- KEYWORD_comptime? VarDecl11681 <- KEYWORD_comptime? VarDecl
11682 / KEYWORD_comptime BlockExprStatement11682 / KEYWORD_comptime BlockExprStatement
11683 / KEYWORD_nosuspend BlockExprStatement11683 / KEYWORD_nosuspend BlockExprStatement
11684 / KEYWORD_suspend BlockExprStatement11684 / KEYWORD_suspend BlockExprStatement
...@@ -11690,50 +11690,50 @@ Statement...@@ -11690,50 +11690,50 @@ Statement
11690 / AssignExpr SEMICOLON11690 / AssignExpr SEMICOLON
1169111691
11692IfStatement11692IfStatement
11693 &lt;- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?11693 <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
11694 / IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )11694 / IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )
1169511695
11696LabeledStatement &lt;- BlockLabel? (Block / LoopStatement)11696LabeledStatement <- BlockLabel? (Block / LoopStatement)
1169711697
11698LoopStatement &lt;- KEYWORD_inline? (ForStatement / WhileStatement)11698LoopStatement <- KEYWORD_inline? (ForStatement / WhileStatement)
1169911699
11700ForStatement11700ForStatement
11701 &lt;- ForPrefix BlockExpr ( KEYWORD_else Statement )?11701 <- ForPrefix BlockExpr ( KEYWORD_else Statement )?
11702 / ForPrefix AssignExpr ( SEMICOLON / KEYWORD_else Statement )11702 / ForPrefix AssignExpr ( SEMICOLON / KEYWORD_else Statement )
1170311703
11704WhileStatement11704WhileStatement
11705 &lt;- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )?11705 <- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )?
11706 / WhilePrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )11706 / WhilePrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )
1170711707
11708BlockExprStatement11708BlockExprStatement
11709 &lt;- BlockExpr11709 <- BlockExpr
11710 / AssignExpr SEMICOLON11710 / AssignExpr SEMICOLON
1171111711
11712BlockExpr &lt;- BlockLabel? Block11712BlockExpr <- BlockLabel? Block
1171311713
11714# *** Expression Level ***11714# *** Expression Level ***
11715AssignExpr &lt;- Expr (AssignOp Expr)?11715AssignExpr <- Expr (AssignOp Expr)?
1171611716
11717Expr &lt;- BoolOrExpr11717Expr <- BoolOrExpr
1171811718
11719BoolOrExpr &lt;- BoolAndExpr (KEYWORD_or BoolAndExpr)*11719BoolOrExpr <- BoolAndExpr (KEYWORD_or BoolAndExpr)*
1172011720
11721BoolAndExpr &lt;- CompareExpr (KEYWORD_and CompareExpr)*11721BoolAndExpr <- CompareExpr (KEYWORD_and CompareExpr)*
1172211722
11723CompareExpr &lt;- BitwiseExpr (CompareOp BitwiseExpr)?11723CompareExpr <- BitwiseExpr (CompareOp BitwiseExpr)?
1172411724
11725BitwiseExpr &lt;- BitShiftExpr (BitwiseOp BitShiftExpr)*11725BitwiseExpr <- BitShiftExpr (BitwiseOp BitShiftExpr)*
1172611726
11727BitShiftExpr &lt;- AdditionExpr (BitShiftOp AdditionExpr)*11727BitShiftExpr <- AdditionExpr (BitShiftOp AdditionExpr)*
1172811728
11729AdditionExpr &lt;- MultiplyExpr (AdditionOp MultiplyExpr)*11729AdditionExpr <- MultiplyExpr (AdditionOp MultiplyExpr)*
1173011730
11731MultiplyExpr &lt;- PrefixExpr (MultiplyOp PrefixExpr)*11731MultiplyExpr <- PrefixExpr (MultiplyOp PrefixExpr)*
1173211732
11733PrefixExpr &lt;- PrefixOp* PrimaryExpr11733PrefixExpr <- PrefixOp* PrimaryExpr
1173411734
11735PrimaryExpr11735PrimaryExpr
11736 &lt;- AsmExpr11736 <- AsmExpr
11737 / IfExpr11737 / IfExpr
11738 / KEYWORD_break BreakLabel? Expr?11738 / KEYWORD_break BreakLabel? Expr?
11739 / KEYWORD_comptime Expr11739 / KEYWORD_comptime Expr
...@@ -11745,33 +11745,33 @@ PrimaryExpr...@@ -11745,33 +11745,33 @@ PrimaryExpr
11745 / Block11745 / Block
11746 / CurlySuffixExpr11746 / CurlySuffixExpr
1174711747
11748IfExpr &lt;- IfPrefix Expr (KEYWORD_else Payload? Expr)?11748IfExpr <- IfPrefix Expr (KEYWORD_else Payload? Expr)?
1174911749
11750Block &lt;- LBRACE Statement* RBRACE11750Block <- LBRACE Statement* RBRACE
1175111751
11752LoopExpr &lt;- KEYWORD_inline? (ForExpr / WhileExpr)11752LoopExpr <- KEYWORD_inline? (ForExpr / WhileExpr)
1175311753
11754ForExpr &lt;- ForPrefix Expr (KEYWORD_else Expr)?11754ForExpr <- ForPrefix Expr (KEYWORD_else Expr)?
1175511755
11756WhileExpr &lt;- WhilePrefix Expr (KEYWORD_else Payload? Expr)?11756WhileExpr <- WhilePrefix Expr (KEYWORD_else Payload? Expr)?
1175711757
11758CurlySuffixExpr &lt;- TypeExpr InitList?11758CurlySuffixExpr <- TypeExpr InitList?
1175911759
11760InitList11760InitList
11761 &lt;- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE11761 <- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
11762 / LBRACE Expr (COMMA Expr)* COMMA? RBRACE11762 / LBRACE Expr (COMMA Expr)* COMMA? RBRACE
11763 / LBRACE RBRACE11763 / LBRACE RBRACE
1176411764
11765TypeExpr &lt;- PrefixTypeOp* ErrorUnionExpr11765TypeExpr <- PrefixTypeOp* ErrorUnionExpr
1176611766
11767ErrorUnionExpr &lt;- SuffixExpr (EXCLAMATIONMARK TypeExpr)?11767ErrorUnionExpr <- SuffixExpr (EXCLAMATIONMARK TypeExpr)?
1176811768
11769SuffixExpr11769SuffixExpr
11770 &lt;- KEYWORD_async PrimaryTypeExpr SuffixOp* FnCallArguments11770 <- KEYWORD_async PrimaryTypeExpr SuffixOp* FnCallArguments
11771 / PrimaryTypeExpr (SuffixOp / FnCallArguments)*11771 / PrimaryTypeExpr (SuffixOp / FnCallArguments)*
1177211772
11773PrimaryTypeExpr11773PrimaryTypeExpr
11774 &lt;- BUILTINIDENTIFIER FnCallArguments11774 <- BUILTINIDENTIFIER FnCallArguments
11775 / CHAR_LITERAL11775 / CHAR_LITERAL
11776 / ContainerDecl11776 / ContainerDecl
11777 / DOT IDENTIFIER11777 / DOT IDENTIFIER
...@@ -11791,94 +11791,93 @@ PrimaryTypeExpr...@@ -11791,94 +11791,93 @@ PrimaryTypeExpr
11791 / STRINGLITERAL11791 / STRINGLITERAL
11792 / SwitchExpr11792 / SwitchExpr
1179311793
11794ContainerDecl &lt;- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto11794ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto
1179511795
11796ErrorSetDecl &lt;- KEYWORD_error LBRACE IdentifierList RBRACE11796ErrorSetDecl <- KEYWORD_error LBRACE IdentifierList RBRACE
1179711797
11798GroupedExpr &lt;- LPAREN Expr RPAREN11798GroupedExpr <- LPAREN Expr RPAREN
1179911799
11800IfTypeExpr &lt;- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?11800IfTypeExpr <- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
1180111801
11802LabeledTypeExpr11802LabeledTypeExpr
11803 &lt;- BlockLabel Block11803 <- BlockLabel Block
11804 / BlockLabel? LoopTypeExpr11804 / BlockLabel? LoopTypeExpr
1180511805
11806LoopTypeExpr &lt;- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr)11806LoopTypeExpr <- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr)
1180711807
11808ForTypeExpr &lt;- ForPrefix TypeExpr (KEYWORD_else TypeExpr)?11808ForTypeExpr <- ForPrefix TypeExpr (KEYWORD_else TypeExpr)?
1180911809
11810WhileTypeExpr &lt;- WhilePrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?11810WhileTypeExpr <- WhilePrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
1181111811
11812SwitchExpr &lt;- KEYWORD_switch LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE11812SwitchExpr <- KEYWORD_switch LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE
1181311813
11814# *** Assembly ***11814# *** Assembly ***
11815AsmExpr &lt;- KEYWORD_asm KEYWORD_volatile? LPAREN Expr AsmOutput? RPAREN11815AsmExpr <- KEYWORD_asm KEYWORD_volatile? LPAREN Expr AsmOutput? RPAREN
1181611816
11817AsmOutput &lt;- COLON AsmOutputList AsmInput?11817AsmOutput <- COLON AsmOutputList AsmInput?
1181811818
11819AsmOutputItem &lt;- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN (MINUSRARROW TypeExpr / IDENTIFIER) RPAREN11819AsmOutputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN (MINUSRARROW TypeExpr / IDENTIFIER) RPAREN
1182011820
11821AsmInput &lt;- COLON AsmInputList AsmClobbers?11821AsmInput <- COLON AsmInputList AsmClobbers?
1182211822
11823AsmInputItem &lt;- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN Expr RPAREN11823AsmInputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN Expr RPAREN
1182411824
11825AsmClobbers &lt;- COLON StringList11825AsmClobbers <- COLON StringList
1182611826
11827# *** Helper grammar ***11827# *** Helper grammar ***
11828BreakLabel &lt;- COLON IDENTIFIER11828BreakLabel <- COLON IDENTIFIER
1182911829
11830BlockLabel &lt;- IDENTIFIER COLON11830BlockLabel <- IDENTIFIER COLON
1183111831
11832FieldInit &lt;- DOT IDENTIFIER EQUAL Expr11832FieldInit <- DOT IDENTIFIER EQUAL Expr
1183311833
11834WhileContinueExpr &lt;- COLON LPAREN AssignExpr RPAREN11834WhileContinueExpr <- COLON LPAREN AssignExpr RPAREN
1183511835
11836LinkSection &lt;- KEYWORD_linksection LPAREN Expr RPAREN11836LinkSection <- KEYWORD_linksection LPAREN Expr RPAREN
1183711837
11838# Fn specific11838# Fn specific
11839CallConv &lt;- KEYWORD_callconv LPAREN Expr RPAREN11839CallConv <- KEYWORD_callconv LPAREN Expr RPAREN
1184011840
11841ParamDecl11841ParamDecl
11842 &lt;- doc_comment? (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType11842 <- doc_comment? (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType
11843 / DOT311843 / DOT3
1184411844
11845ParamType11845ParamType
11846 &lt;- KEYWORD_anytype11846 <- KEYWORD_anytype
11847 / TypeExpr11847 / TypeExpr
1184811848
11849# Control flow prefixes11849# Control flow prefixes
11850IfPrefix &lt;- KEYWORD_if LPAREN Expr RPAREN PtrPayload?11850IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload?
1185111851
11852WhilePrefix &lt;- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr?11852WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr?
1185311853
11854ForPrefix &lt;- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload11854ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload
1185511855
11856# Payloads11856# Payloads
11857Payload &lt;- PIPE IDENTIFIER PIPE11857Payload <- PIPE IDENTIFIER PIPE
1185811858
11859PtrPayload &lt;- PIPE ASTERISK? IDENTIFIER PIPE11859PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE
1186011860
11861PtrIndexPayload &lt;- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE11861PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
1186211862
1186311863
11864# Switch specific11864# Switch specific
11865SwitchProng &lt;- SwitchCase EQUALRARROW PtrPayload? AssignExpr11865SwitchProng <- SwitchCase EQUALRARROW PtrPayload? AssignExpr
1186611866
11867SwitchCase11867SwitchCase
11868 &lt;- SwitchItem (COMMA SwitchItem)* COMMA?11868 <- SwitchItem (COMMA SwitchItem)* COMMA?
11869 / KEYWORD_else11869 / KEYWORD_else
1187011870
11871SwitchItem &lt;- Expr (DOT3 Expr)?11871SwitchItem <- Expr (DOT3 Expr)?
1187211872
11873# Operators11873# Operators
11874AssignOp11874AssignOp
11875 &lt;- ASTERISKEQUAL11875 <- ASTERISKEQUAL
11876 / SLASHEQUAL11876 / SLASHEQUAL
11877 / PERCENTEQUAL11877 / PERCENTEQUAL
11878 / PLUSEQUAL11878 / PLUSEQUAL
11879 / MINUSEQUAL11879 / MINUSEQUAL
11880 / LARROW2EQUAL11880 / LARROW2EQUAL
11881 / LARROW2PIPEEQUAL
11882 / RARROW2EQUAL11881 / RARROW2EQUAL
11883 / AMPERSANDEQUAL11882 / AMPERSANDEQUAL
11884 / CARETEQUAL11883 / CARETEQUAL
...@@ -11889,7 +11888,7 @@ AssignOp...@@ -11889,7 +11888,7 @@ AssignOp
11889 / EQUAL11888 / EQUAL
1189011889
11891CompareOp11890CompareOp
11892 &lt;- EQUALEQUAL11891 <- EQUALEQUAL
11893 / EXCLAMATIONMARKEQUAL11892 / EXCLAMATIONMARKEQUAL
11894 / LARROW11893 / LARROW
11895 / RARROW11894 / RARROW
...@@ -11897,36 +11896,33 @@ CompareOp...@@ -11897,36 +11896,33 @@ CompareOp
11897 / RARROWEQUAL11896 / RARROWEQUAL
1189811897
11899BitwiseOp11898BitwiseOp
11900 &lt;- AMPERSAND11899 <- AMPERSAND
11901 / CARET11900 / CARET
11902 / PIPE11901 / PIPE
11903 / KEYWORD_orelse11902 / KEYWORD_orelse
11904 / KEYWORD_catch Payload?11903 / KEYWORD_catch Payload?
1190511904
11906BitShiftOp11905BitShiftOp
11907 &lt;- LARROW211906 <- LARROW2
11908 / RARROW211907 / RARROW2
1190911908
11910AdditionOp11909AdditionOp
11911 &lt;- PLUS11910 <- PLUS
11912 / MINUS11911 / MINUS
11913 / PLUS211912 / PLUS2
11914 / PLUSPERCENT11913 / PLUSPERCENT
11915 / MINUSPERCENT11914 / MINUSPERCENT
11916 / PLUSPIPE
11917 / MINUSPIPE
1191811915
11919MultiplyOp11916MultiplyOp
11920 &lt;- PIPE211917 <- PIPE2
11921 / ASTERISK11918 / ASTERISK
11922 / SLASH11919 / SLASH
11923 / PERCENT11920 / PERCENT
11924 / ASTERISK211921 / ASTERISK2
11925 / ASTERISKPERCENT11922 / ASTERISKPERCENT
11926 / ASTERISKPIPE
1192711923
11928PrefixOp11924PrefixOp
11929 &lt;- EXCLAMATIONMARK11925 <- EXCLAMATIONMARK
11930 / MINUS11926 / MINUS
11931 / TILDE11927 / TILDE
11932 / MINUSPERCENT11928 / MINUSPERCENT
...@@ -11935,86 +11931,86 @@ PrefixOp...@@ -11935,86 +11931,86 @@ PrefixOp
11935 / KEYWORD_await11931 / KEYWORD_await
1193611932
11937PrefixTypeOp11933PrefixTypeOp
11938 &lt;- QUESTIONMARK11934 <- QUESTIONMARK
11939 / KEYWORD_anyframe MINUSRARROW11935 / KEYWORD_anyframe MINUSRARROW
11940 / SliceTypeStart (ByteAlign / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*11936 / SliceTypeStart (ByteAlign / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
11941 / PtrTypeStart (KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*11937 / PtrTypeStart (KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
11942 / ArrayTypeStart11938 / ArrayTypeStart
1194311939
11944SuffixOp11940SuffixOp
11945 &lt;- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET11941 <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET
11946 / DOT IDENTIFIER11942 / DOT IDENTIFIER
11947 / DOTASTERISK11943 / DOTASTERISK
11948 / DOTQUESTIONMARK11944 / DOTQUESTIONMARK
1194911945
11950FnCallArguments &lt;- LPAREN ExprList RPAREN11946FnCallArguments <- LPAREN ExprList RPAREN
1195111947
11952# Ptr specific11948# Ptr specific
11953SliceTypeStart &lt;- LBRACKET (COLON Expr)? RBRACKET11949SliceTypeStart <- LBRACKET (COLON Expr)? RBRACKET
1195411950
11955PtrTypeStart11951PtrTypeStart
11956 &lt;- ASTERISK11952 <- ASTERISK
11957 / ASTERISK211953 / ASTERISK2
11958 / LBRACKET ASTERISK (LETTERC / COLON Expr)? RBRACKET11954 / LBRACKET ASTERISK (LETTERC / COLON Expr)? RBRACKET
1195911955
11960ArrayTypeStart &lt;- LBRACKET Expr (COLON Expr)? RBRACKET11956ArrayTypeStart <- LBRACKET Expr (COLON Expr)? RBRACKET
1196111957
11962# ContainerDecl specific11958# ContainerDecl specific
11963ContainerDeclAuto &lt;- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE11959ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE
1196411960
11965ContainerDeclType11961ContainerDeclType
11966 &lt;- KEYWORD_struct11962 <- KEYWORD_struct
11967 / KEYWORD_opaque11963 / KEYWORD_opaque
11968 / KEYWORD_enum (LPAREN Expr RPAREN)?11964 / KEYWORD_enum (LPAREN Expr RPAREN)?
11969 / KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)?11965 / KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)?
1197011966
11971# Alignment11967# Alignment
11972ByteAlign &lt;- KEYWORD_align LPAREN Expr RPAREN11968ByteAlign <- KEYWORD_align LPAREN Expr RPAREN
1197311969
11974# Lists11970# Lists
11975IdentifierList &lt;- (doc_comment? IDENTIFIER COMMA)* (doc_comment? IDENTIFIER)?11971IdentifierList <- (doc_comment? IDENTIFIER COMMA)* (doc_comment? IDENTIFIER)?
1197611972
11977SwitchProngList &lt;- (SwitchProng COMMA)* SwitchProng?11973SwitchProngList <- (SwitchProng COMMA)* SwitchProng?
1197811974
11979AsmOutputList &lt;- (AsmOutputItem COMMA)* AsmOutputItem?11975AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem?
1198011976
11981AsmInputList &lt;- (AsmInputItem COMMA)* AsmInputItem?11977AsmInputList <- (AsmInputItem COMMA)* AsmInputItem?
1198211978
11983StringList &lt;- (STRINGLITERAL COMMA)* STRINGLITERAL?11979StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL?
1198411980
11985ParamDeclList &lt;- (ParamDecl COMMA)* ParamDecl?11981ParamDeclList <- (ParamDecl COMMA)* ParamDecl?
1198611982
11987ExprList &lt;- (Expr COMMA)* Expr?11983ExprList <- (Expr COMMA)* Expr?
1198811984
11989# *** Tokens ***11985# *** Tokens ***
11990eof &lt;- !.11986eof <- !.
11991bin &lt;- [01]11987bin <- [01]
11992bin_ &lt;- '_'? bin11988bin_ <- '_'? bin
11993oct &lt;- [0-7]11989oct <- [0-7]
11994oct_ &lt;- '_'? oct11990oct_ <- '_'? oct
11995hex &lt;- [0-9a-fA-F]11991hex <- [0-9a-fA-F]
11996hex_ &lt;- '_'? hex11992hex_ <- '_'? hex
11997dec &lt;- [0-9]11993dec <- [0-9]
11998dec_ &lt;- '_'? dec11994dec_ <- '_'? dec
1199911995
12000bin_int &lt;- bin bin_*11996bin_int <- bin bin_*
12001oct_int &lt;- oct oct_*11997oct_int <- oct oct_*
12002dec_int &lt;- dec dec_*11998dec_int <- dec dec_*
12003hex_int &lt;- hex hex_*11999hex_int <- hex hex_*
1200412000
12005ox80_oxBF &lt;- [\200-\277]12001ox80_oxBF <- [\200-\277]
12006oxF4 &lt;- '\364'12002oxF4 <- '\364'
12007ox80_ox8F &lt;- [\200-\217]12003ox80_ox8F <- [\200-\217]
12008oxF1_oxF3 &lt;- [\361-\363]12004oxF1_oxF3 <- [\361-\363]
12009oxF0 &lt;- '\360'12005oxF0 <- '\360'
12010ox90_0xBF &lt;- [\220-\277]12006ox90_0xBF <- [\220-\277]
12011oxEE_oxEF &lt;- [\356-\357]12007oxEE_oxEF <- [\356-\357]
12012oxED &lt;- '\355'12008oxED <- '\355'
12013ox80_ox9F &lt;- [\200-\237]12009ox80_ox9F <- [\200-\237]
12014oxE1_oxEC &lt;- [\341-\354]12010oxE1_oxEC <- [\341-\354]
12015oxE0 &lt;- '\340'12011oxE0 <- '\340'
12016oxA0_oxBF &lt;- [\240-\277]12012oxA0_oxBF <- [\240-\277]
12017oxC2_oxDF &lt;- [\302-\337]12013oxC2_oxDF <- [\302-\337]
1201812014
12019# From https://lemire.me/blog/2018/05/09/how-quickly-can-you-check-that-a-string-is-valid-unicode-utf-8/12015# From https://lemire.me/blog/2018/05/09/how-quickly-can-you-check-that-a-string-is-valid-unicode-utf-8/
12020# First Byte Second Byte Third Byte Fourth Byte12016# First Byte Second Byte Third Byte Fourth Byte
...@@ -12028,7 +12024,7 @@ oxC2_oxDF &lt;- [\302-\337]...@@ -12028,7 +12024,7 @@ oxC2_oxDF &lt;- [\302-\337]
12028# [0xF1,0xF3] [0x80,0xBF] [0x80,0xBF] [0x80,0xBF]12024# [0xF1,0xF3] [0x80,0xBF] [0x80,0xBF] [0x80,0xBF]
12029# 0xF4 [0x80,0x8F] [0x80,0xBF] [0x80,0xBF]12025# 0xF4 [0x80,0x8F] [0x80,0xBF] [0x80,0xBF]
1203012026
12031mb_utf8_literal &lt;-12027mb_utf8_literal <-
12032 oxF4 ox80_ox8F ox80_oxBF ox80_oxBF12028 oxF4 ox80_ox8F ox80_oxBF ox80_oxBF
12033 / oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF12029 / oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF
12034 / oxF0 ox90_0xBF ox80_oxBF ox80_oxBF12030 / oxF0 ox90_0xBF ox80_oxBF ox80_oxBF
...@@ -12038,164 +12034,156 @@ mb_utf8_literal &lt;-...@@ -12038,164 +12034,156 @@ mb_utf8_literal &lt;-
12038 / oxE0 oxA0_oxBF ox80_oxBF12034 / oxE0 oxA0_oxBF ox80_oxBF
12039 / oxC2_oxDF ox80_oxBF12035 / oxC2_oxDF ox80_oxBF
1204012036
12041ascii_char_not_nl_slash_squote &lt;- [\000-\011\013-\046-\050-\133\135-\177]12037ascii_char_not_nl_slash_squote <- [\000-\011\013-\046-\050-\133\135-\177]
1204212038
12043char_escape12039char_escape
12044 &lt;- &quot;\\x&quot; hex hex12040 <- "\\x" hex hex
12045 / &quot;\\u{&quot; hex+ &quot;}&quot;12041 / "\\u{" hex+ "}"
12046 / &quot;\\&quot; [nr\\t'&quot;]12042 / "\\" [nr\\t'"]
12047char_char12043char_char
12048 &lt;- mb_utf8_literal12044 <- mb_utf8_literal
12049 / char_escape12045 / char_escape
12050 / ascii_char_not_nl_slash_squote12046 / ascii_char_not_nl_slash_squote
1205112047
12052string_char12048string_char
12053 &lt;- char_escape12049 <- char_escape
12054 / [^\\&quot;\n]12050 / [^\\"\n]
1205512051
12056container_doc_comment &lt;- ('//!' [^\n]* [ \n]*)+12052container_doc_comment <- ('//!' [^\n]* [ \n]*)+
12057doc_comment &lt;- ('///' [^\n]* [ \n]*)+12053doc_comment <- ('///' [^\n]* [ \n]*)+
12058line_comment &lt;- '//' ![!/][^\n]* / '////' [^\n]*12054line_comment <- '//' ![!/][^\n]* / '////' [^\n]*
12059line_string &lt;- (&quot;\\\\&quot; [^\n]* [ \n]*)+12055line_string <- ("\\\\" [^\n]* [ \n]*)+
12060skip &lt;- ([ \n] / line_comment)*12056skip <- ([ \n] / line_comment)*
1206112057
12062CHAR_LITERAL &lt;- &quot;'&quot; char_char &quot;'&quot; skip12058CHAR_LITERAL <- "'" char_char "'" skip
12063FLOAT12059FLOAT
12064 &lt;- &quot;0x&quot; hex_int &quot;.&quot; hex_int ([pP] [-+]? dec_int)? skip12060 <- "0x" hex_int "." hex_int ([pP] [-+]? dec_int)? skip
12065 / dec_int &quot;.&quot; dec_int ([eE] [-+]? dec_int)? skip12061 / dec_int "." dec_int ([eE] [-+]? dec_int)? skip
12066 / &quot;0x&quot; hex_int &quot;.&quot;? [pP] [-+]? dec_int skip12062 / "0x" hex_int [pP] [-+]? dec_int skip
12067 / dec_int &quot;.&quot;? [eE] [-+]? dec_int skip12063 / dec_int [eE] [-+]? dec_int skip
12068INTEGER12064INTEGER
12069 &lt;- &quot;0b&quot; bin_int skip12065 <- "0b" bin_int skip
12070 / &quot;0o&quot; oct_int skip12066 / "0o" oct_int skip
12071 / &quot;0x&quot; hex_int skip12067 / "0x" hex_int skip
12072 / dec_int skip12068 / dec_int skip
12073STRINGLITERALSINGLE &lt;- &quot;\&quot;&quot; string_char* &quot;\&quot;&quot; skip12069STRINGLITERALSINGLE <- "\"" string_char* "\"" skip
12074STRINGLITERAL12070STRINGLITERAL
12075 &lt;- STRINGLITERALSINGLE12071 <- STRINGLITERALSINGLE
12076 / (line_string skip)+12072 / (line_string skip)+
12077IDENTIFIER12073IDENTIFIER
12078 &lt;- !keyword [A-Za-z_] [A-Za-z0-9_]* skip12074 <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip
12079 / &quot;@\&quot;&quot; string_char* &quot;\&quot;&quot; skip12075 / "@\"" string_char* "\"" skip
12080BUILTINIDENTIFIER &lt;- &quot;@&quot;[A-Za-z_][A-Za-z0-9_]* skip12076BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip
1208112077
1208212078
12083AMPERSAND &lt;- '&amp;' ![=] skip12079AMPERSAND <- '&' ![=] skip
12084AMPERSANDEQUAL &lt;- '&amp;=' skip12080AMPERSANDEQUAL <- '&=' skip
12085ASTERISK &lt;- '*' ![*%=] skip12081ASTERISK <- '*' ![*%=] skip
12086ASTERISK2 &lt;- '**' skip12082ASTERISK2 <- '**' skip
12087ASTERISKEQUAL &lt;- '*=' skip12083ASTERISKEQUAL <- '*=' skip
12088ASTERISKPERCENT &lt;- '*%' ![=] skip12084ASTERISKPERCENT <- '*%' ![=] skip
12089ASTERISKPERCENTEQUAL &lt;- '*%=' skip12085ASTERISKPERCENTEQUAL <- '*%=' skip
12090ASTERISKPIPE &lt;- '*|' ![=] skip12086CARET <- '^' ![=] skip
12091ASTERISKPIPEEQUAL &lt;- '*|=' skip12087CARETEQUAL <- '^=' skip
12092CARET &lt;- '^' ![=] skip12088COLON <- ':' skip
12093CARETEQUAL &lt;- '^=' skip12089COMMA <- ',' skip
12094COLON &lt;- ':' skip12090DOT <- '.' ![*.?] skip
12095COMMA &lt;- ',' skip12091DOT2 <- '..' ![.] skip
12096DOT &lt;- '.' ![*.?] skip12092DOT3 <- '...' skip
12097DOT2 &lt;- '..' ![.] skip12093DOTASTERISK <- '.*' skip
12098DOT3 &lt;- '...' skip12094DOTQUESTIONMARK <- '.?' skip
12099DOTASTERISK &lt;- '.*' skip12095EQUAL <- '=' ![>=] skip
12100DOTQUESTIONMARK &lt;- '.?' skip12096EQUALEQUAL <- '==' skip
12101EQUAL &lt;- '=' ![&gt;=] skip12097EQUALRARROW <- '=>' skip
12102EQUALEQUAL &lt;- '==' skip12098EXCLAMATIONMARK <- '!' ![=] skip
12103EQUALRARROW &lt;- '=&gt;' skip12099EXCLAMATIONMARKEQUAL <- '!=' skip
12104EXCLAMATIONMARK &lt;- '!' ![=] skip12100LARROW <- '<' ![<=] skip
12105EXCLAMATIONMARKEQUAL &lt;- '!=' skip12101LARROW2 <- '<<' ![=] skip
12106LARROW &lt;- '&lt;' ![&lt;=] skip12102LARROW2EQUAL <- '<<=' skip
12107LARROW2 &lt;- '&lt;&lt;' ![=] skip12103LARROWEQUAL <- '<=' skip
12108LARROW2PIPE &lt;- '&lt;&lt;|' ![=] skip12104LBRACE <- '{' skip
12109LARROW2PIPEEQUAL &lt;- '&lt;&lt;|=' ![=] skip12105LBRACKET <- '[' skip
12110LARROW2EQUAL &lt;- '&lt;&lt;=' skip12106LPAREN <- '(' skip
12111LARROWEQUAL &lt;- '&lt;=' skip12107MINUS <- '-' ![%=>] skip
12112LBRACE &lt;- '{' skip12108MINUSEQUAL <- '-=' skip
12113LBRACKET &lt;- '[' skip12109MINUSPERCENT <- '-%' ![=] skip
12114LPAREN &lt;- '(' skip12110MINUSPERCENTEQUAL <- '-%=' skip
12115MINUS &lt;- '-' ![%=&gt;] skip12111MINUSRARROW <- '->' skip
12116MINUSEQUAL &lt;- '-=' skip12112PERCENT <- '%' ![=] skip
12117MINUSPERCENT &lt;- '-%' ![=] skip12113PERCENTEQUAL <- '%=' skip
12118MINUSPERCENTEQUAL &lt;- '-%=' skip12114PIPE <- '|' ![|=] skip
12119MINUSPIPE &lt;- '-|' ![=] skip12115PIPE2 <- '||' skip
12120MINUSPIPEEQUAL &lt;- '-|=' skip12116PIPEEQUAL <- '|=' skip
12121MINUSRARROW &lt;- '-&gt;' skip12117PLUS <- '+' ![%+=] skip
12122PERCENT &lt;- '%' ![=] skip12118PLUS2 <- '++' skip
12123PERCENTEQUAL &lt;- '%=' skip12119PLUSEQUAL <- '+=' skip
12124PIPE &lt;- '|' ![|=] skip12120PLUSPERCENT <- '+%' ![=] skip
12125PIPE2 &lt;- '||' skip12121PLUSPERCENTEQUAL <- '+%=' skip
12126PIPEEQUAL &lt;- '|=' skip12122LETTERC <- 'c' skip
12127PLUS &lt;- '+' ![%+=] skip12123QUESTIONMARK <- '?' skip
12128PLUS2 &lt;- '++' skip12124RARROW <- '>' ![>=] skip
12129PLUSEQUAL &lt;- '+=' skip12125RARROW2 <- '>>' ![=] skip
12130PLUSPERCENT &lt;- '+%' ![=] skip12126RARROW2EQUAL <- '>>=' skip
12131PLUSPERCENTEQUAL &lt;- '+%=' skip12127RARROWEQUAL <- '>=' skip
12132PLUSPIPE &lt;- '+|' ![=] skip12128RBRACE <- '}' skip
12133PLUSPIPEEQUAL &lt;- '+|=' skip12129RBRACKET <- ']' skip
12134LETTERC &lt;- 'c' skip12130RPAREN <- ')' skip
12135QUESTIONMARK &lt;- '?' skip12131SEMICOLON <- ';' skip
12136RARROW &lt;- '&gt;' ![&gt;=] skip12132SLASH <- '/' ![=] skip
12137RARROW2 &lt;- '&gt;&gt;' ![=] skip12133SLASHEQUAL <- '/=' skip
12138RARROW2EQUAL &lt;- '&gt;&gt;=' skip12134TILDE <- '~' skip
12139RARROWEQUAL &lt;- '&gt;=' skip12135
12140RBRACE &lt;- '}' skip12136end_of_word <- ![a-zA-Z0-9_] skip
12141RBRACKET &lt;- ']' skip12137KEYWORD_align <- 'align' end_of_word
12142RPAREN &lt;- ')' skip12138KEYWORD_allowzero <- 'allowzero' end_of_word
12143SEMICOLON &lt;- ';' skip12139KEYWORD_and <- 'and' end_of_word
12144SLASH &lt;- '/' ![=] skip12140KEYWORD_anyframe <- 'anyframe' end_of_word
12145SLASHEQUAL &lt;- '/=' skip12141KEYWORD_anytype <- 'anytype' end_of_word
12146TILDE &lt;- '~' skip12142KEYWORD_asm <- 'asm' end_of_word
1214712143KEYWORD_async <- 'async' end_of_word
12148end_of_word &lt;- ![a-zA-Z0-9_] skip12144KEYWORD_await <- 'await' end_of_word
12149KEYWORD_align &lt;- 'align' end_of_word12145KEYWORD_break <- 'break' end_of_word
12150KEYWORD_allowzero &lt;- 'allowzero' end_of_word12146KEYWORD_callconv <- 'callconv' end_of_word
12151KEYWORD_and &lt;- 'and' end_of_word12147KEYWORD_catch <- 'catch' end_of_word
12152KEYWORD_anyframe &lt;- 'anyframe' end_of_word12148KEYWORD_comptime <- 'comptime' end_of_word
12153KEYWORD_anytype &lt;- 'anytype' end_of_word12149KEYWORD_const <- 'const' end_of_word
12154KEYWORD_asm &lt;- 'asm' end_of_word12150KEYWORD_continue <- 'continue' end_of_word
12155KEYWORD_async &lt;- 'async' end_of_word12151KEYWORD_defer <- 'defer' end_of_word
12156KEYWORD_await &lt;- 'await' end_of_word12152KEYWORD_else <- 'else' end_of_word
12157KEYWORD_break &lt;- 'break' end_of_word12153KEYWORD_enum <- 'enum' end_of_word
12158KEYWORD_callconv &lt;- 'callconv' end_of_word12154KEYWORD_errdefer <- 'errdefer' end_of_word
12159KEYWORD_catch &lt;- 'catch' end_of_word12155KEYWORD_error <- 'error' end_of_word
12160KEYWORD_comptime &lt;- 'comptime' end_of_word12156KEYWORD_export <- 'export' end_of_word
12161KEYWORD_const &lt;- 'const' end_of_word12157KEYWORD_extern <- 'extern' end_of_word
12162KEYWORD_continue &lt;- 'continue' end_of_word12158KEYWORD_fn <- 'fn' end_of_word
12163KEYWORD_defer &lt;- 'defer' end_of_word12159KEYWORD_for <- 'for' end_of_word
12164KEYWORD_else &lt;- 'else' end_of_word12160KEYWORD_if <- 'if' end_of_word
12165KEYWORD_enum &lt;- 'enum' end_of_word12161KEYWORD_inline <- 'inline' end_of_word
12166KEYWORD_errdefer &lt;- 'errdefer' end_of_word12162KEYWORD_noalias <- 'noalias' end_of_word
12167KEYWORD_error &lt;- 'error' end_of_word12163KEYWORD_nosuspend <- 'nosuspend' end_of_word
12168KEYWORD_export &lt;- 'export' end_of_word12164KEYWORD_noinline <- 'noinline' end_of_word
12169KEYWORD_extern &lt;- 'extern' end_of_word12165KEYWORD_opaque <- 'opaque' end_of_word
12170KEYWORD_fn &lt;- 'fn' end_of_word12166KEYWORD_or <- 'or' end_of_word
12171KEYWORD_for &lt;- 'for' end_of_word12167KEYWORD_orelse <- 'orelse' end_of_word
12172KEYWORD_if &lt;- 'if' end_of_word12168KEYWORD_packed <- 'packed' end_of_word
12173KEYWORD_inline &lt;- 'inline' end_of_word12169KEYWORD_pub <- 'pub' end_of_word
12174KEYWORD_noalias &lt;- 'noalias' end_of_word12170KEYWORD_resume <- 'resume' end_of_word
12175KEYWORD_nosuspend &lt;- 'nosuspend' end_of_word12171KEYWORD_return <- 'return' end_of_word
12176KEYWORD_noinline &lt;- 'noinline' end_of_word12172KEYWORD_linksection <- 'linksection' end_of_word
12177KEYWORD_opaque &lt;- 'opaque' end_of_word12173KEYWORD_struct <- 'struct' end_of_word
12178KEYWORD_or &lt;- 'or' end_of_word12174KEYWORD_suspend <- 'suspend' end_of_word
12179KEYWORD_orelse &lt;- 'orelse' end_of_word12175KEYWORD_switch <- 'switch' end_of_word
12180KEYWORD_packed &lt;- 'packed' end_of_word12176KEYWORD_test <- 'test' end_of_word
12181KEYWORD_pub &lt;- 'pub' end_of_word12177KEYWORD_threadlocal <- 'threadlocal' end_of_word
12182KEYWORD_resume &lt;- 'resume' end_of_word12178KEYWORD_try <- 'try' end_of_word
12183KEYWORD_return &lt;- 'return' end_of_word12179KEYWORD_union <- 'union' end_of_word
12184KEYWORD_linksection &lt;- 'linksection' end_of_word12180KEYWORD_unreachable <- 'unreachable' end_of_word
12185KEYWORD_struct &lt;- 'struct' end_of_word12181KEYWORD_usingnamespace <- 'usingnamespace' end_of_word
12186KEYWORD_suspend &lt;- 'suspend' end_of_word12182KEYWORD_var <- 'var' end_of_word
12187KEYWORD_switch &lt;- 'switch' end_of_word12183KEYWORD_volatile <- 'volatile' end_of_word
12188KEYWORD_test &lt;- 'test' end_of_word12184KEYWORD_while <- 'while' end_of_word
12189KEYWORD_threadlocal &lt;- 'threadlocal' end_of_word12185
12190KEYWORD_try &lt;- 'try' end_of_word12186keyword <- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe
12191KEYWORD_union &lt;- 'union' end_of_word
12192KEYWORD_unreachable &lt;- 'unreachable' end_of_word
12193KEYWORD_usingnamespace &lt;- 'usingnamespace' end_of_word
12194KEYWORD_var &lt;- 'var' end_of_word
12195KEYWORD_volatile &lt;- 'volatile' end_of_word
12196KEYWORD_while &lt;- 'while' end_of_word
12197
12198keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe
12199 / KEYWORD_anytype / KEYWORD_asm / KEYWORD_async / KEYWORD_await12187 / KEYWORD_anytype / KEYWORD_asm / KEYWORD_async / KEYWORD_await
12200 / KEYWORD_break / KEYWORD_callconv / KEYWORD_catch / KEYWORD_comptime12188 / KEYWORD_break / KEYWORD_callconv / KEYWORD_catch / KEYWORD_comptime
12201 / KEYWORD_const / KEYWORD_continue / KEYWORD_defer / KEYWORD_else12189 / KEYWORD_const / KEYWORD_continue / KEYWORD_defer / KEYWORD_else
...@@ -12204,9 +12192,8 @@ keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe...@@ -12204,9 +12192,8 @@ keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe
12204 / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline12192 / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline
12205 / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed12193 / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed
12206 / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection12194 / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection
12207 / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch12195 / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test
12208 / KEYWORD_test / KEYWORD_threadlocal / KEYWORD_try12196 / KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable
12209 / KEYWORD_union / KEYWORD_unreachable
12210 / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while12197 / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while
12211{#end_syntax_block#}12198{#end_syntax_block#}
12212 {#header_close#}12199 {#header_close#}