| ... | ... | @@ -7804,11 +7804,11 @@ fn readU32Be() u32 {} |
| 7804 | 7804 | {#header_close#} |
| 7805 | 7805 | |
| 7806 | 7806 | {#header_open|Grammar#} |
| 7807 | | {#syntax_block|peg|grammar.y#} |
| 7808 | | Root <- skip container_doc_comment? ContainerMembers eof |
| 7807 | {#syntax_block|peg|grammar.peg#} |
| 7808 | Root <- skip ContainerMembers eof |
| 7809 | 7809 | |
| 7810 | 7810 | # *** Top level *** |
| 7811 | | ContainerMembers <- ContainerDeclaration* (ContainerField COMMA)* (ContainerField / ContainerDeclaration*) |
| 7811 | ContainerMembers <- container_doc_comment? ContainerDeclaration* (ContainerField COMMA)* (ContainerField / ContainerDeclaration*) |
| 7812 | 7812 | |
| 7813 | 7813 | ContainerDeclaration <- TestDecl / ComptimeDecl / doc_comment? KEYWORD_pub? Decl |
| 7814 | 7814 | |
| ... | ... | @@ -7837,7 +7837,6 @@ Statement |
| 7837 | 7837 | / KEYWORD_errdefer Payload? BlockExprStatement |
| 7838 | 7838 | / IfStatement |
| 7839 | 7839 | / LabeledStatement |
| 7840 | | / SwitchExpr |
| 7841 | 7840 | / VarDeclExprStatement |
| 7842 | 7841 | |
| 7843 | 7842 | ComptimeStatement |
| ... | ... | @@ -7848,7 +7847,7 @@ IfStatement |
| 7848 | 7847 | <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )? |
| 7849 | 7848 | / IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement ) |
| 7850 | 7849 | |
| 7851 | | LabeledStatement <- BlockLabel? (Block / LoopStatement) |
| 7850 | LabeledStatement <- BlockLabel? (Block / LoopStatement / SwitchExpr) |
| 7852 | 7851 | |
| 7853 | 7852 | LoopStatement <- KEYWORD_inline? (ForStatement / WhileStatement) |
| 7854 | 7853 | |
| ... | ... | @@ -7902,7 +7901,7 @@ PrimaryExpr |
| 7902 | 7901 | / KEYWORD_break BreakLabel? Expr? |
| 7903 | 7902 | / KEYWORD_comptime Expr |
| 7904 | 7903 | / KEYWORD_nosuspend Expr |
| 7905 | | / KEYWORD_continue BreakLabel? |
| 7904 | / KEYWORD_continue BreakLabel? Expr? |
| 7906 | 7905 | / KEYWORD_resume Expr |
| 7907 | 7906 | / KEYWORD_return Expr? |
| 7908 | 7907 | / BlockLabel? LoopExpr |
| ... | ... | @@ -7952,7 +7951,6 @@ PrimaryTypeExpr |
| 7952 | 7951 | / KEYWORD_anyframe |
| 7953 | 7952 | / KEYWORD_unreachable |
| 7954 | 7953 | / STRINGLITERAL |
| 7955 | | / SwitchExpr |
| 7956 | 7954 | |
| 7957 | 7955 | ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto |
| 7958 | 7956 | |
| ... | ... | @@ -7965,6 +7963,7 @@ IfTypeExpr <- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)? |
| 7965 | 7963 | LabeledTypeExpr |
| 7966 | 7964 | <- BlockLabel Block |
| 7967 | 7965 | / BlockLabel? LoopTypeExpr |
| 7966 | / BlockLabel? SwitchExpr |
| 7968 | 7967 | |
| 7969 | 7968 | LoopTypeExpr <- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr) |
| 7970 | 7969 | |
| ... | ... | @@ -8134,7 +8133,7 @@ PtrTypeStart |
| 8134 | 8133 | ArrayTypeStart <- LBRACKET Expr (COLON Expr)? RBRACKET |
| 8135 | 8134 | |
| 8136 | 8135 | # ContainerDecl specific |
| 8137 | | ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE |
| 8136 | ContainerDeclAuto <- ContainerDeclType LBRACE ContainerMembers RBRACE |
| 8138 | 8137 | |
| 8139 | 8138 | ContainerDeclType |
| 8140 | 8139 | <- KEYWORD_struct (LPAREN Expr RPAREN)? |
| ... | ... | @@ -8154,8 +8153,6 @@ AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem? |
| 8154 | 8153 | |
| 8155 | 8154 | AsmInputList <- (AsmInputItem COMMA)* AsmInputItem? |
| 8156 | 8155 | |
| 8157 | | StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL? |
| 8158 | | |
| 8159 | 8156 | ParamDeclList <- (ParamDecl COMMA)* ParamDecl? |
| 8160 | 8157 | |
| 8161 | 8158 | ExprList <- (Expr COMMA)* Expr? |
| ... | ... | @@ -8202,7 +8199,7 @@ oxC2_oxDF <- [\302-\337] |
| 8202 | 8199 | # [0xF1,0xF3] [0x80,0xBF] [0x80,0xBF] [0x80,0xBF] |
| 8203 | 8200 | # 0xF4 [0x80,0x8F] [0x80,0xBF] [0x80,0xBF] |
| 8204 | 8201 | |
| 8205 | | mb_utf8_literal <- |
| 8202 | multibyte_utf8 <- |
| 8206 | 8203 | oxF4 ox80_ox8F ox80_oxBF ox80_oxBF |
| 8207 | 8204 | / oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF |
| 8208 | 8205 | / oxF0 ox90_0xBF ox80_oxBF ox80_oxBF |
| ... | ... | @@ -8212,46 +8209,47 @@ mb_utf8_literal <- |
| 8212 | 8209 | / oxE0 oxA0_oxBF ox80_oxBF |
| 8213 | 8210 | / oxC2_oxDF ox80_oxBF |
| 8214 | 8211 | |
| 8215 | | ascii_char_not_nl_slash_squote <- [\000-\011\013-\046\050-\133\135-\177] |
| 8212 | non_control_ascii <- [\040-\176] |
| 8216 | 8213 | |
| 8217 | 8214 | char_escape |
| 8218 | 8215 | <- "\\x" hex hex |
| 8219 | 8216 | / "\\u{" hex+ "}" |
| 8220 | 8217 | / "\\" [nr\\t'"] |
| 8221 | 8218 | char_char |
| 8222 | | <- mb_utf8_literal |
| 8219 | <- multibyte_utf8 |
| 8223 | 8220 | / char_escape |
| 8224 | | / ascii_char_not_nl_slash_squote |
| 8221 | / ![\\'\n] non_control_ascii |
| 8225 | 8222 | |
| 8226 | 8223 | string_char |
| 8227 | | <- char_escape |
| 8228 | | / [^\\"\n] |
| 8224 | <- multibyte_utf8 |
| 8225 | / char_escape |
| 8226 | / ![\\"\n] non_control_ascii |
| 8229 | 8227 | |
| 8230 | 8228 | container_doc_comment <- ('//!' [^\n]* [ \n]* skip)+ |
| 8231 | 8229 | doc_comment <- ('///' [^\n]* [ \n]* skip)+ |
| 8232 | 8230 | line_comment <- '//' ![!/][^\n]* / '////' [^\n]* |
| 8233 | | line_string <- ("\\\\" [^\n]* [ \n]*)+ |
| 8231 | line_string <- ('\\\\' [^\n]* [ \n]*)+ |
| 8234 | 8232 | skip <- ([ \n] / line_comment)* |
| 8235 | 8233 | |
| 8236 | | CHAR_LITERAL <- "'" char_char "'" skip |
| 8234 | CHAR_LITERAL <- ['] char_char ['] skip |
| 8237 | 8235 | FLOAT |
| 8238 | | <- "0x" hex_int "." hex_int ([pP] [-+]? dec_int)? skip |
| 8239 | | / dec_int "." dec_int ([eE] [-+]? dec_int)? skip |
| 8240 | | / "0x" hex_int [pP] [-+]? dec_int skip |
| 8236 | <- '0x' hex_int '.' hex_int ([pP] [-+]? dec_int)? skip |
| 8237 | / dec_int '.' dec_int ([eE] [-+]? dec_int)? skip |
| 8238 | / '0x' hex_int [pP] [-+]? dec_int skip |
| 8241 | 8239 | / dec_int [eE] [-+]? dec_int skip |
| 8242 | 8240 | INTEGER |
| 8243 | | <- "0b" bin_int skip |
| 8244 | | / "0o" oct_int skip |
| 8245 | | / "0x" hex_int skip |
| 8241 | <- '0b' bin_int skip |
| 8242 | / '0o' oct_int skip |
| 8243 | / '0x' hex_int skip |
| 8246 | 8244 | / dec_int skip |
| 8247 | | STRINGLITERALSINGLE <- "\"" string_char* "\"" skip |
| 8245 | STRINGLITERALSINGLE <- ["] string_char* ["] skip |
| 8248 | 8246 | STRINGLITERAL |
| 8249 | 8247 | <- STRINGLITERALSINGLE |
| 8250 | 8248 | / (line_string skip)+ |
| 8251 | 8249 | IDENTIFIER |
| 8252 | 8250 | <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip |
| 8253 | | / "@" STRINGLITERALSINGLE |
| 8254 | | BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip |
| 8251 | / '@' STRINGLITERALSINGLE |
| 8252 | BUILTINIDENTIFIER <- '@'[A-Za-z_][A-Za-z0-9_]* skip |
| 8255 | 8253 | |
| 8256 | 8254 | |
| 8257 | 8255 | AMPERSAND <- '&' ![=] skip |