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 {}
1165011650 {#header_close#}
1165111651
1165211652 {#header_open|Grammar#}
11653 {#syntax_block|peg|zig.peg#}Root &lt;- skip container_doc_comment? ContainerMembers eof
11653 {#syntax_block|peg|grammar.y#}Root <- skip container_doc_comment? ContainerMembers eof
1165411654
1165511655# *** Top level ***
11656ContainerMembers &lt;- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations)
11656ContainerMembers <- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations)
1165711657
1165811658ContainerDeclarations
11659 &lt;- TestDecl ContainerDeclarations
11659 <- TestDecl ContainerDeclarations
1166011660 / TopLevelComptime ContainerDeclarations
1166111661 / doc_comment? KEYWORD_pub? TopLevelDecl ContainerDeclarations
1166211662 /
1166311663
11664TestDecl &lt;- doc_comment? KEYWORD_test STRINGLITERALSINGLE? Block
11664TestDecl <- doc_comment? KEYWORD_test STRINGLITERALSINGLE? Block
1166511665
11666TopLevelComptime &lt;- doc_comment? KEYWORD_comptime BlockExpr
11666TopLevelComptime <- doc_comment? KEYWORD_comptime BlockExpr
1166711667
1166811668TopLevelDecl
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)
1167011670 / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl
1167111671 / KEYWORD_usingnamespace Expr SEMICOLON
1167211672
11673FnProto &lt;- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr
11673FnProto <- 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)? SEMICOLON
11675VarDecl <- (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
1167911679# *** Block Level ***
1168011680Statement
11681 &lt;- KEYWORD_comptime? VarDecl
11681 <- KEYWORD_comptime? VarDecl
1168211682 / KEYWORD_comptime BlockExprStatement
1168311683 / KEYWORD_nosuspend BlockExprStatement
1168411684 / KEYWORD_suspend BlockExprStatement
......@@ -11690,50 +11690,50 @@ Statement
1169011690 / AssignExpr SEMICOLON
1169111691
1169211692IfStatement
11693 &lt;- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
11693 <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
1169411694 / 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
1170011700ForStatement
11701 &lt;- ForPrefix BlockExpr ( KEYWORD_else Statement )?
11701 <- ForPrefix BlockExpr ( KEYWORD_else Statement )?
1170211702 / ForPrefix AssignExpr ( SEMICOLON / KEYWORD_else Statement )
1170311703
1170411704WhileStatement
11705 &lt;- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )?
11705 <- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )?
1170611706 / WhilePrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )
1170711707
1170811708BlockExprStatement
11709 &lt;- BlockExpr
11709 <- BlockExpr
1171011710 / AssignExpr SEMICOLON
1171111711
11712BlockExpr &lt;- BlockLabel? Block
11712BlockExpr <- BlockLabel? Block
1171311713
1171411714# *** Expression Level ***
11715AssignExpr &lt;- Expr (AssignOp Expr)?
11715AssignExpr <- Expr (AssignOp Expr)?
1171611716
11717Expr &lt;- BoolOrExpr
11717Expr <- 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* PrimaryExpr
11733PrefixExpr <- PrefixOp* PrimaryExpr
1173411734
1173511735PrimaryExpr
11736 &lt;- AsmExpr
11736 <- AsmExpr
1173711737 / IfExpr
1173811738 / KEYWORD_break BreakLabel? Expr?
1173911739 / KEYWORD_comptime Expr
......@@ -11745,33 +11745,33 @@ PrimaryExpr
1174511745 / Block
1174611746 / CurlySuffixExpr
1174711747
11748IfExpr &lt;- IfPrefix Expr (KEYWORD_else Payload? Expr)?
11748IfExpr <- IfPrefix Expr (KEYWORD_else Payload? Expr)?
1174911749
11750Block &lt;- LBRACE Statement* RBRACE
11750Block <- 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
1176011760InitList
11761 &lt;- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
11761 <- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
1176211762 / LBRACE Expr (COMMA Expr)* COMMA? RBRACE
1176311763 / LBRACE RBRACE
1176411764
11765TypeExpr &lt;- PrefixTypeOp* ErrorUnionExpr
11765TypeExpr <- PrefixTypeOp* ErrorUnionExpr
1176611766
11767ErrorUnionExpr &lt;- SuffixExpr (EXCLAMATIONMARK TypeExpr)?
11767ErrorUnionExpr <- SuffixExpr (EXCLAMATIONMARK TypeExpr)?
1176811768
1176911769SuffixExpr
11770 &lt;- KEYWORD_async PrimaryTypeExpr SuffixOp* FnCallArguments
11770 <- KEYWORD_async PrimaryTypeExpr SuffixOp* FnCallArguments
1177111771 / PrimaryTypeExpr (SuffixOp / FnCallArguments)*
1177211772
1177311773PrimaryTypeExpr
11774 &lt;- BUILTINIDENTIFIER FnCallArguments
11774 <- BUILTINIDENTIFIER FnCallArguments
1177511775 / CHAR_LITERAL
1177611776 / ContainerDecl
1177711777 / DOT IDENTIFIER
......@@ -11791,94 +11791,93 @@ PrimaryTypeExpr
1179111791 / STRINGLITERAL
1179211792 / SwitchExpr
1179311793
11794ContainerDecl &lt;- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto
11794ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto
1179511795
11796ErrorSetDecl &lt;- KEYWORD_error LBRACE IdentifierList RBRACE
11796ErrorSetDecl <- KEYWORD_error LBRACE IdentifierList RBRACE
1179711797
11798GroupedExpr &lt;- LPAREN Expr RPAREN
11798GroupedExpr <- LPAREN Expr RPAREN
1179911799
11800IfTypeExpr &lt;- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
11800IfTypeExpr <- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
1180111801
1180211802LabeledTypeExpr
11803 &lt;- BlockLabel Block
11803 <- BlockLabel Block
1180411804 / 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 RBRACE
11812SwitchExpr <- KEYWORD_switch LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE
1181311813
1181411814# *** Assembly ***
11815AsmExpr &lt;- KEYWORD_asm KEYWORD_volatile? LPAREN Expr AsmOutput? RPAREN
11815AsmExpr <- 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) RPAREN
11819AsmOutputItem <- 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 RPAREN
11823AsmInputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN Expr RPAREN
1182411824
11825AsmClobbers &lt;- COLON StringList
11825AsmClobbers <- COLON StringList
1182611826
1182711827# *** Helper grammar ***
11828BreakLabel &lt;- COLON IDENTIFIER
11828BreakLabel <- COLON IDENTIFIER
1182911829
11830BlockLabel &lt;- IDENTIFIER COLON
11830BlockLabel <- IDENTIFIER COLON
1183111831
11832FieldInit &lt;- DOT IDENTIFIER EQUAL Expr
11832FieldInit <- DOT IDENTIFIER EQUAL Expr
1183311833
11834WhileContinueExpr &lt;- COLON LPAREN AssignExpr RPAREN
11834WhileContinueExpr <- COLON LPAREN AssignExpr RPAREN
1183511835
11836LinkSection &lt;- KEYWORD_linksection LPAREN Expr RPAREN
11836LinkSection <- KEYWORD_linksection LPAREN Expr RPAREN
1183711837
1183811838# Fn specific
11839CallConv &lt;- KEYWORD_callconv LPAREN Expr RPAREN
11839CallConv <- KEYWORD_callconv LPAREN Expr RPAREN
1184011840
1184111841ParamDecl
11842 &lt;- doc_comment? (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType
11842 <- doc_comment? (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType
1184311843 / DOT3
1184411844
1184511845ParamType
11846 &lt;- KEYWORD_anytype
11846 <- KEYWORD_anytype
1184711847 / TypeExpr
1184811848
1184911849# 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 PtrIndexPayload
11854ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload
1185511855
1185611856# Payloads
11857Payload &lt;- PIPE IDENTIFIER PIPE
11857Payload <- PIPE IDENTIFIER PIPE
1185811858
11859PtrPayload &lt;- PIPE ASTERISK? IDENTIFIER PIPE
11859PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE
1186011860
11861PtrIndexPayload &lt;- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
11861PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
1186211862
1186311863
1186411864# Switch specific
11865SwitchProng &lt;- SwitchCase EQUALRARROW PtrPayload? AssignExpr
11865SwitchProng <- SwitchCase EQUALRARROW PtrPayload? AssignExpr
1186611866
1186711867SwitchCase
11868 &lt;- SwitchItem (COMMA SwitchItem)* COMMA?
11868 <- SwitchItem (COMMA SwitchItem)* COMMA?
1186911869 / KEYWORD_else
1187011870
11871SwitchItem &lt;- Expr (DOT3 Expr)?
11871SwitchItem <- Expr (DOT3 Expr)?
1187211872
1187311873# Operators
1187411874AssignOp
11875 &lt;- ASTERISKEQUAL
11875 <- ASTERISKEQUAL
1187611876 / SLASHEQUAL
1187711877 / PERCENTEQUAL
1187811878 / PLUSEQUAL
1187911879 / MINUSEQUAL
1188011880 / LARROW2EQUAL
11881 / LARROW2PIPEEQUAL
1188211881 / RARROW2EQUAL
1188311882 / AMPERSANDEQUAL
1188411883 / CARETEQUAL
......@@ -11889,7 +11888,7 @@ AssignOp
1188911888 / EQUAL
1189011889
1189111890CompareOp
11892 &lt;- EQUALEQUAL
11891 <- EQUALEQUAL
1189311892 / EXCLAMATIONMARKEQUAL
1189411893 / LARROW
1189511894 / RARROW
......@@ -11897,36 +11896,33 @@ CompareOp
1189711896 / RARROWEQUAL
1189811897
1189911898BitwiseOp
11900 &lt;- AMPERSAND
11899 <- AMPERSAND
1190111900 / CARET
1190211901 / PIPE
1190311902 / KEYWORD_orelse
1190411903 / KEYWORD_catch Payload?
1190511904
1190611905BitShiftOp
11907 &lt;- LARROW2
11906 <- LARROW2
1190811907 / RARROW2
1190911908
1191011909AdditionOp
11911 &lt;- PLUS
11910 <- PLUS
1191211911 / MINUS
1191311912 / PLUS2
1191411913 / PLUSPERCENT
1191511914 / MINUSPERCENT
11916 / PLUSPIPE
11917 / MINUSPIPE
1191811915
1191911916MultiplyOp
11920 &lt;- PIPE2
11917 <- PIPE2
1192111918 / ASTERISK
1192211919 / SLASH
1192311920 / PERCENT
1192411921 / ASTERISK2
1192511922 / ASTERISKPERCENT
11926 / ASTERISKPIPE
1192711923
1192811924PrefixOp
11929 &lt;- EXCLAMATIONMARK
11925 <- EXCLAMATIONMARK
1193011926 / MINUS
1193111927 / TILDE
1193211928 / MINUSPERCENT
......@@ -11935,86 +11931,86 @@ PrefixOp
1193511931 / KEYWORD_await
1193611932
1193711933PrefixTypeOp
11938 &lt;- QUESTIONMARK
11934 <- QUESTIONMARK
1193911935 / KEYWORD_anyframe MINUSRARROW
1194011936 / SliceTypeStart (ByteAlign / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
1194111937 / PtrTypeStart (KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
1194211938 / ArrayTypeStart
1194311939
1194411940SuffixOp
11945 &lt;- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET
11941 <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET
1194611942 / DOT IDENTIFIER
1194711943 / DOTASTERISK
1194811944 / DOTQUESTIONMARK
1194911945
11950FnCallArguments &lt;- LPAREN ExprList RPAREN
11946FnCallArguments <- LPAREN ExprList RPAREN
1195111947
1195211948# Ptr specific
11953SliceTypeStart &lt;- LBRACKET (COLON Expr)? RBRACKET
11949SliceTypeStart <- LBRACKET (COLON Expr)? RBRACKET
1195411950
1195511951PtrTypeStart
11956 &lt;- ASTERISK
11952 <- ASTERISK
1195711953 / ASTERISK2
1195811954 / LBRACKET ASTERISK (LETTERC / COLON Expr)? RBRACKET
1195911955
11960ArrayTypeStart &lt;- LBRACKET Expr (COLON Expr)? RBRACKET
11956ArrayTypeStart <- LBRACKET Expr (COLON Expr)? RBRACKET
1196111957
1196211958# ContainerDecl specific
11963ContainerDeclAuto &lt;- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE
11959ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE
1196411960
1196511961ContainerDeclType
11966 &lt;- KEYWORD_struct
11962 <- KEYWORD_struct
1196711963 / KEYWORD_opaque
1196811964 / KEYWORD_enum (LPAREN Expr RPAREN)?
1196911965 / KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)?
1197011966
1197111967# Alignment
11972ByteAlign &lt;- KEYWORD_align LPAREN Expr RPAREN
11968ByteAlign <- KEYWORD_align LPAREN Expr RPAREN
1197311969
1197411970# 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
1198911985# *** Tokens ***
11990eof &lt;- !.
11991bin &lt;- [01]
11992bin_ &lt;- '_'? bin
11993oct &lt;- [0-7]
11994oct_ &lt;- '_'? oct
11995hex &lt;- [0-9a-fA-F]
11996hex_ &lt;- '_'? hex
11997dec &lt;- [0-9]
11998dec_ &lt;- '_'? dec
11999
12000bin_int &lt;- bin bin_*
12001oct_int &lt;- oct oct_*
12002dec_int &lt;- dec dec_*
12003hex_int &lt;- hex hex_*
12004
12005ox80_oxBF &lt;- [\200-\277]
12006oxF4 &lt;- '\364'
12007ox80_ox8F &lt;- [\200-\217]
12008oxF1_oxF3 &lt;- [\361-\363]
12009oxF0 &lt;- '\360'
12010ox90_0xBF &lt;- [\220-\277]
12011oxEE_oxEF &lt;- [\356-\357]
12012oxED &lt;- '\355'
12013ox80_ox9F &lt;- [\200-\237]
12014oxE1_oxEC &lt;- [\341-\354]
12015oxE0 &lt;- '\340'
12016oxA0_oxBF &lt;- [\240-\277]
12017oxC2_oxDF &lt;- [\302-\337]
11986eof <- !.
11987bin <- [01]
11988bin_ <- '_'? bin
11989oct <- [0-7]
11990oct_ <- '_'? oct
11991hex <- [0-9a-fA-F]
11992hex_ <- '_'? hex
11993dec <- [0-9]
11994dec_ <- '_'? dec
11995
11996bin_int <- bin bin_*
11997oct_int <- oct oct_*
11998dec_int <- dec dec_*
11999hex_int <- hex hex_*
12000
12001ox80_oxBF <- [\200-\277]
12002oxF4 <- '\364'
12003ox80_ox8F <- [\200-\217]
12004oxF1_oxF3 <- [\361-\363]
12005oxF0 <- '\360'
12006ox90_0xBF <- [\220-\277]
12007oxEE_oxEF <- [\356-\357]
12008oxED <- '\355'
12009ox80_ox9F <- [\200-\237]
12010oxE1_oxEC <- [\341-\354]
12011oxE0 <- '\340'
12012oxA0_oxBF <- [\240-\277]
12013oxC2_oxDF <- [\302-\337]
1201812014
1201912015# From https://lemire.me/blog/2018/05/09/how-quickly-can-you-check-that-a-string-is-valid-unicode-utf-8/
1202012016# First Byte Second Byte Third Byte Fourth Byte
......@@ -12028,7 +12024,7 @@ oxC2_oxDF &lt;- [\302-\337]
1202812024# [0xF1,0xF3] [0x80,0xBF] [0x80,0xBF] [0x80,0xBF]
1202912025# 0xF4 [0x80,0x8F] [0x80,0xBF] [0x80,0xBF]
1203012026
12031mb_utf8_literal &lt;-
12027mb_utf8_literal <-
1203212028 oxF4 ox80_ox8F ox80_oxBF ox80_oxBF
1203312029 / oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF
1203412030 / oxF0 ox90_0xBF ox80_oxBF ox80_oxBF
......@@ -12038,164 +12034,156 @@ mb_utf8_literal &lt;-
1203812034 / oxE0 oxA0_oxBF ox80_oxBF
1203912035 / 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
1204312039char_escape
12044 &lt;- &quot;\\x&quot; hex hex
12045 / &quot;\\u{&quot; hex+ &quot;}&quot;
12046 / &quot;\\&quot; [nr\\t'&quot;]
12040 <- "\\x" hex hex
12041 / "\\u{" hex+ "}"
12042 / "\\" [nr\\t'"]
1204712043char_char
12048 &lt;- mb_utf8_literal
12044 <- mb_utf8_literal
1204912045 / char_escape
1205012046 / ascii_char_not_nl_slash_squote
1205112047
1205212048string_char
12053 &lt;- char_escape
12054 / [^\\&quot;\n]
12049 <- char_escape
12050 / [^\\"\n]
1205512051
12056container_doc_comment &lt;- ('//!' [^\n]* [ \n]*)+
12057doc_comment &lt;- ('///' [^\n]* [ \n]*)+
12058line_comment &lt;- '//' ![!/][^\n]* / '////' [^\n]*
12059line_string &lt;- (&quot;\\\\&quot; [^\n]* [ \n]*)+
12060skip &lt;- ([ \n] / line_comment)*
12052container_doc_comment <- ('//!' [^\n]* [ \n]*)+
12053doc_comment <- ('///' [^\n]* [ \n]*)+
12054line_comment <- '//' ![!/][^\n]* / '////' [^\n]*
12055line_string <- ("\\\\" [^\n]* [ \n]*)+
12056skip <- ([ \n] / line_comment)*
1206112057
12062CHAR_LITERAL &lt;- &quot;'&quot; char_char &quot;'&quot; skip
12058CHAR_LITERAL <- "'" char_char "'" skip
1206312059FLOAT
12064 &lt;- &quot;0x&quot; hex_int &quot;.&quot; hex_int ([pP] [-+]? dec_int)? skip
12065 / dec_int &quot;.&quot; dec_int ([eE] [-+]? dec_int)? skip
12066 / &quot;0x&quot; hex_int &quot;.&quot;? [pP] [-+]? dec_int skip
12067 / dec_int &quot;.&quot;? [eE] [-+]? dec_int skip
12060 <- "0x" hex_int "." hex_int ([pP] [-+]? dec_int)? skip
12061 / dec_int "." dec_int ([eE] [-+]? dec_int)? skip
12062 / "0x" hex_int [pP] [-+]? dec_int skip
12063 / dec_int [eE] [-+]? dec_int skip
1206812064INTEGER
12069 &lt;- &quot;0b&quot; bin_int skip
12070 / &quot;0o&quot; oct_int skip
12071 / &quot;0x&quot; hex_int skip
12065 <- "0b" bin_int skip
12066 / "0o" oct_int skip
12067 / "0x" hex_int skip
1207212068 / dec_int skip
12073STRINGLITERALSINGLE &lt;- &quot;\&quot;&quot; string_char* &quot;\&quot;&quot; skip
12069STRINGLITERALSINGLE <- "\"" string_char* "\"" skip
1207412070STRINGLITERAL
12075 &lt;- STRINGLITERALSINGLE
12071 <- STRINGLITERALSINGLE
1207612072 / (line_string skip)+
1207712073IDENTIFIER
12078 &lt;- !keyword [A-Za-z_] [A-Za-z0-9_]* skip
12079 / &quot;@\&quot;&quot; string_char* &quot;\&quot;&quot; skip
12080BUILTINIDENTIFIER &lt;- &quot;@&quot;[A-Za-z_][A-Za-z0-9_]* skip
12081
12082
12083AMPERSAND &lt;- '&amp;' ![=] skip
12084AMPERSANDEQUAL &lt;- '&amp;=' skip
12085ASTERISK &lt;- '*' ![*%=] skip
12086ASTERISK2 &lt;- '**' skip
12087ASTERISKEQUAL &lt;- '*=' skip
12088ASTERISKPERCENT &lt;- '*%' ![=] skip
12089ASTERISKPERCENTEQUAL &lt;- '*%=' skip
12090ASTERISKPIPE &lt;- '*|' ![=] skip
12091ASTERISKPIPEEQUAL &lt;- '*|=' skip
12092CARET &lt;- '^' ![=] skip
12093CARETEQUAL &lt;- '^=' skip
12094COLON &lt;- ':' skip
12095COMMA &lt;- ',' skip
12096DOT &lt;- '.' ![*.?] skip
12097DOT2 &lt;- '..' ![.] skip
12098DOT3 &lt;- '...' skip
12099DOTASTERISK &lt;- '.*' skip
12100DOTQUESTIONMARK &lt;- '.?' skip
12101EQUAL &lt;- '=' ![&gt;=] skip
12102EQUALEQUAL &lt;- '==' skip
12103EQUALRARROW &lt;- '=&gt;' skip
12104EXCLAMATIONMARK &lt;- '!' ![=] skip
12105EXCLAMATIONMARKEQUAL &lt;- '!=' skip
12106LARROW &lt;- '&lt;' ![&lt;=] skip
12107LARROW2 &lt;- '&lt;&lt;' ![=] skip
12108LARROW2PIPE &lt;- '&lt;&lt;|' ![=] skip
12109LARROW2PIPEEQUAL &lt;- '&lt;&lt;|=' ![=] skip
12110LARROW2EQUAL &lt;- '&lt;&lt;=' skip
12111LARROWEQUAL &lt;- '&lt;=' skip
12112LBRACE &lt;- '{' skip
12113LBRACKET &lt;- '[' skip
12114LPAREN &lt;- '(' skip
12115MINUS &lt;- '-' ![%=&gt;] skip
12116MINUSEQUAL &lt;- '-=' skip
12117MINUSPERCENT &lt;- '-%' ![=] skip
12118MINUSPERCENTEQUAL &lt;- '-%=' skip
12119MINUSPIPE &lt;- '-|' ![=] skip
12120MINUSPIPEEQUAL &lt;- '-|=' skip
12121MINUSRARROW &lt;- '-&gt;' skip
12122PERCENT &lt;- '%' ![=] skip
12123PERCENTEQUAL &lt;- '%=' skip
12124PIPE &lt;- '|' ![|=] skip
12125PIPE2 &lt;- '||' skip
12126PIPEEQUAL &lt;- '|=' skip
12127PLUS &lt;- '+' ![%+=] skip
12128PLUS2 &lt;- '++' skip
12129PLUSEQUAL &lt;- '+=' skip
12130PLUSPERCENT &lt;- '+%' ![=] skip
12131PLUSPERCENTEQUAL &lt;- '+%=' skip
12132PLUSPIPE &lt;- '+|' ![=] skip
12133PLUSPIPEEQUAL &lt;- '+|=' skip
12134LETTERC &lt;- 'c' skip
12135QUESTIONMARK &lt;- '?' skip
12136RARROW &lt;- '&gt;' ![&gt;=] skip
12137RARROW2 &lt;- '&gt;&gt;' ![=] skip
12138RARROW2EQUAL &lt;- '&gt;&gt;=' skip
12139RARROWEQUAL &lt;- '&gt;=' skip
12140RBRACE &lt;- '}' skip
12141RBRACKET &lt;- ']' skip
12142RPAREN &lt;- ')' skip
12143SEMICOLON &lt;- ';' skip
12144SLASH &lt;- '/' ![=] skip
12145SLASHEQUAL &lt;- '/=' skip
12146TILDE &lt;- '~' skip
12147
12148end_of_word &lt;- ![a-zA-Z0-9_] skip
12149KEYWORD_align &lt;- 'align' end_of_word
12150KEYWORD_allowzero &lt;- 'allowzero' end_of_word
12151KEYWORD_and &lt;- 'and' end_of_word
12152KEYWORD_anyframe &lt;- 'anyframe' end_of_word
12153KEYWORD_anytype &lt;- 'anytype' end_of_word
12154KEYWORD_asm &lt;- 'asm' end_of_word
12155KEYWORD_async &lt;- 'async' end_of_word
12156KEYWORD_await &lt;- 'await' end_of_word
12157KEYWORD_break &lt;- 'break' end_of_word
12158KEYWORD_callconv &lt;- 'callconv' end_of_word
12159KEYWORD_catch &lt;- 'catch' end_of_word
12160KEYWORD_comptime &lt;- 'comptime' end_of_word
12161KEYWORD_const &lt;- 'const' end_of_word
12162KEYWORD_continue &lt;- 'continue' end_of_word
12163KEYWORD_defer &lt;- 'defer' end_of_word
12164KEYWORD_else &lt;- 'else' end_of_word
12165KEYWORD_enum &lt;- 'enum' end_of_word
12166KEYWORD_errdefer &lt;- 'errdefer' end_of_word
12167KEYWORD_error &lt;- 'error' end_of_word
12168KEYWORD_export &lt;- 'export' end_of_word
12169KEYWORD_extern &lt;- 'extern' end_of_word
12170KEYWORD_fn &lt;- 'fn' end_of_word
12171KEYWORD_for &lt;- 'for' end_of_word
12172KEYWORD_if &lt;- 'if' end_of_word
12173KEYWORD_inline &lt;- 'inline' end_of_word
12174KEYWORD_noalias &lt;- 'noalias' end_of_word
12175KEYWORD_nosuspend &lt;- 'nosuspend' end_of_word
12176KEYWORD_noinline &lt;- 'noinline' end_of_word
12177KEYWORD_opaque &lt;- 'opaque' end_of_word
12178KEYWORD_or &lt;- 'or' end_of_word
12179KEYWORD_orelse &lt;- 'orelse' end_of_word
12180KEYWORD_packed &lt;- 'packed' end_of_word
12181KEYWORD_pub &lt;- 'pub' end_of_word
12182KEYWORD_resume &lt;- 'resume' end_of_word
12183KEYWORD_return &lt;- 'return' end_of_word
12184KEYWORD_linksection &lt;- 'linksection' end_of_word
12185KEYWORD_struct &lt;- 'struct' end_of_word
12186KEYWORD_suspend &lt;- 'suspend' end_of_word
12187KEYWORD_switch &lt;- 'switch' end_of_word
12188KEYWORD_test &lt;- 'test' end_of_word
12189KEYWORD_threadlocal &lt;- 'threadlocal' end_of_word
12190KEYWORD_try &lt;- 'try' end_of_word
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
12074 <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip
12075 / "@\"" string_char* "\"" skip
12076BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip
12077
12078
12079AMPERSAND <- '&' ![=] skip
12080AMPERSANDEQUAL <- '&=' skip
12081ASTERISK <- '*' ![*%=] skip
12082ASTERISK2 <- '**' skip
12083ASTERISKEQUAL <- '*=' skip
12084ASTERISKPERCENT <- '*%' ![=] skip
12085ASTERISKPERCENTEQUAL <- '*%=' skip
12086CARET <- '^' ![=] skip
12087CARETEQUAL <- '^=' skip
12088COLON <- ':' skip
12089COMMA <- ',' skip
12090DOT <- '.' ![*.?] skip
12091DOT2 <- '..' ![.] skip
12092DOT3 <- '...' skip
12093DOTASTERISK <- '.*' skip
12094DOTQUESTIONMARK <- '.?' skip
12095EQUAL <- '=' ![>=] skip
12096EQUALEQUAL <- '==' skip
12097EQUALRARROW <- '=>' skip
12098EXCLAMATIONMARK <- '!' ![=] skip
12099EXCLAMATIONMARKEQUAL <- '!=' skip
12100LARROW <- '<' ![<=] skip
12101LARROW2 <- '<<' ![=] skip
12102LARROW2EQUAL <- '<<=' skip
12103LARROWEQUAL <- '<=' skip
12104LBRACE <- '{' skip
12105LBRACKET <- '[' skip
12106LPAREN <- '(' skip
12107MINUS <- '-' ![%=>] skip
12108MINUSEQUAL <- '-=' skip
12109MINUSPERCENT <- '-%' ![=] skip
12110MINUSPERCENTEQUAL <- '-%=' skip
12111MINUSRARROW <- '->' skip
12112PERCENT <- '%' ![=] skip
12113PERCENTEQUAL <- '%=' skip
12114PIPE <- '|' ![|=] skip
12115PIPE2 <- '||' skip
12116PIPEEQUAL <- '|=' skip
12117PLUS <- '+' ![%+=] skip
12118PLUS2 <- '++' skip
12119PLUSEQUAL <- '+=' skip
12120PLUSPERCENT <- '+%' ![=] skip
12121PLUSPERCENTEQUAL <- '+%=' skip
12122LETTERC <- 'c' skip
12123QUESTIONMARK <- '?' skip
12124RARROW <- '>' ![>=] skip
12125RARROW2 <- '>>' ![=] skip
12126RARROW2EQUAL <- '>>=' skip
12127RARROWEQUAL <- '>=' skip
12128RBRACE <- '}' skip
12129RBRACKET <- ']' skip
12130RPAREN <- ')' skip
12131SEMICOLON <- ';' skip
12132SLASH <- '/' ![=] skip
12133SLASHEQUAL <- '/=' skip
12134TILDE <- '~' skip
12135
12136end_of_word <- ![a-zA-Z0-9_] skip
12137KEYWORD_align <- 'align' end_of_word
12138KEYWORD_allowzero <- 'allowzero' end_of_word
12139KEYWORD_and <- 'and' end_of_word
12140KEYWORD_anyframe <- 'anyframe' end_of_word
12141KEYWORD_anytype <- 'anytype' end_of_word
12142KEYWORD_asm <- 'asm' end_of_word
12143KEYWORD_async <- 'async' end_of_word
12144KEYWORD_await <- 'await' end_of_word
12145KEYWORD_break <- 'break' end_of_word
12146KEYWORD_callconv <- 'callconv' end_of_word
12147KEYWORD_catch <- 'catch' end_of_word
12148KEYWORD_comptime <- 'comptime' end_of_word
12149KEYWORD_const <- 'const' end_of_word
12150KEYWORD_continue <- 'continue' end_of_word
12151KEYWORD_defer <- 'defer' end_of_word
12152KEYWORD_else <- 'else' end_of_word
12153KEYWORD_enum <- 'enum' end_of_word
12154KEYWORD_errdefer <- 'errdefer' end_of_word
12155KEYWORD_error <- 'error' end_of_word
12156KEYWORD_export <- 'export' end_of_word
12157KEYWORD_extern <- 'extern' end_of_word
12158KEYWORD_fn <- 'fn' end_of_word
12159KEYWORD_for <- 'for' end_of_word
12160KEYWORD_if <- 'if' end_of_word
12161KEYWORD_inline <- 'inline' end_of_word
12162KEYWORD_noalias <- 'noalias' end_of_word
12163KEYWORD_nosuspend <- 'nosuspend' end_of_word
12164KEYWORD_noinline <- 'noinline' end_of_word
12165KEYWORD_opaque <- 'opaque' end_of_word
12166KEYWORD_or <- 'or' end_of_word
12167KEYWORD_orelse <- 'orelse' end_of_word
12168KEYWORD_packed <- 'packed' end_of_word
12169KEYWORD_pub <- 'pub' end_of_word
12170KEYWORD_resume <- 'resume' end_of_word
12171KEYWORD_return <- 'return' end_of_word
12172KEYWORD_linksection <- 'linksection' end_of_word
12173KEYWORD_struct <- 'struct' end_of_word
12174KEYWORD_suspend <- 'suspend' end_of_word
12175KEYWORD_switch <- 'switch' end_of_word
12176KEYWORD_test <- 'test' end_of_word
12177KEYWORD_threadlocal <- 'threadlocal' end_of_word
12178KEYWORD_try <- 'try' end_of_word
12179KEYWORD_union <- 'union' end_of_word
12180KEYWORD_unreachable <- 'unreachable' end_of_word
12181KEYWORD_usingnamespace <- 'usingnamespace' end_of_word
12182KEYWORD_var <- 'var' end_of_word
12183KEYWORD_volatile <- 'volatile' end_of_word
12184KEYWORD_while <- 'while' end_of_word
12185
12186keyword <- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe
1219912187 / KEYWORD_anytype / KEYWORD_asm / KEYWORD_async / KEYWORD_await
1220012188 / KEYWORD_break / KEYWORD_callconv / KEYWORD_catch / KEYWORD_comptime
1220112189 / KEYWORD_const / KEYWORD_continue / KEYWORD_defer / KEYWORD_else
......@@ -12204,9 +12192,8 @@ keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe
1220412192 / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline
1220512193 / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed
1220612194 / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection
12207 / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch
12208 / KEYWORD_test / KEYWORD_threadlocal / KEYWORD_try
12209 / KEYWORD_union / KEYWORD_unreachable
12195 / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test
12196 / KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable
1221012197 / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while
1221112198{#end_syntax_block#}
1221212199 {#header_close#}