| ... | ... | @@ -11650,35 +11650,35 @@ fn readU32Be() u32 {} |
| 11650 | 11650 | {#header_close#} |
| 11651 | 11651 | |
| 11652 | 11652 | {#header_open|Grammar#} |
| 11653 | | {#syntax_block|peg|zig.peg#}Root <- skip container_doc_comment? ContainerMembers eof |
| 11653 | {#syntax_block|peg|grammar.y#}Root <- skip container_doc_comment? ContainerMembers eof |
| 11654 | 11654 | |
| 11655 | 11655 | # *** Top level *** |
| 11656 | | ContainerMembers &lt;- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations) |
| 11656 | ContainerMembers <- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations) |
| 11657 | 11657 | |
| 11658 | 11658 | ContainerDeclarations |
| 11659 | | &lt;- TestDecl ContainerDeclarations |
| 11659 | <- TestDecl ContainerDeclarations |
| 11660 | 11660 | / TopLevelComptime ContainerDeclarations |
| 11661 | 11661 | / doc_comment? KEYWORD_pub? TopLevelDecl ContainerDeclarations |
| 11662 | 11662 | / |
| 11663 | 11663 | |
| 11664 | | TestDecl &lt;- doc_comment? KEYWORD_test STRINGLITERALSINGLE? Block |
| 11664 | TestDecl <- doc_comment? KEYWORD_test STRINGLITERALSINGLE? Block |
| 11665 | 11665 | |
| 11666 | | TopLevelComptime &lt;- doc_comment? KEYWORD_comptime BlockExpr |
| 11666 | TopLevelComptime <- doc_comment? KEYWORD_comptime BlockExpr |
| 11667 | 11667 | |
| 11668 | 11668 | TopLevelDecl |
| 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 | 11670 | / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl |
| 11671 | 11671 | / KEYWORD_usingnamespace Expr SEMICOLON |
| 11672 | 11672 | |
| 11673 | | FnProto &lt;- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr |
| 11673 | FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr |
| 11674 | 11674 | |
| 11675 | | VarDecl &lt;- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? LinkSection? (EQUAL Expr)? SEMICOLON |
| 11675 | VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? LinkSection? (EQUAL Expr)? SEMICOLON |
| 11676 | 11676 | |
| 11677 | | ContainerField &lt;- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON (KEYWORD_anytype / TypeExpr) ByteAlign?)? (EQUAL Expr)? |
| 11677 | ContainerField <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON (KEYWORD_anytype / TypeExpr) ByteAlign?)? (EQUAL Expr)? |
| 11678 | 11678 | |
| 11679 | 11679 | # *** Block Level *** |
| 11680 | 11680 | Statement |
| 11681 | | &lt;- KEYWORD_comptime? VarDecl |
| 11681 | <- KEYWORD_comptime? VarDecl |
| 11682 | 11682 | / KEYWORD_comptime BlockExprStatement |
| 11683 | 11683 | / KEYWORD_nosuspend BlockExprStatement |
| 11684 | 11684 | / KEYWORD_suspend BlockExprStatement |
| ... | ... | @@ -11690,50 +11690,50 @@ Statement |
| 11690 | 11690 | / AssignExpr SEMICOLON |
| 11691 | 11691 | |
| 11692 | 11692 | IfStatement |
| 11693 | | &lt;- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )? |
| 11693 | <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )? |
| 11694 | 11694 | / IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement ) |
| 11695 | 11695 | |
| 11696 | | LabeledStatement &lt;- BlockLabel? (Block / LoopStatement) |
| 11696 | LabeledStatement <- BlockLabel? (Block / LoopStatement) |
| 11697 | 11697 | |
| 11698 | | LoopStatement &lt;- KEYWORD_inline? (ForStatement / WhileStatement) |
| 11698 | LoopStatement <- KEYWORD_inline? (ForStatement / WhileStatement) |
| 11699 | 11699 | |
| 11700 | 11700 | ForStatement |
| 11701 | | &lt;- ForPrefix BlockExpr ( KEYWORD_else Statement )? |
| 11701 | <- ForPrefix BlockExpr ( KEYWORD_else Statement )? |
| 11702 | 11702 | / ForPrefix AssignExpr ( SEMICOLON / KEYWORD_else Statement ) |
| 11703 | 11703 | |
| 11704 | 11704 | WhileStatement |
| 11705 | | &lt;- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )? |
| 11705 | <- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )? |
| 11706 | 11706 | / WhilePrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement ) |
| 11707 | 11707 | |
| 11708 | 11708 | BlockExprStatement |
| 11709 | | &lt;- BlockExpr |
| 11709 | <- BlockExpr |
| 11710 | 11710 | / AssignExpr SEMICOLON |
| 11711 | 11711 | |
| 11712 | | BlockExpr &lt;- BlockLabel? Block |
| 11712 | BlockExpr <- BlockLabel? Block |
| 11713 | 11713 | |
| 11714 | 11714 | # *** Expression Level *** |
| 11715 | | AssignExpr &lt;- Expr (AssignOp Expr)? |
| 11715 | AssignExpr <- Expr (AssignOp Expr)? |
| 11716 | 11716 | |
| 11717 | | Expr &lt;- BoolOrExpr |
| 11717 | Expr <- BoolOrExpr |
| 11718 | 11718 | |
| 11719 | | BoolOrExpr &lt;- BoolAndExpr (KEYWORD_or BoolAndExpr)* |
| 11719 | BoolOrExpr <- BoolAndExpr (KEYWORD_or BoolAndExpr)* |
| 11720 | 11720 | |
| 11721 | | BoolAndExpr &lt;- CompareExpr (KEYWORD_and CompareExpr)* |
| 11721 | BoolAndExpr <- CompareExpr (KEYWORD_and CompareExpr)* |
| 11722 | 11722 | |
| 11723 | | CompareExpr &lt;- BitwiseExpr (CompareOp BitwiseExpr)? |
| 11723 | CompareExpr <- BitwiseExpr (CompareOp BitwiseExpr)? |
| 11724 | 11724 | |
| 11725 | | BitwiseExpr &lt;- BitShiftExpr (BitwiseOp BitShiftExpr)* |
| 11725 | BitwiseExpr <- BitShiftExpr (BitwiseOp BitShiftExpr)* |
| 11726 | 11726 | |
| 11727 | | BitShiftExpr &lt;- AdditionExpr (BitShiftOp AdditionExpr)* |
| 11727 | BitShiftExpr <- AdditionExpr (BitShiftOp AdditionExpr)* |
| 11728 | 11728 | |
| 11729 | | AdditionExpr &lt;- MultiplyExpr (AdditionOp MultiplyExpr)* |
| 11729 | AdditionExpr <- MultiplyExpr (AdditionOp MultiplyExpr)* |
| 11730 | 11730 | |
| 11731 | | MultiplyExpr &lt;- PrefixExpr (MultiplyOp PrefixExpr)* |
| 11731 | MultiplyExpr <- PrefixExpr (MultiplyOp PrefixExpr)* |
| 11732 | 11732 | |
| 11733 | | PrefixExpr &lt;- PrefixOp* PrimaryExpr |
| 11733 | PrefixExpr <- PrefixOp* PrimaryExpr |
| 11734 | 11734 | |
| 11735 | 11735 | PrimaryExpr |
| 11736 | | &lt;- AsmExpr |
| 11736 | <- AsmExpr |
| 11737 | 11737 | / IfExpr |
| 11738 | 11738 | / KEYWORD_break BreakLabel? Expr? |
| 11739 | 11739 | / KEYWORD_comptime Expr |
| ... | ... | @@ -11745,33 +11745,33 @@ PrimaryExpr |
| 11745 | 11745 | / Block |
| 11746 | 11746 | / CurlySuffixExpr |
| 11747 | 11747 | |
| 11748 | | IfExpr &lt;- IfPrefix Expr (KEYWORD_else Payload? Expr)? |
| 11748 | IfExpr <- IfPrefix Expr (KEYWORD_else Payload? Expr)? |
| 11749 | 11749 | |
| 11750 | | Block &lt;- LBRACE Statement* RBRACE |
| 11750 | Block <- LBRACE Statement* RBRACE |
| 11751 | 11751 | |
| 11752 | | LoopExpr &lt;- KEYWORD_inline? (ForExpr / WhileExpr) |
| 11752 | LoopExpr <- KEYWORD_inline? (ForExpr / WhileExpr) |
| 11753 | 11753 | |
| 11754 | | ForExpr &lt;- ForPrefix Expr (KEYWORD_else Expr)? |
| 11754 | ForExpr <- ForPrefix Expr (KEYWORD_else Expr)? |
| 11755 | 11755 | |
| 11756 | | WhileExpr &lt;- WhilePrefix Expr (KEYWORD_else Payload? Expr)? |
| 11756 | WhileExpr <- WhilePrefix Expr (KEYWORD_else Payload? Expr)? |
| 11757 | 11757 | |
| 11758 | | CurlySuffixExpr &lt;- TypeExpr InitList? |
| 11758 | CurlySuffixExpr <- TypeExpr InitList? |
| 11759 | 11759 | |
| 11760 | 11760 | InitList |
| 11761 | | &lt;- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE |
| 11761 | <- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE |
| 11762 | 11762 | / LBRACE Expr (COMMA Expr)* COMMA? RBRACE |
| 11763 | 11763 | / LBRACE RBRACE |
| 11764 | 11764 | |
| 11765 | | TypeExpr &lt;- PrefixTypeOp* ErrorUnionExpr |
| 11765 | TypeExpr <- PrefixTypeOp* ErrorUnionExpr |
| 11766 | 11766 | |
| 11767 | | ErrorUnionExpr &lt;- SuffixExpr (EXCLAMATIONMARK TypeExpr)? |
| 11767 | ErrorUnionExpr <- SuffixExpr (EXCLAMATIONMARK TypeExpr)? |
| 11768 | 11768 | |
| 11769 | 11769 | SuffixExpr |
| 11770 | | &lt;- KEYWORD_async PrimaryTypeExpr SuffixOp* FnCallArguments |
| 11770 | <- KEYWORD_async PrimaryTypeExpr SuffixOp* FnCallArguments |
| 11771 | 11771 | / PrimaryTypeExpr (SuffixOp / FnCallArguments)* |
| 11772 | 11772 | |
| 11773 | 11773 | PrimaryTypeExpr |
| 11774 | | &lt;- BUILTINIDENTIFIER FnCallArguments |
| 11774 | <- BUILTINIDENTIFIER FnCallArguments |
| 11775 | 11775 | / CHAR_LITERAL |
| 11776 | 11776 | / ContainerDecl |
| 11777 | 11777 | / DOT IDENTIFIER |
| ... | ... | @@ -11791,94 +11791,93 @@ PrimaryTypeExpr |
| 11791 | 11791 | / STRINGLITERAL |
| 11792 | 11792 | / SwitchExpr |
| 11793 | 11793 | |
| 11794 | | ContainerDecl &lt;- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto |
| 11794 | ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto |
| 11795 | 11795 | |
| 11796 | | ErrorSetDecl &lt;- KEYWORD_error LBRACE IdentifierList RBRACE |
| 11796 | ErrorSetDecl <- KEYWORD_error LBRACE IdentifierList RBRACE |
| 11797 | 11797 | |
| 11798 | | GroupedExpr &lt;- LPAREN Expr RPAREN |
| 11798 | GroupedExpr <- LPAREN Expr RPAREN |
| 11799 | 11799 | |
| 11800 | | IfTypeExpr &lt;- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)? |
| 11800 | IfTypeExpr <- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)? |
| 11801 | 11801 | |
| 11802 | 11802 | LabeledTypeExpr |
| 11803 | | &lt;- BlockLabel Block |
| 11803 | <- BlockLabel Block |
| 11804 | 11804 | / BlockLabel? LoopTypeExpr |
| 11805 | 11805 | |
| 11806 | | LoopTypeExpr &lt;- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr) |
| 11806 | LoopTypeExpr <- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr) |
| 11807 | 11807 | |
| 11808 | | ForTypeExpr &lt;- ForPrefix TypeExpr (KEYWORD_else TypeExpr)? |
| 11808 | ForTypeExpr <- ForPrefix TypeExpr (KEYWORD_else TypeExpr)? |
| 11809 | 11809 | |
| 11810 | | WhileTypeExpr &lt;- WhilePrefix TypeExpr (KEYWORD_else Payload? TypeExpr)? |
| 11810 | WhileTypeExpr <- WhilePrefix TypeExpr (KEYWORD_else Payload? TypeExpr)? |
| 11811 | 11811 | |
| 11812 | | SwitchExpr &lt;- KEYWORD_switch LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE |
| 11812 | SwitchExpr <- KEYWORD_switch LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE |
| 11813 | 11813 | |
| 11814 | 11814 | # *** Assembly *** |
| 11815 | | AsmExpr &lt;- KEYWORD_asm KEYWORD_volatile? LPAREN Expr AsmOutput? RPAREN |
| 11815 | AsmExpr <- KEYWORD_asm KEYWORD_volatile? LPAREN Expr AsmOutput? RPAREN |
| 11816 | 11816 | |
| 11817 | | AsmOutput &lt;- COLON AsmOutputList AsmInput? |
| 11817 | AsmOutput <- COLON AsmOutputList AsmInput? |
| 11818 | 11818 | |
| 11819 | | AsmOutputItem &lt;- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN (MINUSRARROW TypeExpr / IDENTIFIER) RPAREN |
| 11819 | AsmOutputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN (MINUSRARROW TypeExpr / IDENTIFIER) RPAREN |
| 11820 | 11820 | |
| 11821 | | AsmInput &lt;- COLON AsmInputList AsmClobbers? |
| 11821 | AsmInput <- COLON AsmInputList AsmClobbers? |
| 11822 | 11822 | |
| 11823 | | AsmInputItem &lt;- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN Expr RPAREN |
| 11823 | AsmInputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN Expr RPAREN |
| 11824 | 11824 | |
| 11825 | | AsmClobbers &lt;- COLON StringList |
| 11825 | AsmClobbers <- COLON StringList |
| 11826 | 11826 | |
| 11827 | 11827 | # *** Helper grammar *** |
| 11828 | | BreakLabel &lt;- COLON IDENTIFIER |
| 11828 | BreakLabel <- COLON IDENTIFIER |
| 11829 | 11829 | |
| 11830 | | BlockLabel &lt;- IDENTIFIER COLON |
| 11830 | BlockLabel <- IDENTIFIER COLON |
| 11831 | 11831 | |
| 11832 | | FieldInit &lt;- DOT IDENTIFIER EQUAL Expr |
| 11832 | FieldInit <- DOT IDENTIFIER EQUAL Expr |
| 11833 | 11833 | |
| 11834 | | WhileContinueExpr &lt;- COLON LPAREN AssignExpr RPAREN |
| 11834 | WhileContinueExpr <- COLON LPAREN AssignExpr RPAREN |
| 11835 | 11835 | |
| 11836 | | LinkSection &lt;- KEYWORD_linksection LPAREN Expr RPAREN |
| 11836 | LinkSection <- KEYWORD_linksection LPAREN Expr RPAREN |
| 11837 | 11837 | |
| 11838 | 11838 | # Fn specific |
| 11839 | | CallConv &lt;- KEYWORD_callconv LPAREN Expr RPAREN |
| 11839 | CallConv <- KEYWORD_callconv LPAREN Expr RPAREN |
| 11840 | 11840 | |
| 11841 | 11841 | ParamDecl |
| 11842 | | &lt;- doc_comment? (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType |
| 11842 | <- doc_comment? (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType |
| 11843 | 11843 | / DOT3 |
| 11844 | 11844 | |
| 11845 | 11845 | ParamType |
| 11846 | | &lt;- KEYWORD_anytype |
| 11846 | <- KEYWORD_anytype |
| 11847 | 11847 | / TypeExpr |
| 11848 | 11848 | |
| 11849 | 11849 | # Control flow prefixes |
| 11850 | | IfPrefix &lt;- KEYWORD_if LPAREN Expr RPAREN PtrPayload? |
| 11850 | IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload? |
| 11851 | 11851 | |
| 11852 | | WhilePrefix &lt;- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr? |
| 11852 | WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr? |
| 11853 | 11853 | |
| 11854 | | ForPrefix &lt;- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload |
| 11854 | ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload |
| 11855 | 11855 | |
| 11856 | 11856 | # Payloads |
| 11857 | | Payload &lt;- PIPE IDENTIFIER PIPE |
| 11857 | Payload <- PIPE IDENTIFIER PIPE |
| 11858 | 11858 | |
| 11859 | | PtrPayload &lt;- PIPE ASTERISK? IDENTIFIER PIPE |
| 11859 | PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE |
| 11860 | 11860 | |
| 11861 | | PtrIndexPayload &lt;- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE |
| 11861 | PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE |
| 11862 | 11862 | |
| 11863 | 11863 | |
| 11864 | 11864 | # Switch specific |
| 11865 | | SwitchProng &lt;- SwitchCase EQUALRARROW PtrPayload? AssignExpr |
| 11865 | SwitchProng <- SwitchCase EQUALRARROW PtrPayload? AssignExpr |
| 11866 | 11866 | |
| 11867 | 11867 | SwitchCase |
| 11868 | | &lt;- SwitchItem (COMMA SwitchItem)* COMMA? |
| 11868 | <- SwitchItem (COMMA SwitchItem)* COMMA? |
| 11869 | 11869 | / KEYWORD_else |
| 11870 | 11870 | |
| 11871 | | SwitchItem &lt;- Expr (DOT3 Expr)? |
| 11871 | SwitchItem <- Expr (DOT3 Expr)? |
| 11872 | 11872 | |
| 11873 | 11873 | # Operators |
| 11874 | 11874 | AssignOp |
| 11875 | | &lt;- ASTERISKEQUAL |
| 11875 | <- ASTERISKEQUAL |
| 11876 | 11876 | / SLASHEQUAL |
| 11877 | 11877 | / PERCENTEQUAL |
| 11878 | 11878 | / PLUSEQUAL |
| 11879 | 11879 | / MINUSEQUAL |
| 11880 | 11880 | / LARROW2EQUAL |
| 11881 | | / LARROW2PIPEEQUAL |
| 11882 | 11881 | / RARROW2EQUAL |
| 11883 | 11882 | / AMPERSANDEQUAL |
| 11884 | 11883 | / CARETEQUAL |
| ... | ... | @@ -11889,7 +11888,7 @@ AssignOp |
| 11889 | 11888 | / EQUAL |
| 11890 | 11889 | |
| 11891 | 11890 | CompareOp |
| 11892 | | &lt;- EQUALEQUAL |
| 11891 | <- EQUALEQUAL |
| 11893 | 11892 | / EXCLAMATIONMARKEQUAL |
| 11894 | 11893 | / LARROW |
| 11895 | 11894 | / RARROW |
| ... | ... | @@ -11897,36 +11896,33 @@ CompareOp |
| 11897 | 11896 | / RARROWEQUAL |
| 11898 | 11897 | |
| 11899 | 11898 | BitwiseOp |
| 11900 | | &lt;- AMPERSAND |
| 11899 | <- AMPERSAND |
| 11901 | 11900 | / CARET |
| 11902 | 11901 | / PIPE |
| 11903 | 11902 | / KEYWORD_orelse |
| 11904 | 11903 | / KEYWORD_catch Payload? |
| 11905 | 11904 | |
| 11906 | 11905 | BitShiftOp |
| 11907 | | &lt;- LARROW2 |
| 11906 | <- LARROW2 |
| 11908 | 11907 | / RARROW2 |
| 11909 | 11908 | |
| 11910 | 11909 | AdditionOp |
| 11911 | | &lt;- PLUS |
| 11910 | <- PLUS |
| 11912 | 11911 | / MINUS |
| 11913 | 11912 | / PLUS2 |
| 11914 | 11913 | / PLUSPERCENT |
| 11915 | 11914 | / MINUSPERCENT |
| 11916 | | / PLUSPIPE |
| 11917 | | / MINUSPIPE |
| 11918 | 11915 | |
| 11919 | 11916 | MultiplyOp |
| 11920 | | &lt;- PIPE2 |
| 11917 | <- PIPE2 |
| 11921 | 11918 | / ASTERISK |
| 11922 | 11919 | / SLASH |
| 11923 | 11920 | / PERCENT |
| 11924 | 11921 | / ASTERISK2 |
| 11925 | 11922 | / ASTERISKPERCENT |
| 11926 | | / ASTERISKPIPE |
| 11927 | 11923 | |
| 11928 | 11924 | PrefixOp |
| 11929 | | &lt;- EXCLAMATIONMARK |
| 11925 | <- EXCLAMATIONMARK |
| 11930 | 11926 | / MINUS |
| 11931 | 11927 | / TILDE |
| 11932 | 11928 | / MINUSPERCENT |
| ... | ... | @@ -11935,86 +11931,86 @@ PrefixOp |
| 11935 | 11931 | / KEYWORD_await |
| 11936 | 11932 | |
| 11937 | 11933 | PrefixTypeOp |
| 11938 | | &lt;- QUESTIONMARK |
| 11934 | <- QUESTIONMARK |
| 11939 | 11935 | / KEYWORD_anyframe MINUSRARROW |
| 11940 | 11936 | / SliceTypeStart (ByteAlign / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)* |
| 11941 | 11937 | / PtrTypeStart (KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)* |
| 11942 | 11938 | / ArrayTypeStart |
| 11943 | 11939 | |
| 11944 | 11940 | SuffixOp |
| 11945 | | &lt;- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET |
| 11941 | <- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET |
| 11946 | 11942 | / DOT IDENTIFIER |
| 11947 | 11943 | / DOTASTERISK |
| 11948 | 11944 | / DOTQUESTIONMARK |
| 11949 | 11945 | |
| 11950 | | FnCallArguments &lt;- LPAREN ExprList RPAREN |
| 11946 | FnCallArguments <- LPAREN ExprList RPAREN |
| 11951 | 11947 | |
| 11952 | 11948 | # Ptr specific |
| 11953 | | SliceTypeStart &lt;- LBRACKET (COLON Expr)? RBRACKET |
| 11949 | SliceTypeStart <- LBRACKET (COLON Expr)? RBRACKET |
| 11954 | 11950 | |
| 11955 | 11951 | PtrTypeStart |
| 11956 | | &lt;- ASTERISK |
| 11952 | <- ASTERISK |
| 11957 | 11953 | / ASTERISK2 |
| 11958 | 11954 | / LBRACKET ASTERISK (LETTERC / COLON Expr)? RBRACKET |
| 11959 | 11955 | |
| 11960 | | ArrayTypeStart &lt;- LBRACKET Expr (COLON Expr)? RBRACKET |
| 11956 | ArrayTypeStart <- LBRACKET Expr (COLON Expr)? RBRACKET |
| 11961 | 11957 | |
| 11962 | 11958 | # ContainerDecl specific |
| 11963 | | ContainerDeclAuto &lt;- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE |
| 11959 | ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE |
| 11964 | 11960 | |
| 11965 | 11961 | ContainerDeclType |
| 11966 | | &lt;- KEYWORD_struct |
| 11962 | <- KEYWORD_struct |
| 11967 | 11963 | / KEYWORD_opaque |
| 11968 | 11964 | / KEYWORD_enum (LPAREN Expr RPAREN)? |
| 11969 | 11965 | / KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)? |
| 11970 | 11966 | |
| 11971 | 11967 | # Alignment |
| 11972 | | ByteAlign &lt;- KEYWORD_align LPAREN Expr RPAREN |
| 11968 | ByteAlign <- KEYWORD_align LPAREN Expr RPAREN |
| 11973 | 11969 | |
| 11974 | 11970 | # Lists |
| 11975 | | IdentifierList &lt;- (doc_comment? IDENTIFIER COMMA)* (doc_comment? IDENTIFIER)? |
| 11971 | IdentifierList <- (doc_comment? IDENTIFIER COMMA)* (doc_comment? IDENTIFIER)? |
| 11976 | 11972 | |
| 11977 | | SwitchProngList &lt;- (SwitchProng COMMA)* SwitchProng? |
| 11973 | SwitchProngList <- (SwitchProng COMMA)* SwitchProng? |
| 11978 | 11974 | |
| 11979 | | AsmOutputList &lt;- (AsmOutputItem COMMA)* AsmOutputItem? |
| 11975 | AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem? |
| 11980 | 11976 | |
| 11981 | | AsmInputList &lt;- (AsmInputItem COMMA)* AsmInputItem? |
| 11977 | AsmInputList <- (AsmInputItem COMMA)* AsmInputItem? |
| 11982 | 11978 | |
| 11983 | | StringList &lt;- (STRINGLITERAL COMMA)* STRINGLITERAL? |
| 11979 | StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL? |
| 11984 | 11980 | |
| 11985 | | ParamDeclList &lt;- (ParamDecl COMMA)* ParamDecl? |
| 11981 | ParamDeclList <- (ParamDecl COMMA)* ParamDecl? |
| 11986 | 11982 | |
| 11987 | | ExprList &lt;- (Expr COMMA)* Expr? |
| 11983 | ExprList <- (Expr COMMA)* Expr? |
| 11988 | 11984 | |
| 11989 | 11985 | # *** Tokens *** |
| 11990 | | eof &lt;- !. |
| 11991 | | bin &lt;- [01] |
| 11992 | | bin_ &lt;- '_'? bin |
| 11993 | | oct &lt;- [0-7] |
| 11994 | | oct_ &lt;- '_'? oct |
| 11995 | | hex &lt;- [0-9a-fA-F] |
| 11996 | | hex_ &lt;- '_'? hex |
| 11997 | | dec &lt;- [0-9] |
| 11998 | | dec_ &lt;- '_'? dec |
| 11999 | | |
| 12000 | | bin_int &lt;- bin bin_* |
| 12001 | | oct_int &lt;- oct oct_* |
| 12002 | | dec_int &lt;- dec dec_* |
| 12003 | | hex_int &lt;- hex hex_* |
| 12004 | | |
| 12005 | | ox80_oxBF &lt;- [\200-\277] |
| 12006 | | oxF4 &lt;- '\364' |
| 12007 | | ox80_ox8F &lt;- [\200-\217] |
| 12008 | | oxF1_oxF3 &lt;- [\361-\363] |
| 12009 | | oxF0 &lt;- '\360' |
| 12010 | | ox90_0xBF &lt;- [\220-\277] |
| 12011 | | oxEE_oxEF &lt;- [\356-\357] |
| 12012 | | oxED &lt;- '\355' |
| 12013 | | ox80_ox9F &lt;- [\200-\237] |
| 12014 | | oxE1_oxEC &lt;- [\341-\354] |
| 12015 | | oxE0 &lt;- '\340' |
| 12016 | | oxA0_oxBF &lt;- [\240-\277] |
| 12017 | | oxC2_oxDF &lt;- [\302-\337] |
| 11986 | eof <- !. |
| 11987 | bin <- [01] |
| 11988 | bin_ <- '_'? bin |
| 11989 | oct <- [0-7] |
| 11990 | oct_ <- '_'? oct |
| 11991 | hex <- [0-9a-fA-F] |
| 11992 | hex_ <- '_'? hex |
| 11993 | dec <- [0-9] |
| 11994 | dec_ <- '_'? dec |
| 11995 | |
| 11996 | bin_int <- bin bin_* |
| 11997 | oct_int <- oct oct_* |
| 11998 | dec_int <- dec dec_* |
| 11999 | hex_int <- hex hex_* |
| 12000 | |
| 12001 | ox80_oxBF <- [\200-\277] |
| 12002 | oxF4 <- '\364' |
| 12003 | ox80_ox8F <- [\200-\217] |
| 12004 | oxF1_oxF3 <- [\361-\363] |
| 12005 | oxF0 <- '\360' |
| 12006 | ox90_0xBF <- [\220-\277] |
| 12007 | oxEE_oxEF <- [\356-\357] |
| 12008 | oxED <- '\355' |
| 12009 | ox80_ox9F <- [\200-\237] |
| 12010 | oxE1_oxEC <- [\341-\354] |
| 12011 | oxE0 <- '\340' |
| 12012 | oxA0_oxBF <- [\240-\277] |
| 12013 | oxC2_oxDF <- [\302-\337] |
| 12018 | 12014 | |
| 12019 | 12015 | # From https://lemire.me/blog/2018/05/09/how-quickly-can-you-check-that-a-string-is-valid-unicode-utf-8/ |
| 12020 | 12016 | # First Byte Second Byte Third Byte Fourth Byte |
| ... | ... | @@ -12028,7 +12024,7 @@ oxC2_oxDF &lt;- [\302-\337] |
| 12028 | 12024 | # [0xF1,0xF3] [0x80,0xBF] [0x80,0xBF] [0x80,0xBF] |
| 12029 | 12025 | # 0xF4 [0x80,0x8F] [0x80,0xBF] [0x80,0xBF] |
| 12030 | 12026 | |
| 12031 | | mb_utf8_literal &lt;- |
| 12027 | mb_utf8_literal <- |
| 12032 | 12028 | oxF4 ox80_ox8F ox80_oxBF ox80_oxBF |
| 12033 | 12029 | / oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF |
| 12034 | 12030 | / oxF0 ox90_0xBF ox80_oxBF ox80_oxBF |
| ... | ... | @@ -12038,164 +12034,156 @@ mb_utf8_literal &lt;- |
| 12038 | 12034 | / oxE0 oxA0_oxBF ox80_oxBF |
| 12039 | 12035 | / oxC2_oxDF ox80_oxBF |
| 12040 | 12036 | |
| 12041 | | ascii_char_not_nl_slash_squote &lt;- [\000-\011\013-\046-\050-\133\135-\177] |
| 12037 | ascii_char_not_nl_slash_squote <- [\000-\011\013-\046-\050-\133\135-\177] |
| 12042 | 12038 | |
| 12043 | 12039 | char_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'"] |
| 12047 | 12043 | char_char |
| 12048 | | &lt;- mb_utf8_literal |
| 12044 | <- mb_utf8_literal |
| 12049 | 12045 | / char_escape |
| 12050 | 12046 | / ascii_char_not_nl_slash_squote |
| 12051 | 12047 | |
| 12052 | 12048 | string_char |
| 12053 | | &lt;- char_escape |
| 12054 | | / [^\\&quot;\n] |
| 12049 | <- char_escape |
| 12050 | / [^\\"\n] |
| 12055 | 12051 | |
| 12056 | | container_doc_comment &lt;- ('//!' [^\n]* [ \n]*)+ |
| 12057 | | doc_comment &lt;- ('///' [^\n]* [ \n]*)+ |
| 12058 | | line_comment &lt;- '//' ![!/][^\n]* / '////' [^\n]* |
| 12059 | | line_string &lt;- (&quot;\\\\&quot; [^\n]* [ \n]*)+ |
| 12060 | | skip &lt;- ([ \n] / line_comment)* |
| 12052 | container_doc_comment <- ('//!' [^\n]* [ \n]*)+ |
| 12053 | doc_comment <- ('///' [^\n]* [ \n]*)+ |
| 12054 | line_comment <- '//' ![!/][^\n]* / '////' [^\n]* |
| 12055 | line_string <- ("\\\\" [^\n]* [ \n]*)+ |
| 12056 | skip <- ([ \n] / line_comment)* |
| 12061 | 12057 | |
| 12062 | | CHAR_LITERAL &lt;- &quot;'&quot; char_char &quot;'&quot; skip |
| 12058 | CHAR_LITERAL <- "'" char_char "'" skip |
| 12063 | 12059 | FLOAT |
| 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 |
| 12068 | 12064 | INTEGER |
| 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 |
| 12072 | 12068 | / dec_int skip |
| 12073 | | STRINGLITERALSINGLE &lt;- &quot;\&quot;&quot; string_char* &quot;\&quot;&quot; skip |
| 12069 | STRINGLITERALSINGLE <- "\"" string_char* "\"" skip |
| 12074 | 12070 | STRINGLITERAL |
| 12075 | | &lt;- STRINGLITERALSINGLE |
| 12071 | <- STRINGLITERALSINGLE |
| 12076 | 12072 | / (line_string skip)+ |
| 12077 | 12073 | IDENTIFIER |
| 12078 | | &lt;- !keyword [A-Za-z_] [A-Za-z0-9_]* skip |
| 12079 | | / &quot;@\&quot;&quot; string_char* &quot;\&quot;&quot; skip |
| 12080 | | BUILTINIDENTIFIER &lt;- &quot;@&quot;[A-Za-z_][A-Za-z0-9_]* skip |
| 12081 | | |
| 12082 | | |
| 12083 | | AMPERSAND &lt;- '&amp;' ![=] skip |
| 12084 | | AMPERSANDEQUAL &lt;- '&amp;=' skip |
| 12085 | | ASTERISK &lt;- '*' ![*%=] skip |
| 12086 | | ASTERISK2 &lt;- '**' skip |
| 12087 | | ASTERISKEQUAL &lt;- '*=' skip |
| 12088 | | ASTERISKPERCENT &lt;- '*%' ![=] skip |
| 12089 | | ASTERISKPERCENTEQUAL &lt;- '*%=' skip |
| 12090 | | ASTERISKPIPE &lt;- '*|' ![=] skip |
| 12091 | | ASTERISKPIPEEQUAL &lt;- '*|=' skip |
| 12092 | | CARET &lt;- '^' ![=] skip |
| 12093 | | CARETEQUAL &lt;- '^=' skip |
| 12094 | | COLON &lt;- ':' skip |
| 12095 | | COMMA &lt;- ',' skip |
| 12096 | | DOT &lt;- '.' ![*.?] skip |
| 12097 | | DOT2 &lt;- '..' ![.] skip |
| 12098 | | DOT3 &lt;- '...' skip |
| 12099 | | DOTASTERISK &lt;- '.*' skip |
| 12100 | | DOTQUESTIONMARK &lt;- '.?' skip |
| 12101 | | EQUAL &lt;- '=' ![&gt;=] skip |
| 12102 | | EQUALEQUAL &lt;- '==' skip |
| 12103 | | EQUALRARROW &lt;- '=&gt;' skip |
| 12104 | | EXCLAMATIONMARK &lt;- '!' ![=] skip |
| 12105 | | EXCLAMATIONMARKEQUAL &lt;- '!=' skip |
| 12106 | | LARROW &lt;- '&lt;' ![&lt;=] skip |
| 12107 | | LARROW2 &lt;- '&lt;&lt;' ![=] skip |
| 12108 | | LARROW2PIPE &lt;- '&lt;&lt;|' ![=] skip |
| 12109 | | LARROW2PIPEEQUAL &lt;- '&lt;&lt;|=' ![=] skip |
| 12110 | | LARROW2EQUAL &lt;- '&lt;&lt;=' skip |
| 12111 | | LARROWEQUAL &lt;- '&lt;=' skip |
| 12112 | | LBRACE &lt;- '{' skip |
| 12113 | | LBRACKET &lt;- '[' skip |
| 12114 | | LPAREN &lt;- '(' skip |
| 12115 | | MINUS &lt;- '-' ![%=&gt;] skip |
| 12116 | | MINUSEQUAL &lt;- '-=' skip |
| 12117 | | MINUSPERCENT &lt;- '-%' ![=] skip |
| 12118 | | MINUSPERCENTEQUAL &lt;- '-%=' skip |
| 12119 | | MINUSPIPE &lt;- '-|' ![=] skip |
| 12120 | | MINUSPIPEEQUAL &lt;- '-|=' skip |
| 12121 | | MINUSRARROW &lt;- '-&gt;' skip |
| 12122 | | PERCENT &lt;- '%' ![=] skip |
| 12123 | | PERCENTEQUAL &lt;- '%=' skip |
| 12124 | | PIPE &lt;- '|' ![|=] skip |
| 12125 | | PIPE2 &lt;- '||' skip |
| 12126 | | PIPEEQUAL &lt;- '|=' skip |
| 12127 | | PLUS &lt;- '+' ![%+=] skip |
| 12128 | | PLUS2 &lt;- '++' skip |
| 12129 | | PLUSEQUAL &lt;- '+=' skip |
| 12130 | | PLUSPERCENT &lt;- '+%' ![=] skip |
| 12131 | | PLUSPERCENTEQUAL &lt;- '+%=' skip |
| 12132 | | PLUSPIPE &lt;- '+|' ![=] skip |
| 12133 | | PLUSPIPEEQUAL &lt;- '+|=' skip |
| 12134 | | LETTERC &lt;- 'c' skip |
| 12135 | | QUESTIONMARK &lt;- '?' skip |
| 12136 | | RARROW &lt;- '&gt;' ![&gt;=] skip |
| 12137 | | RARROW2 &lt;- '&gt;&gt;' ![=] skip |
| 12138 | | RARROW2EQUAL &lt;- '&gt;&gt;=' skip |
| 12139 | | RARROWEQUAL &lt;- '&gt;=' skip |
| 12140 | | RBRACE &lt;- '}' skip |
| 12141 | | RBRACKET &lt;- ']' skip |
| 12142 | | RPAREN &lt;- ')' skip |
| 12143 | | SEMICOLON &lt;- ';' skip |
| 12144 | | SLASH &lt;- '/' ![=] skip |
| 12145 | | SLASHEQUAL &lt;- '/=' skip |
| 12146 | | TILDE &lt;- '~' skip |
| 12147 | | |
| 12148 | | end_of_word &lt;- ![a-zA-Z0-9_] skip |
| 12149 | | KEYWORD_align &lt;- 'align' end_of_word |
| 12150 | | KEYWORD_allowzero &lt;- 'allowzero' end_of_word |
| 12151 | | KEYWORD_and &lt;- 'and' end_of_word |
| 12152 | | KEYWORD_anyframe &lt;- 'anyframe' end_of_word |
| 12153 | | KEYWORD_anytype &lt;- 'anytype' end_of_word |
| 12154 | | KEYWORD_asm &lt;- 'asm' end_of_word |
| 12155 | | KEYWORD_async &lt;- 'async' end_of_word |
| 12156 | | KEYWORD_await &lt;- 'await' end_of_word |
| 12157 | | KEYWORD_break &lt;- 'break' end_of_word |
| 12158 | | KEYWORD_callconv &lt;- 'callconv' end_of_word |
| 12159 | | KEYWORD_catch &lt;- 'catch' end_of_word |
| 12160 | | KEYWORD_comptime &lt;- 'comptime' end_of_word |
| 12161 | | KEYWORD_const &lt;- 'const' end_of_word |
| 12162 | | KEYWORD_continue &lt;- 'continue' end_of_word |
| 12163 | | KEYWORD_defer &lt;- 'defer' end_of_word |
| 12164 | | KEYWORD_else &lt;- 'else' end_of_word |
| 12165 | | KEYWORD_enum &lt;- 'enum' end_of_word |
| 12166 | | KEYWORD_errdefer &lt;- 'errdefer' end_of_word |
| 12167 | | KEYWORD_error &lt;- 'error' end_of_word |
| 12168 | | KEYWORD_export &lt;- 'export' end_of_word |
| 12169 | | KEYWORD_extern &lt;- 'extern' end_of_word |
| 12170 | | KEYWORD_fn &lt;- 'fn' end_of_word |
| 12171 | | KEYWORD_for &lt;- 'for' end_of_word |
| 12172 | | KEYWORD_if &lt;- 'if' end_of_word |
| 12173 | | KEYWORD_inline &lt;- 'inline' end_of_word |
| 12174 | | KEYWORD_noalias &lt;- 'noalias' end_of_word |
| 12175 | | KEYWORD_nosuspend &lt;- 'nosuspend' end_of_word |
| 12176 | | KEYWORD_noinline &lt;- 'noinline' end_of_word |
| 12177 | | KEYWORD_opaque &lt;- 'opaque' end_of_word |
| 12178 | | KEYWORD_or &lt;- 'or' end_of_word |
| 12179 | | KEYWORD_orelse &lt;- 'orelse' end_of_word |
| 12180 | | KEYWORD_packed &lt;- 'packed' end_of_word |
| 12181 | | KEYWORD_pub &lt;- 'pub' end_of_word |
| 12182 | | KEYWORD_resume &lt;- 'resume' end_of_word |
| 12183 | | KEYWORD_return &lt;- 'return' end_of_word |
| 12184 | | KEYWORD_linksection &lt;- 'linksection' end_of_word |
| 12185 | | KEYWORD_struct &lt;- 'struct' end_of_word |
| 12186 | | KEYWORD_suspend &lt;- 'suspend' end_of_word |
| 12187 | | KEYWORD_switch &lt;- 'switch' end_of_word |
| 12188 | | KEYWORD_test &lt;- 'test' end_of_word |
| 12189 | | KEYWORD_threadlocal &lt;- 'threadlocal' end_of_word |
| 12190 | | KEYWORD_try &lt;- 'try' end_of_word |
| 12191 | | KEYWORD_union &lt;- 'union' end_of_word |
| 12192 | | KEYWORD_unreachable &lt;- 'unreachable' end_of_word |
| 12193 | | KEYWORD_usingnamespace &lt;- 'usingnamespace' end_of_word |
| 12194 | | KEYWORD_var &lt;- 'var' end_of_word |
| 12195 | | KEYWORD_volatile &lt;- 'volatile' end_of_word |
| 12196 | | KEYWORD_while &lt;- 'while' end_of_word |
| 12197 | | |
| 12198 | | keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe |
| 12074 | <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip |
| 12075 | / "@\"" string_char* "\"" skip |
| 12076 | BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip |
| 12077 | |
| 12078 | |
| 12079 | AMPERSAND <- '&' ![=] skip |
| 12080 | AMPERSANDEQUAL <- '&=' skip |
| 12081 | ASTERISK <- '*' ![*%=] skip |
| 12082 | ASTERISK2 <- '**' skip |
| 12083 | ASTERISKEQUAL <- '*=' skip |
| 12084 | ASTERISKPERCENT <- '*%' ![=] skip |
| 12085 | ASTERISKPERCENTEQUAL <- '*%=' skip |
| 12086 | CARET <- '^' ![=] skip |
| 12087 | CARETEQUAL <- '^=' skip |
| 12088 | COLON <- ':' skip |
| 12089 | COMMA <- ',' skip |
| 12090 | DOT <- '.' ![*.?] skip |
| 12091 | DOT2 <- '..' ![.] skip |
| 12092 | DOT3 <- '...' skip |
| 12093 | DOTASTERISK <- '.*' skip |
| 12094 | DOTQUESTIONMARK <- '.?' skip |
| 12095 | EQUAL <- '=' ![>=] skip |
| 12096 | EQUALEQUAL <- '==' skip |
| 12097 | EQUALRARROW <- '=>' skip |
| 12098 | EXCLAMATIONMARK <- '!' ![=] skip |
| 12099 | EXCLAMATIONMARKEQUAL <- '!=' skip |
| 12100 | LARROW <- '<' ![<=] skip |
| 12101 | LARROW2 <- '<<' ![=] skip |
| 12102 | LARROW2EQUAL <- '<<=' skip |
| 12103 | LARROWEQUAL <- '<=' skip |
| 12104 | LBRACE <- '{' skip |
| 12105 | LBRACKET <- '[' skip |
| 12106 | LPAREN <- '(' skip |
| 12107 | MINUS <- '-' ![%=>] skip |
| 12108 | MINUSEQUAL <- '-=' skip |
| 12109 | MINUSPERCENT <- '-%' ![=] skip |
| 12110 | MINUSPERCENTEQUAL <- '-%=' skip |
| 12111 | MINUSRARROW <- '->' skip |
| 12112 | PERCENT <- '%' ![=] skip |
| 12113 | PERCENTEQUAL <- '%=' skip |
| 12114 | PIPE <- '|' ![|=] skip |
| 12115 | PIPE2 <- '||' skip |
| 12116 | PIPEEQUAL <- '|=' skip |
| 12117 | PLUS <- '+' ![%+=] skip |
| 12118 | PLUS2 <- '++' skip |
| 12119 | PLUSEQUAL <- '+=' skip |
| 12120 | PLUSPERCENT <- '+%' ![=] skip |
| 12121 | PLUSPERCENTEQUAL <- '+%=' skip |
| 12122 | LETTERC <- 'c' skip |
| 12123 | QUESTIONMARK <- '?' skip |
| 12124 | RARROW <- '>' ![>=] skip |
| 12125 | RARROW2 <- '>>' ![=] skip |
| 12126 | RARROW2EQUAL <- '>>=' skip |
| 12127 | RARROWEQUAL <- '>=' skip |
| 12128 | RBRACE <- '}' skip |
| 12129 | RBRACKET <- ']' skip |
| 12130 | RPAREN <- ')' skip |
| 12131 | SEMICOLON <- ';' skip |
| 12132 | SLASH <- '/' ![=] skip |
| 12133 | SLASHEQUAL <- '/=' skip |
| 12134 | TILDE <- '~' skip |
| 12135 | |
| 12136 | end_of_word <- ![a-zA-Z0-9_] skip |
| 12137 | KEYWORD_align <- 'align' end_of_word |
| 12138 | KEYWORD_allowzero <- 'allowzero' end_of_word |
| 12139 | KEYWORD_and <- 'and' end_of_word |
| 12140 | KEYWORD_anyframe <- 'anyframe' end_of_word |
| 12141 | KEYWORD_anytype <- 'anytype' end_of_word |
| 12142 | KEYWORD_asm <- 'asm' end_of_word |
| 12143 | KEYWORD_async <- 'async' end_of_word |
| 12144 | KEYWORD_await <- 'await' end_of_word |
| 12145 | KEYWORD_break <- 'break' end_of_word |
| 12146 | KEYWORD_callconv <- 'callconv' end_of_word |
| 12147 | KEYWORD_catch <- 'catch' end_of_word |
| 12148 | KEYWORD_comptime <- 'comptime' end_of_word |
| 12149 | KEYWORD_const <- 'const' end_of_word |
| 12150 | KEYWORD_continue <- 'continue' end_of_word |
| 12151 | KEYWORD_defer <- 'defer' end_of_word |
| 12152 | KEYWORD_else <- 'else' end_of_word |
| 12153 | KEYWORD_enum <- 'enum' end_of_word |
| 12154 | KEYWORD_errdefer <- 'errdefer' end_of_word |
| 12155 | KEYWORD_error <- 'error' end_of_word |
| 12156 | KEYWORD_export <- 'export' end_of_word |
| 12157 | KEYWORD_extern <- 'extern' end_of_word |
| 12158 | KEYWORD_fn <- 'fn' end_of_word |
| 12159 | KEYWORD_for <- 'for' end_of_word |
| 12160 | KEYWORD_if <- 'if' end_of_word |
| 12161 | KEYWORD_inline <- 'inline' end_of_word |
| 12162 | KEYWORD_noalias <- 'noalias' end_of_word |
| 12163 | KEYWORD_nosuspend <- 'nosuspend' end_of_word |
| 12164 | KEYWORD_noinline <- 'noinline' end_of_word |
| 12165 | KEYWORD_opaque <- 'opaque' end_of_word |
| 12166 | KEYWORD_or <- 'or' end_of_word |
| 12167 | KEYWORD_orelse <- 'orelse' end_of_word |
| 12168 | KEYWORD_packed <- 'packed' end_of_word |
| 12169 | KEYWORD_pub <- 'pub' end_of_word |
| 12170 | KEYWORD_resume <- 'resume' end_of_word |
| 12171 | KEYWORD_return <- 'return' end_of_word |
| 12172 | KEYWORD_linksection <- 'linksection' end_of_word |
| 12173 | KEYWORD_struct <- 'struct' end_of_word |
| 12174 | KEYWORD_suspend <- 'suspend' end_of_word |
| 12175 | KEYWORD_switch <- 'switch' end_of_word |
| 12176 | KEYWORD_test <- 'test' end_of_word |
| 12177 | KEYWORD_threadlocal <- 'threadlocal' end_of_word |
| 12178 | KEYWORD_try <- 'try' end_of_word |
| 12179 | KEYWORD_union <- 'union' end_of_word |
| 12180 | KEYWORD_unreachable <- 'unreachable' end_of_word |
| 12181 | KEYWORD_usingnamespace <- 'usingnamespace' end_of_word |
| 12182 | KEYWORD_var <- 'var' end_of_word |
| 12183 | KEYWORD_volatile <- 'volatile' end_of_word |
| 12184 | KEYWORD_while <- 'while' end_of_word |
| 12185 | |
| 12186 | keyword <- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe |
| 12199 | 12187 | / KEYWORD_anytype / KEYWORD_asm / KEYWORD_async / KEYWORD_await |
| 12200 | 12188 | / KEYWORD_break / KEYWORD_callconv / KEYWORD_catch / KEYWORD_comptime |
| 12201 | 12189 | / KEYWORD_const / KEYWORD_continue / KEYWORD_defer / KEYWORD_else |
| ... | ... | @@ -12204,9 +12192,8 @@ keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe |
| 12204 | 12192 | / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline |
| 12205 | 12193 | / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed |
| 12206 | 12194 | / 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 |
| 12210 | 12197 | / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while |
| 12211 | 12198 | {#end_syntax_block#} |
| 12212 | 12199 | {#header_close#} |