diff --git a/doc/docgen.zig b/doc/docgen.zig index 498719d774..2489e034bc 100644 --- a/doc/docgen.zig +++ b/doc/docgen.zig @@ -764,7 +764,7 @@ fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: var, source_token: Tok std.zig.Token.Id.Keyword_pub, std.zig.Token.Id.Keyword_resume, std.zig.Token.Id.Keyword_return, - std.zig.Token.Id.Keyword_section, + std.zig.Token.Id.Keyword_linksection, std.zig.Token.Id.Keyword_stdcallcc, std.zig.Token.Id.Keyword_struct, std.zig.Token.Id.Keyword_suspend, diff --git a/doc/langref.html.in b/doc/langref.html.in index c61203dca6..a29b9be4c8 100644 --- a/doc/langref.html.in +++ b/doc/langref.html.in @@ -7713,36 +7713,35 @@ fn readU32Be() u32 {}
For some discussion on the rationale behind these design decisions, see issue #663
{#header_close#} {#header_open|Grammar#} -
-Root <- skip ContainerMembers eof
+ Root <- skip ContainerMembers eof
# *** Top level ***
ContainerMembers
- <- TestDecl ContainerMembers
+ <- TestDecl ContainerMembers
/ TopLevelComptime ContainerMembers
/ KEYWORD_pub? TopLevelDecl ContainerMembers
/ KEYWORD_pub? ContainerField COMMA ContainerMembers
/ KEYWORD_pub? ContainerField
/
-TestDecl <- KEYWORD_test STRINGLITERAL Block
+TestDecl <- KEYWORD_test STRINGLITERAL Block
-TopLevelComptime <- KEYWORD_comptime BlockExpr
+TopLevelComptime <- KEYWORD_comptime BlockExpr
TopLevelDecl
- <- (KEYWORD_export / KEYWORD_extern STRINGLITERAL? / KEYWORD_inline)? FnProto (SEMICOLON / Block)
+ <- (KEYWORD_export / KEYWORD_extern STRINGLITERAL? / KEYWORD_inline)? FnProto (SEMICOLON / Block)
/ (KEYWORD_export / KEYWORD_extern STRINGLITERAL?)? VarDecl
/ KEYWORD_use Expr SEMICOLON
-FnProto <- FnCC? KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? Section? EXCLAMATIONMARK? (KEYWORD_var / TypeExpr)
+FnProto <- FnCC? KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? EXCLAMATIONMARK? (KEYWORD_var / TypeExpr)
-VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? Section? (EQUAL Expr)? SEMICOLON
+VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? LinkSection? (EQUAL Expr)? SEMICOLON
-ContainerField <- IDENTIFIER (COLON TypeExpr)? (EQUAL Expr)?
+ContainerField <- IDENTIFIER (COLON TypeExpr)? (EQUAL Expr)?
# *** Block Level ***
Statement
- <- KEYWORD_comptime? VarDecl
+ <- KEYWORD_comptime? VarDecl
/ KEYWORD_comptime BlockExprStatement
/ KEYWORD_suspend (SEMICOLON / BlockExprStatement)
/ KEYWORD_defer BlockExprStatement
@@ -7753,50 +7752,50 @@ Statement
/ AssignExpr SEMICOLON
IfStatement
- <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
+ <- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
/ IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )
-LabeledStatement <- BlockLabel? (Block / LoopStatement)
+LabeledStatement <- BlockLabel? (Block / LoopStatement)
-LoopStatement <- KEYWORD_inline? (ForStatement / WhileStatement)
+LoopStatement <- KEYWORD_inline? (ForStatement / WhileStatement)
ForStatement
- <- ForPrefix BlockExpr ( KEYWORD_else Statement )?
+ <- ForPrefix BlockExpr ( KEYWORD_else Statement )?
/ ForPrefix AssignExpr ( SEMICOLON / KEYWORD_else Statement )
WhileStatement
- <- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )?
+ <- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )?
/ WhilePrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )
BlockExprStatement
- <- BlockExpr
+ <- BlockExpr
/ AssignExpr SEMICOLON
-BlockExpr <- BlockLabel? Block
+BlockExpr <- BlockLabel? Block
# *** Expression Level ***
-AssignExpr <- Expr (AssignOp Expr)?
+AssignExpr <- Expr (AssignOp Expr)?
-Expr <- KEYWORD_try* BoolOrExpr
+Expr <- KEYWORD_try* BoolOrExpr
-BoolOrExpr <- BoolAndExpr (KEYWORD_or BoolAndExpr)*
+BoolOrExpr <- BoolAndExpr (KEYWORD_or BoolAndExpr)*
-BoolAndExpr <- CompareExpr (KEYWORD_and CompareExpr)*
+BoolAndExpr <- CompareExpr (KEYWORD_and CompareExpr)*
-CompareExpr <- BitwiseExpr (CompareOp BitwiseExpr)?
+CompareExpr <- BitwiseExpr (CompareOp BitwiseExpr)?
-BitwiseExpr <- BitShiftExpr (BitwiseOp BitShiftExpr)*
+BitwiseExpr <- BitShiftExpr (BitwiseOp BitShiftExpr)*
-BitShiftExpr <- AdditionExpr (BitShiftOp AdditionExpr)*
+BitShiftExpr <- AdditionExpr (BitShiftOp AdditionExpr)*
-AdditionExpr <- MultiplyExpr (AdditionOp MultiplyExpr)*
+AdditionExpr <- MultiplyExpr (AdditionOp MultiplyExpr)*
-MultiplyExpr <- PrefixExpr (MultiplyOp PrefixExpr)*
+MultiplyExpr <- PrefixExpr (MultiplyOp PrefixExpr)*
-PrefixExpr <- PrefixOp* PrimaryExpr
+PrefixExpr <- PrefixOp* PrimaryExpr
PrimaryExpr
- <- AsmExpr
+ <- AsmExpr
/ IfExpr
/ KEYWORD_break BreakLabel? Expr?
/ KEYWORD_cancel Expr
@@ -7807,35 +7806,35 @@ PrimaryExpr
/ LabeledExpr
/ CurlySuffixExpr
-IfExpr <- IfPrefix Expr (KEYWORD_else Payload? Expr)?
+IfExpr <- IfPrefix Expr (KEYWORD_else Payload? Expr)?
-LabeledExpr <- BlockLabel? (Block / LoopExpr)
+LabeledExpr <- BlockLabel? (Block / LoopExpr)
-Block <- LBRACE Statement* RBRACE
+Block <- LBRACE Statement* RBRACE
-LoopExpr <- KEYWORD_inline? (ForExpr / WhileExpr)
+LoopExpr <- KEYWORD_inline? (ForExpr / WhileExpr)
-ForExpr <- ForPrefix Expr (KEYWORD_else Expr)?
+ForExpr <- ForPrefix Expr (KEYWORD_else Expr)?
-WhileExpr <- WhilePrefix Expr (KEYWORD_else Payload? Expr)?
+WhileExpr <- WhilePrefix Expr (KEYWORD_else Payload? Expr)?
-CurlySuffixExpr <- TypeExpr InitList?
+CurlySuffixExpr <- TypeExpr InitList?
InitList
- <- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
+ <- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
/ LBRACE Expr (COMMA Expr)* COMMA? RBRACE
/ LBRACE RBRACE
-TypeExpr <- PrefixTypeOp* ErrorUnionExpr
+TypeExpr <- PrefixTypeOp* ErrorUnionExpr
-ErrorUnionExpr <- SuffixExpr (EXCLAMATIONMARK TypeExpr)?
+ErrorUnionExpr <- SuffixExpr (EXCLAMATIONMARK TypeExpr)?
SuffixExpr
- <- AsyncPrefix PrimaryTypeExpr SuffixOp* FnCallArgumnets
+ <- AsyncPrefix PrimaryTypeExpr SuffixOp* FnCallArgumnets
/ PrimaryTypeExpr (SuffixOp / FnCallArgumnets)*
PrimaryTypeExpr
- <- BUILTININDENTIFIER FnCallArgumnets
+ <- BUILTININDENTIFIER FnCallArgumnets
/ CHAR_LITERAL
/ ContainerDecl
/ ErrorSetDecl
@@ -7858,91 +7857,91 @@ PrimaryTypeExpr
/ STRINGLITERAL
/ SwitchExpr
-ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto
+ContainerDecl <- (KEYWORD_extern / KEYWORD_packed)? ContainerDeclAuto
-ErrorSetDecl <- KEYWORD_error LBRACE IdentifierList RBRACE
+ErrorSetDecl <- KEYWORD_error LBRACE IdentifierList RBRACE
-GroupedExpr <- LPAREN Expr RPAREN
+GroupedExpr <- LPAREN Expr RPAREN
-IfTypeExpr <- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
+IfTypeExpr <- IfPrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
LabeledTypeExpr
- <- BlockLabel Block
+ <- BlockLabel Block
/ BlockLabel? LoopTypeExpr
-LoopTypeExpr <- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr)
+LoopTypeExpr <- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr)
-ForTypeExpr <- ForPrefix TypeExpr (KEYWORD_else TypeExpr)?
+ForTypeExpr <- ForPrefix TypeExpr (KEYWORD_else TypeExpr)?
-WhileTypeExpr <- WhilePrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
+WhileTypeExpr <- WhilePrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
-SwitchExpr <- KEYWORD_switch LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE
+SwitchExpr <- KEYWORD_switch LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE
# *** Assembly ***
-AsmExpr <- KEYWORD_asm KEYWORD_volatile? LPAREN STRINGLITERAL AsmOutput? RPAREN
+AsmExpr <- KEYWORD_asm KEYWORD_volatile? LPAREN STRINGLITERAL AsmOutput? RPAREN
-AsmOutput <- COLON AsmOutputList AsmInput?
+AsmOutput <- COLON AsmOutputList AsmInput?
-AsmOutputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN (MINUSRARROW TypeExpr / IDENTIFIER) RPAREN
+AsmOutputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN (MINUSRARROW TypeExpr / IDENTIFIER) RPAREN
-AsmInput <- COLON AsmInputList AsmCloppers?
+AsmInput <- COLON AsmInputList AsmCloppers?
-AsmInputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN Expr RPAREN
+AsmInputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN Expr RPAREN
-AsmCloppers <- COLON StringList
+AsmCloppers <- COLON StringList
# *** Helper grammar ***
-BreakLabel <- COLON IDENTIFIER
+BreakLabel <- COLON IDENTIFIER
-BlockLabel <- IDENTIFIER COLON
+BlockLabel <- IDENTIFIER COLON
-FieldInit <- DOT IDENTIFIER EQUAL Expr
+FieldInit <- DOT IDENTIFIER EQUAL Expr
-WhileContinueExpr <- COLON LPAREN AssignExpr RPAREN
+WhileContinueExpr <- COLON LPAREN AssignExpr RPAREN
-Section <- KEYWORD_section LPAREN Expr RPAREN
+LinkSection <- KEYWORD_linksection LPAREN Expr RPAREN
# Fn specific
FnCC
- <- KEYWORD_nakedcc
+ <- KEYWORD_nakedcc
/ KEYWORD_stdcallcc
/ KEYWORD_extern
/ KEYWORD_async (LARROW TypeExpr RARROW)?
-ParamDecl <- (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType
+ParamDecl <- (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType
ParamType
- <- KEYWORD_var
+ <- KEYWORD_var
/ DOT3
/ TypeExpr
# Control flow prefixes
-IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload?
+IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload?
-WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr?
+WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr?
-ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload
+ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload
# Payloads
-Payload <- PIPE IDENTIFIER PIPE
+Payload <- PIPE IDENTIFIER PIPE
-PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE
+PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE
-PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
+PtrIndexPayload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
# Switch specific
-SwitchProng <- SwitchCase EQUALRARROW PtrPayload? AssignExpr
+SwitchProng <- SwitchCase EQUALRARROW PtrPayload? AssignExpr
SwitchCase
- <- SwitchItem (COMMA SwitchItem)* COMMA?
+ <- SwitchItem (COMMA SwitchItem)* COMMA?
/ KEYWORD_else
-SwitchItem <- Expr (DOT3 Expr)?
+SwitchItem <- Expr (DOT3 Expr)?
# Operators
AssignOp
- <- ASTERISKEQUAL
+ <- ASTERISKEQUAL
/ SLASHEQUAL
/ PERCENTEQUAL
/ PLUSEQUAL
@@ -7958,7 +7957,7 @@ AssignOp
/ EQUAL
CompareOp
- <- EQUALEQUAL
+ <- EQUALEQUAL
/ EXCLAMATIONMARKEQUAL
/ LARROW
/ RARROW
@@ -7966,25 +7965,25 @@ CompareOp
/ RARROWEQUAL
BitwiseOp
- <- AMPERSAND
+ <- AMPERSAND
/ CARET
/ PIPE
/ KEYWORD_orelse
/ KEYWORD_catch Payload?
BitShiftOp
- <- LARROW2
+ <- LARROW2
/ RARROW2
AdditionOp
- <- PLUS
+ <- PLUS
/ MINUS
/ PLUS2
/ PLUSPERCENT
/ MINUSPERCENT
MultiplyOp
- <- PIPE2
+ <- PIPE2
/ ASTERISK
/ SLASH
/ PERCENT
@@ -7992,7 +7991,7 @@ MultiplyOp
/ ASTERISKPERCENT
PrefixOp
- <- EXCLAMATIONMARK
+ <- EXCLAMATIONMARK
/ MINUS
/ TILDE
/ MINUSPERCENT
@@ -8001,77 +8000,77 @@ PrefixOp
/ KEYWORD_await
PrefixTypeOp
- <- QUESTIONMARK
+ <- QUESTIONMARK
/ KEYWORD_promise MINUSRARROW
/ ArrayTypeStart (ByteAlign / KEYWORD_const / KEYWORD_volatile)*
/ PtrTypeStart (KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile)*
SuffixOp
- <- LBRACKET Expr (DOT2 Expr?)? RBRACKET
+ <- LBRACKET Expr (DOT2 Expr?)? RBRACKET
/ DOT IDENTIFIER
/ DOTASTERISK
/ DOTQUESTIONMARK
-AsyncPrefix <- KEYWORD_async (LARROW PrefixExpr RARROW)?
+AsyncPrefix <- KEYWORD_async (LARROW PrefixExpr RARROW)?
-FnCallArgumnets <- LPAREN ExprList RPAREN
+FnCallArgumnets <- LPAREN ExprList RPAREN
# Ptr specific
-ArrayTypeStart <- LBRACKET Expr? RBRACKET
+ArrayTypeStart <- LBRACKET Expr? RBRACKET
PtrTypeStart
- <- ASTERISK
+ <- ASTERISK
/ ASTERISK2
/ LBRACKET ASTERISK RBRACKET
# ContainerDecl specific
-ContainerDeclAuto <- ContainerDeclType LBRACE ContainerMembers RBRACE
+ContainerDeclAuto <- ContainerDeclType LBRACE ContainerMembers RBRACE
ContainerDeclType
- <- (KEYWORD_struct / KEYWORD_enum) (LPAREN Expr RPAREN)?
+ <- (KEYWORD_struct / KEYWORD_enum) (LPAREN Expr RPAREN)?
/ KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)?
# Alignment
-ByteAlign <- KEYWORD_align LPAREN Expr RPAREN
+ByteAlign <- KEYWORD_align LPAREN Expr RPAREN
# Lists
-IdentifierList <- (IDENTIFIER COMMA)* IDENTIFIER?
+IdentifierList <- (IDENTIFIER COMMA)* IDENTIFIER?
-SwitchProngList <- (SwitchProng COMMA)* SwitchProng?
+SwitchProngList <- (SwitchProng COMMA)* SwitchProng?
-AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem?
+AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem?
-AsmInputList <- (AsmInputItem COMMA)* AsmInputItem?
+AsmInputList <- (AsmInputItem COMMA)* AsmInputItem?
-StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL?
+StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL?
-ParamDeclList <- (ParamDecl COMMA)* ParamDecl?
+ParamDeclList <- (ParamDecl COMMA)* ParamDecl?
-ExprList <- (Expr COMMA)* Expr?
+ExprList <- (Expr COMMA)* Expr?
# *** Tokens ***
-eof <- !.
-hex <- [0-9a-fA-F]
+eof <- !.
+hex <- [0-9a-fA-F]
char_escape
- <- "\\x" hex hex
+ <- "\\x" hex hex
/ "\\u" hex hex hex hex
/ "\\U" hex hex hex hex hex hex
/ "\\" [nr\\t'"]
char_char
- <- char_escape
+ <- char_escape
/ [^\\'\n]
string_char
- <- char_escape
+ <- char_escape
/ [^\\"\n]
-line_comment <- '//'[^\n]*
-line_string <- ("\\\\" [^\n]* [ \n]*)+
-line_cstring <- ("c\\\\" [^\n]* [ \n]*)+
-skip <- ([ \n] / line_comment)*
+line_comment <- '//'[^\n]*
+line_string <- ("\\\\" [^\n]* [ \n]*)+
+line_cstring <- ("c\\\\" [^\n]* [ \n]*)+
+skip <- ([ \n] / line_comment)*
-CHAR_LITERAL <- "'" char_char "'" skip
+CHAR_LITERAL <- "'" char_char "'" skip
FLOAT
- <- "0b" [01]+ "." [01]+ ([eE] [-+]? [01]+)? skip
+ <- "0b" [01]+ "." [01]+ ([eE] [-+]? [01]+)? skip
/ "0o" [0-7]+ "." [0-7]+ ([eE] [-+]? [0-7]+)? skip
/ "0x" hex+ "." hex+ ([pP] [-+]? hex+)? skip
/ [0-9]+ "." [0-9]+ ([eE] [-+]? [0-9]+)? skip
@@ -8080,128 +8079,128 @@ FLOAT
/ "0x" hex+ "."? [pP] [-+]? hex+ skip
/ [0-9]+ "."? [eE] [-+]? [0-9]+ skip
INTEGER
- <- "0b" [01]+ skip
+ <- "0b" [01]+ skip
/ "0o" [0-7]+ skip
/ "0x" hex+ skip
/ [0-9]+ skip
STRINGLITERAL
- <- "c"? "\"" string_char* "\"" skip
+ <- "c"? "\"" string_char* "\"" skip
/ line_string skip
/ line_cstring skip
IDENTIFIER
- <- !keyword ("c" !["\\] / [A-Zabd-z_]) [A-Za-z0-9_]* skip
+ <- !keyword ("c" !["\\] / [A-Zabd-z_]) [A-Za-z0-9_]* skip
/ "@\"" string_char* "\"" skip
-BUILTININDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip
+BUILTININDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip
-AMPERSAND <- '&' ![=] skip
-AMPERSANDEQUAL <- '&=' skip
-ASTERISK <- '*' ![*%=] skip
-ASTERISK2 <- '**' skip
-ASTERISKEQUAL <- '*=' skip
-ASTERISKPERCENT <- '*%' ![=] skip
-ASTERISKPERCENTEQUAL <- '*%=' skip
-CARET <- '^' ![=] skip
-CARETEQUAL <- '^=' skip
-COLON <- ':' skip
-COMMA <- ',' skip
-DOT <- '.' ![*.?] skip
-DOT2 <- '..' ![.] skip
-DOT3 <- '...' skip
-DOTASTERISK <- '.*' skip
-DOTQUESTIONMARK <- '.?' skip
-EQUAL <- '=' ![>=] skip
-EQUALEQUAL <- '==' skip
-EQUALRARROW <- '=>' skip
-EXCLAMATIONMARK <- '!' ![=] skip
-EXCLAMATIONMARKEQUAL <- '!=' skip
-LARROW <- '<' ![<=] skip
-LARROW2 <- '<<' ![=] skip
-LARROW2EQUAL <- '<<=' skip
-LARROWEQUAL <- '<=' skip
-LBRACE <- '{' skip
-LBRACKET <- '[' skip
-LPAREN <- '(' skip
-MINUS <- '-' ![%=>] skip
-MINUSEQUAL <- '-=' skip
-MINUSPERCENT <- '-%' ![=] skip
-MINUSPERCENTEQUAL <- '-%=' skip
-MINUSRARROW <- '->' skip
-PERCENT <- '%' ![=] skip
-PERCENTEQUAL <- '%=' skip
-PIPE <- '|' ![|=] skip
-PIPE2 <- '||' skip
-PIPEEQUAL <- '|=' skip
-PLUS <- '+' ![%+=] skip
-PLUS2 <- '++' skip
-PLUSEQUAL <- '+=' skip
-PLUSPERCENT <- '+%' ![=] skip
-PLUSPERCENTEQUAL <- '+%=' skip
-QUESTIONMARK <- '?' skip
-RARROW <- '>' ![>=] skip
-RARROW2 <- '>>' ![=] skip
-RARROW2EQUAL <- '>>=' skip
-RARROWEQUAL <- '>=' skip
-RBRACE <- '}' skip
-RBRACKET <- ']' skip
-RPAREN <- ')' skip
-SEMICOLON <- ';' skip
-SLASH <- '/' ![=] skip
-SLASHEQUAL <- '/=' skip
-TILDE <- '~' skip
+AMPERSAND <- '&' ![=] skip
+AMPERSANDEQUAL <- '&=' skip
+ASTERISK <- '*' ![*%=] skip
+ASTERISK2 <- '**' skip
+ASTERISKEQUAL <- '*=' skip
+ASTERISKPERCENT <- '*%' ![=] skip
+ASTERISKPERCENTEQUAL <- '*%=' skip
+CARET <- '^' ![=] skip
+CARETEQUAL <- '^=' skip
+COLON <- ':' skip
+COMMA <- ',' skip
+DOT <- '.' ![*.?] skip
+DOT2 <- '..' ![.] skip
+DOT3 <- '...' skip
+DOTASTERISK <- '.*' skip
+DOTQUESTIONMARK <- '.?' skip
+EQUAL <- '=' ![>=] skip
+EQUALEQUAL <- '==' skip
+EQUALRARROW <- '=>' skip
+EXCLAMATIONMARK <- '!' ![=] skip
+EXCLAMATIONMARKEQUAL <- '!=' skip
+LARROW <- '<' ![<=] skip
+LARROW2 <- '<<' ![=] skip
+LARROW2EQUAL <- '<<=' skip
+LARROWEQUAL <- '<=' skip
+LBRACE <- '{' skip
+LBRACKET <- '[' skip
+LPAREN <- '(' skip
+MINUS <- '-' ![%=>] skip
+MINUSEQUAL <- '-=' skip
+MINUSPERCENT <- '-%' ![=] skip
+MINUSPERCENTEQUAL <- '-%=' skip
+MINUSRARROW <- '->' skip
+PERCENT <- '%' ![=] skip
+PERCENTEQUAL <- '%=' skip
+PIPE <- '|' ![|=] skip
+PIPE2 <- '||' skip
+PIPEEQUAL <- '|=' skip
+PLUS <- '+' ![%+=] skip
+PLUS2 <- '++' skip
+PLUSEQUAL <- '+=' skip
+PLUSPERCENT <- '+%' ![=] skip
+PLUSPERCENTEQUAL <- '+%=' skip
+QUESTIONMARK <- '?' skip
+RARROW <- '>' ![>=] skip
+RARROW2 <- '>>' ![=] skip
+RARROW2EQUAL <- '>>=' skip
+RARROWEQUAL <- '>=' skip
+RBRACE <- '}' skip
+RBRACKET <- ']' skip
+RPAREN <- ')' skip
+SEMICOLON <- ';' skip
+SLASH <- '/' ![=] skip
+SLASHEQUAL <- '/=' skip
+TILDE <- '~' skip
-end_of_word <- ![a-zA-Z0-9_] skip
-KEYWORD_align <- 'align' end_of_word
-KEYWORD_and <- 'and' end_of_word
-KEYWORD_anyerror <- 'anyerror' end_of_word
-KEYWORD_asm <- 'asm' end_of_word
-KEYWORD_async <- 'async' end_of_word
-KEYWORD_await <- 'await' end_of_word
-KEYWORD_break <- 'break' end_of_word
-KEYWORD_cancel <- 'cancel' end_of_word
-KEYWORD_catch <- 'catch' end_of_word
-KEYWORD_comptime <- 'comptime' end_of_word
-KEYWORD_const <- 'const' end_of_word
-KEYWORD_continue <- 'continue' end_of_word
-KEYWORD_defer <- 'defer' end_of_word
-KEYWORD_else <- 'else' end_of_word
-KEYWORD_enum <- 'enum' end_of_word
-KEYWORD_errdefer <- 'errdefer' end_of_word
-KEYWORD_error <- 'error' end_of_word
-KEYWORD_export <- 'export' end_of_word
-KEYWORD_extern <- 'extern' end_of_word
-KEYWORD_false <- 'false' end_of_word
-KEYWORD_fn <- 'fn' end_of_word
-KEYWORD_for <- 'for' end_of_word
-KEYWORD_if <- 'if' end_of_word
-KEYWORD_inline <- 'inline' end_of_word
-KEYWORD_nakedcc <- 'nakedcc' end_of_word
-KEYWORD_noalias <- 'noalias' end_of_word
-KEYWORD_null <- 'null' end_of_word
-KEYWORD_or <- 'or' end_of_word
-KEYWORD_orelse <- 'orelse' end_of_word
-KEYWORD_packed <- 'packed' end_of_word
-KEYWORD_promise <- 'promise' end_of_word
-KEYWORD_pub <- 'pub' end_of_word
-KEYWORD_resume <- 'resume' end_of_word
-KEYWORD_return <- 'return' end_of_word
-KEYWORD_section <- 'section' end_of_word
-KEYWORD_stdcallcc <- 'stdcallcc' end_of_word
-KEYWORD_struct <- 'struct' end_of_word
-KEYWORD_suspend <- 'suspend' end_of_word
-KEYWORD_switch <- 'switch' end_of_word
-KEYWORD_test <- 'test' end_of_word
-KEYWORD_true <- 'true' end_of_word
-KEYWORD_try <- 'try' end_of_word
-KEYWORD_undefined <- 'undefined' end_of_word
-KEYWORD_union <- 'union' end_of_word
-KEYWORD_unreachable <- 'unreachable' end_of_word
-KEYWORD_use <- 'use' end_of_word
-KEYWORD_var <- 'var' end_of_word
-KEYWORD_volatile <- 'volatile' end_of_word
-KEYWORD_while <- 'while' end_of_word
+end_of_word <- ![a-zA-Z0-9_] skip
+KEYWORD_align <- 'align' end_of_word
+KEYWORD_and <- 'and' end_of_word
+KEYWORD_anyerror <- 'anyerror' end_of_word
+KEYWORD_asm <- 'asm' end_of_word
+KEYWORD_async <- 'async' end_of_word
+KEYWORD_await <- 'await' end_of_word
+KEYWORD_break <- 'break' end_of_word
+KEYWORD_cancel <- 'cancel' end_of_word
+KEYWORD_catch <- 'catch' end_of_word
+KEYWORD_comptime <- 'comptime' end_of_word
+KEYWORD_const <- 'const' end_of_word
+KEYWORD_continue <- 'continue' end_of_word
+KEYWORD_defer <- 'defer' end_of_word
+KEYWORD_else <- 'else' end_of_word
+KEYWORD_enum <- 'enum' end_of_word
+KEYWORD_errdefer <- 'errdefer' end_of_word
+KEYWORD_error <- 'error' end_of_word
+KEYWORD_export <- 'export' end_of_word
+KEYWORD_extern <- 'extern' end_of_word
+KEYWORD_false <- 'false' end_of_word
+KEYWORD_fn <- 'fn' end_of_word
+KEYWORD_for <- 'for' end_of_word
+KEYWORD_if <- 'if' end_of_word
+KEYWORD_inline <- 'inline' end_of_word
+KEYWORD_nakedcc <- 'nakedcc' end_of_word
+KEYWORD_noalias <- 'noalias' end_of_word
+KEYWORD_null <- 'null' end_of_word
+KEYWORD_or <- 'or' end_of_word
+KEYWORD_orelse <- 'orelse' end_of_word
+KEYWORD_packed <- 'packed' end_of_word
+KEYWORD_promise <- 'promise' end_of_word
+KEYWORD_pub <- 'pub' end_of_word
+KEYWORD_resume <- 'resume' end_of_word
+KEYWORD_return <- 'return' end_of_word
+KEYWORD_linksection <- 'linksection' end_of_word
+KEYWORD_stdcallcc <- 'stdcallcc' end_of_word
+KEYWORD_struct <- 'struct' end_of_word
+KEYWORD_suspend <- 'suspend' end_of_word
+KEYWORD_switch <- 'switch' end_of_word
+KEYWORD_test <- 'test' end_of_word
+KEYWORD_true <- 'true' end_of_word
+KEYWORD_try <- 'try' end_of_word
+KEYWORD_undefined <- 'undefined' end_of_word
+KEYWORD_union <- 'union' end_of_word
+KEYWORD_unreachable <- 'unreachable' end_of_word
+KEYWORD_use <- 'use' end_of_word
+KEYWORD_var <- 'var' end_of_word
+KEYWORD_volatile <- 'volatile' end_of_word
+KEYWORD_while <- 'while' end_of_word
-keyword <- KEYWORD_align / KEYWORD_and / KEYWORD_anyerror / KEYWORD_asm
+keyword <- KEYWORD_align / KEYWORD_and / KEYWORD_anyerror / KEYWORD_asm
/ KEYWORD_async / KEYWORD_await / KEYWORD_break / KEYWORD_cancel
/ KEYWORD_catch / KEYWORD_comptime / KEYWORD_const / KEYWORD_continue
/ KEYWORD_defer / KEYWORD_else / KEYWORD_enum / KEYWORD_errdefer
@@ -8209,12 +8208,11 @@ keyword <- KEYWORD_align / KEYWORD_and / KEYWORD_anyerror / KEYWORD_asm
/ KEYWORD_fn / KEYWORD_for / KEYWORD_if / KEYWORD_inline
/ KEYWORD_nakedcc / KEYWORD_noalias / KEYWORD_null / KEYWORD_or
/ KEYWORD_orelse / KEYWORD_packed / KEYWORD_promise / KEYWORD_pub
- / KEYWORD_resume / KEYWORD_return / KEYWORD_section
+ / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection
/ KEYWORD_stdcallcc / KEYWORD_struct / KEYWORD_suspend
/ KEYWORD_switch / KEYWORD_test / KEYWORD_true / KEYWORD_try
/ KEYWORD_undefined / KEYWORD_union / KEYWORD_unreachable
- / KEYWORD_use / KEYWORD_var / KEYWORD_volatile / KEYWORD_while
-
+ / KEYWORD_use / KEYWORD_var / KEYWORD_volatile / KEYWORD_while
{#header_close#}
{#header_open|Zen#}