| ... | ... | @@ -11042,15 +11042,15 @@ TestDecl <- KEYWORD_test STRINGLITERALSINGLE Block |
| 11042 | 11042 | TopLevelComptime <- KEYWORD_comptime BlockExpr |
| 11043 | 11043 | |
| 11044 | 11044 | TopLevelDecl |
| 11045 | | <- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / KEYWORD_inline)? FnProto (SEMICOLON / Block) |
| 11045 | <- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block) |
| 11046 | 11046 | / (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl |
| 11047 | 11047 | / KEYWORD_usingnamespace Expr SEMICOLON |
| 11048 | 11048 | |
| 11049 | | FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? EXCLAMATIONMARK? (KEYWORD_anytype / TypeExpr) |
| 11049 | FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? CallConv? EXCLAMATIONMARK? (KEYWORD_anytype / TypeExpr) |
| 11050 | 11050 | |
| 11051 | 11051 | VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? LinkSection? (EQUAL Expr)? SEMICOLON |
| 11052 | 11052 | |
| 11053 | | ContainerField <- KEYWORD_comptime? IDENTIFIER (COLON TypeExpr)? (EQUAL Expr)? |
| 11053 | ContainerField <- KEYWORD_comptime? IDENTIFIER (COLON TypeExpr ByteAlign?)? (EQUAL Expr)? |
| 11054 | 11054 | |
| 11055 | 11055 | # *** Block Level *** |
| 11056 | 11056 | Statement |
| ... | ... | @@ -11090,7 +11090,7 @@ BlockExpr <- BlockLabel? Block |
| 11090 | 11090 | # *** Expression Level *** |
| 11091 | 11091 | AssignExpr <- Expr (AssignOp Expr)? |
| 11092 | 11092 | |
| 11093 | | Expr <- KEYWORD_try* BoolOrExpr |
| 11093 | Expr <- BoolOrExpr |
| 11094 | 11094 | |
| 11095 | 11095 | BoolOrExpr <- BoolAndExpr (KEYWORD_or BoolAndExpr)* |
| 11096 | 11096 | |
| ... | ... | @@ -11215,6 +11215,8 @@ WhileContinueExpr <- COLON LPAREN AssignExpr RPAREN |
| 11215 | 11215 | |
| 11216 | 11216 | LinkSection <- KEYWORD_linksection LPAREN Expr RPAREN |
| 11217 | 11217 | |
| 11218 | CallConv <- KEYWORD_callconv LPAREN Expr RPAREN |
| 11219 | |
| 11218 | 11220 | ParamDecl <- (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType |
| 11219 | 11221 | |
| 11220 | 11222 | ParamType |
| ... | ... | @@ -11321,19 +11323,20 @@ SuffixOp |
| 11321 | 11323 | FnCallArguments <- LPAREN ExprList RPAREN |
| 11322 | 11324 | |
| 11323 | 11325 | # Ptr specific |
| 11324 | | ArrayTypeStart <- LBRACKET Expr? RBRACKET |
| 11326 | ArrayTypeStart <- LBRACKET Expr? (COLON Expr)? RBRACKET |
| 11325 | 11327 | |
| 11326 | 11328 | PtrTypeStart |
| 11327 | 11329 | <- ASTERISK |
| 11328 | 11330 | / ASTERISK2 |
| 11329 | | / PTRUNKNOWN |
| 11330 | | / PTRC |
| 11331 | / LBRACKET ASTERISK (LETTERC / COLON Expr)? RBRACKET |
| 11331 | 11332 | |
| 11332 | 11333 | # ContainerDecl specific |
| 11333 | 11334 | ContainerDeclAuto <- ContainerDeclType LBRACE ContainerMembers RBRACE |
| 11334 | 11335 | |
| 11335 | 11336 | ContainerDeclType |
| 11336 | | <- (KEYWORD_struct / KEYWORD_enum / KEYWORD_opaque) (LPAREN Expr RPAREN)? |
| 11337 | <- KEYWORD_struct |
| 11338 | / KEYWORD_opaque |
| 11339 | / KEYWORD_enum (LPAREN Expr RPAREN)? |
| 11337 | 11340 | / KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)? |
| 11338 | 11341 | |
| 11339 | 11342 | # Alignment |
| ... | ... | @@ -11357,44 +11360,51 @@ ExprList <- (Expr COMMA)* Expr? |
| 11357 | 11360 | # *** Tokens *** |
| 11358 | 11361 | eof <- !. |
| 11359 | 11362 | hex <- [0-9a-fA-F] |
| 11363 | hex_ <- ('_'/hex) |
| 11364 | dec <- [0-9] |
| 11365 | dec_ <- ('_'/dec) |
| 11366 | |
| 11367 | dec_int <- dec (dec_* dec)? |
| 11368 | hex_int <- hex (hex_* dec)? |
| 11369 | |
| 11360 | 11370 | char_escape |
| 11361 | | <- "\\x" hex hex |
| 11362 | | / "\\u{" hex+ "}" |
| 11363 | | / "\\" [nr\\t'"] |
| 11371 | <- "\\x" hex hex |
| 11372 | / "\\u{" hex+ "}" |
| 11373 | / "\\" [nr\\t'"] |
| 11364 | 11374 | char_char |
| 11365 | 11375 | <- char_escape |
| 11366 | 11376 | / [^\\'\n] |
| 11367 | 11377 | string_char |
| 11368 | 11378 | <- char_escape |
| 11369 | | / [^\\"\n] |
| 11379 | / [^\\"\n] |
| 11370 | 11380 | |
| 11371 | 11381 | line_comment <- '//'[^\n]* |
| 11372 | | line_string <- ("\\\\" [^\n]* [ \n]*)+ |
| 11382 | line_string <- ("\\\\" [^\n]* [ \n]*)+ |
| 11373 | 11383 | skip <- ([ \n] / line_comment)* |
| 11374 | 11384 | |
| 11375 | | CHAR_LITERAL <- "'" char_char "'" skip |
| 11385 | CHAR_LITERAL <- "'" char_char "'" skip |
| 11376 | 11386 | FLOAT |
| 11377 | | <- "0x" hex+ "." hex+ ([pP] [-+]? hex+)? skip |
| 11378 | | / [0-9]+ "." [0-9]+ ([eE] [-+]? [0-9]+)? skip |
| 11379 | | / "0x" hex+ "."? [pP] [-+]? hex+ skip |
| 11380 | | / [0-9]+ "."? [eE] [-+]? [0-9]+ skip |
| 11387 | <- "0x" hex_* hex "." hex_int ([pP] [-+]? hex_int)? skip |
| 11388 | / dec_int "." dec_int ([eE] [-+]? dec_int)? skip |
| 11389 | / "0x" hex_* hex "."? [pP] [-+]? hex_int skip |
| 11390 | / dec_int "."? [eE] [-+]? dec_int skip |
| 11381 | 11391 | INTEGER |
| 11382 | | <- "0b" [01]+ skip |
| 11383 | | / "0o" [0-7]+ skip |
| 11384 | | / "0x" hex+ skip |
| 11385 | | / [0-9]+ skip |
| 11386 | | STRINGLITERALSINGLE <- "\"" string_char* "\"" skip |
| 11392 | <- "0b" [_01]* [01] skip |
| 11393 | / "0o" [_0-7]* [0-7] skip |
| 11394 | / "0x" hex_* hex skip |
| 11395 | / dec_int skip |
| 11396 | STRINGLITERALSINGLE <- "\"" string_char* "\"" skip |
| 11387 | 11397 | STRINGLITERAL |
| 11388 | 11398 | <- STRINGLITERALSINGLE |
| 11389 | 11399 | / line_string skip |
| 11390 | 11400 | IDENTIFIER |
| 11391 | 11401 | <- !keyword [A-Za-z_] [A-Za-z0-9_]* skip |
| 11392 | | / "@\"" string_char* "\"" skip |
| 11393 | | BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip |
| 11402 | / "@\"" string_char* "\"" skip |
| 11403 | BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip |
| 11394 | 11404 | |
| 11395 | 11405 | |
| 11396 | | AMPERSAND <- '&' ![=] skip |
| 11397 | | AMPERSANDEQUAL <- '&=' skip |
| 11406 | AMPERSAND <- '&' ![=] skip |
| 11407 | AMPERSANDEQUAL <- '&=' skip |
| 11398 | 11408 | ASTERISK <- '*' ![*%=] skip |
| 11399 | 11409 | ASTERISK2 <- '**' skip |
| 11400 | 11410 | ASTERISKEQUAL <- '*=' skip |
| ... | ... | @@ -11419,7 +11429,7 @@ LARROW2 <- '<<' ![=] skip |
| 11419 | 11429 | LARROW2EQUAL <- '<<=' skip |
| 11420 | 11430 | LARROWEQUAL <- '<=' skip |
| 11421 | 11431 | LBRACE <- '{' skip |
| 11422 | | LBRACKET <- '[' ![*] skip |
| 11432 | LBRACKET <- '[' skip |
| 11423 | 11433 | LPAREN <- '(' skip |
| 11424 | 11434 | MINUS <- '-' ![%=>] skip |
| 11425 | 11435 | MINUSEQUAL <- '-=' skip |
| ... | ... | @@ -11436,8 +11446,7 @@ PLUS2 <- '++' skip |
| 11436 | 11446 | PLUSEQUAL <- '+=' skip |
| 11437 | 11447 | PLUSPERCENT <- '+%' ![=] skip |
| 11438 | 11448 | PLUSPERCENTEQUAL <- '+%=' skip |
| 11439 | | PTRC <- '[*c]' skip |
| 11440 | | PTRUNKNOWN <- '[*]' skip |
| 11449 | LETTERC <- 'c' skip |
| 11441 | 11450 | QUESTIONMARK <- '?' skip |
| 11442 | 11451 | RARROW <- '>' ![>=] skip |
| 11443 | 11452 | RARROW2 <- '>>' ![=] skip |
| ... | ... | @@ -11461,6 +11470,7 @@ KEYWORD_asm <- 'asm' end_of_word |
| 11461 | 11470 | KEYWORD_async <- 'async' end_of_word |
| 11462 | 11471 | KEYWORD_await <- 'await' end_of_word |
| 11463 | 11472 | KEYWORD_break <- 'break' end_of_word |
| 11473 | KEYWORD_callconv <- 'callconv' end_of_word |
| 11464 | 11474 | KEYWORD_catch <- 'catch' end_of_word |
| 11465 | 11475 | KEYWORD_comptime <- 'comptime' end_of_word |
| 11466 | 11476 | KEYWORD_const <- 'const' end_of_word |
| ... | ... | @@ -11479,6 +11489,7 @@ KEYWORD_if <- 'if' end_of_word |
| 11479 | 11489 | KEYWORD_inline <- 'inline' end_of_word |
| 11480 | 11490 | KEYWORD_noalias <- 'noalias' end_of_word |
| 11481 | 11491 | KEYWORD_nosuspend <- 'nosuspend' end_of_word |
| 11492 | KEYWORD_noinline <- 'noinline' end_of_word |
| 11482 | 11493 | KEYWORD_null <- 'null' end_of_word |
| 11483 | 11494 | KEYWORD_opaque <- 'opaque' end_of_word |
| 11484 | 11495 | KEYWORD_or <- 'or' end_of_word |
| ... | ... | @@ -11503,19 +11514,20 @@ KEYWORD_var <- 'var' end_of_word |
| 11503 | 11514 | KEYWORD_volatile <- 'volatile' end_of_word |
| 11504 | 11515 | KEYWORD_while <- 'while' end_of_word |
| 11505 | 11516 | |
| 11506 | | keyword <- KEYWORD_align / KEYWORD_and / KEYWORD_anyframe / KEYWORD_anytype |
| 11507 | | / KEYWORD_allowzero / KEYWORD_asm / KEYWORD_async / KEYWORD_await / KEYWORD_break |
| 11508 | | / KEYWORD_catch / KEYWORD_comptime / KEYWORD_const / KEYWORD_continue |
| 11509 | | / KEYWORD_defer / KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer |
| 11510 | | / KEYWORD_error / KEYWORD_export / KEYWORD_extern / KEYWORD_false |
| 11511 | | / KEYWORD_fn / KEYWORD_for / KEYWORD_if / KEYWORD_inline |
| 11512 | | / KEYWORD_noalias / KEYWORD_null / KEYWORD_opaque / KEYWORD_or |
| 11513 | | / KEYWORD_orelse / KEYWORD_packed / KEYWORD_pub |
| 11514 | | / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection |
| 11515 | | / KEYWORD_struct / KEYWORD_suspend |
| 11516 | | / KEYWORD_switch / KEYWORD_test / KEYWORD_threadlocal / KEYWORD_true / KEYWORD_try |
| 11517 | keyword <- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe |
| 11518 | / KEYWORD_anytype / KEYWORD_asm / KEYWORD_async / KEYWORD_await |
| 11519 | / KEYWORD_break / KEYWORD_callconv / KEYWORD_catch / KEYWORD_comptime |
| 11520 | / KEYWORD_const / KEYWORD_continue / KEYWORD_defer / KEYWORD_else |
| 11521 | / KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export |
| 11522 | / KEYWORD_extern / KEYWORD_false / KEYWORD_fn / KEYWORD_for / KEYWORD_if |
| 11523 | / KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline |
| 11524 | / KEYWORD_null / KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed |
| 11525 | / KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection |
| 11526 | / KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch |
| 11527 | / KEYWORD_test / KEYWORD_threadlocal / KEYWORD_true / KEYWORD_try |
| 11517 | 11528 | / KEYWORD_undefined / KEYWORD_union / KEYWORD_unreachable |
| 11518 | | / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while</code></pre> |
| 11529 | / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while |
| 11530 | </code></pre> |
| 11519 | 11531 | {#header_close#} |
| 11520 | 11532 | {#header_open|Zen#} |
| 11521 | 11533 | <ul> |