I accidentally made this commit really big after some git mishaps. Working on zig grammar, finally kinda works. Fixed some diagnostics warnings Moved examples to tofix because fixing them is besides the point right now.
516 lines
No EOL
16 KiB
Text
516 lines
No EOL
16 KiB
Text
Root <- container_doc_comment? container_members eof
|
|
|
|
container_members <- container_declarations (container_field COMMA)* (container_field / container_declarations)
|
|
|
|
container_declarations
|
|
<- test_decl container_declarations
|
|
/ top_level_comptime container_declarations
|
|
/ doc_comment? KEYWORD_PUB? top_level_decl container_declarations
|
|
/ end_of_word
|
|
|
|
test_decl <- doc_comment? KEYWORD_TEST block
|
|
|
|
top_level_comptime <- doc_comment? KEYWORD_COMPTIME block_expr
|
|
|
|
top_level_decl
|
|
<- (KEYWORD_EXPORT / KEYWORD_EXTERN / (KEYWORD_INLINE / KEYWORD_NOINLINE))? fn_proto (SEMICOLON / block)
|
|
/ (KEYWORD_EXPORT / KEYWORD_EXTERN )? KEYWORD_THREADLOCAL? var_decl
|
|
/ KEYWORD_USINGNAMESPACE expr SEMICOLON
|
|
|
|
fn_proto <- KEYWORD_FN IDENTIFIER? LPAREN param_decl_list RPAREN byte_align? link_section? call_conv? EXCLAMATIONMARK? type_expr
|
|
|
|
var_decl <- (KEYWORD_CONST / KEYWORD_VAR) IDENTIFIER (COLON type_expr)? byte_align? link_section? (EQUAL expr)? SEMICOLON
|
|
|
|
container_field <- doc_comment? KEYWORD_COMPTIME? IDENTIFIER (COLON (KEYWORD_ANYTYPE / type_expr) byte_align?)? (EQUAL expr)?
|
|
|
|
statement
|
|
<- KEYWORD_COMPTIME? var_decl
|
|
/ KEYWORD_COMPTIME block_expr_satement
|
|
/ KEYWORD_NOSUSPEND block_expr_satement
|
|
/ KEYWORD_SUSPEND block_expr_satement
|
|
/ KEYWORD_DEFER block_expr_satement
|
|
/ KEYWORD_ERRDEFER payload? block_expr_satement
|
|
/ if_statement
|
|
/ labeled_statement
|
|
/ switch_expr
|
|
/ assign_expr SEMICOLON
|
|
|
|
if_statement
|
|
<- if_prefix block_expr ( KEYWORD_ELSE payload? statement )?
|
|
/ if_prefix assign_expr ( SEMICOLON / KEYWORD_ELSE payload? statement )
|
|
|
|
labeled_statement <- block_label? (block / loop_statement)
|
|
|
|
loop_statement <- KEYWORD_INLINE? (for_statement / while_statement)
|
|
|
|
for_statement
|
|
<- for_prefix block_expr ( KEYWORD_ELSE statement )?
|
|
/ for_prefix assign_expr ( SEMICOLON / KEYWORD_ELSE statement )
|
|
|
|
while_statement
|
|
<- WhilePrefix block_expr ( KEYWORD_ELSE payload? statement )?
|
|
/ WhilePrefix assign_expr ( SEMICOLON / KEYWORD_ELSE payload? statement )
|
|
|
|
block_expr_satement
|
|
<- block_expr
|
|
/ assign_expr SEMICOLON
|
|
|
|
block_expr <- block_label? block
|
|
|
|
assign_expr <- expr (AssignOp expr)?
|
|
|
|
expr <- bool_or_expr
|
|
|
|
bool_or_expr <- BoolAndExpr (KEYWORD_OR BoolAndExpr)*
|
|
|
|
BoolAndExpr <- CompareExpr (KEYWORD_AND CompareExpr)*
|
|
|
|
CompareExpr <- BitwiseExpr (CompareOp BitwiseExpr)?
|
|
|
|
BitwiseExpr <- BitShiftExpr (BitwiseOp BitShiftExpr)*
|
|
|
|
BitShiftExpr <- AdditionExpr (BitShiftOp AdditionExpr)*
|
|
|
|
AdditionExpr <- MultiplyExpr (AdditionOp MultiplyExpr)*
|
|
|
|
MultiplyExpr <- PrefixExpr (MultiplyOp PrefixExpr)*
|
|
|
|
PrefixExpr <- PrefixOp* PrimaryExpr
|
|
|
|
PrimaryExpr
|
|
<- AsmExpr
|
|
/ IfExpr
|
|
/ KEYWORD_BREAK BreakLabel? expr?
|
|
/ KEYWORD_COMPTIME expr
|
|
/ KEYWORD_NOSUSPEND expr
|
|
/ KEYWORD_CONTINUE BreakLabel?
|
|
/ KEYWORD_RESUME expr
|
|
/ KEYWORD_RETURN expr?
|
|
/ block_label? LoopExpr
|
|
/ block
|
|
/ CurlySuffixExpr
|
|
|
|
IfExpr <- if_prefix expr (KEYWORD_ELSE payload? expr)?
|
|
|
|
block <- LBRACE statement* RBRACE
|
|
|
|
LoopExpr <- KEYWORD_INLINE? (ForExpr / WhileExpr)
|
|
|
|
ForExpr <- for_prefix expr (KEYWORD_ELSE expr)?
|
|
|
|
WhileExpr <- WhilePrefix expr (KEYWORD_ELSE payload? expr)?
|
|
|
|
CurlySuffixExpr <- type_expr InitList?
|
|
|
|
InitList
|
|
<- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
|
|
/ LBRACE expr (COMMA expr)* COMMA? RBRACE
|
|
/ LBRACE RBRACE
|
|
|
|
type_expr <- PrefixTypeOp* ErrorUnionExpr
|
|
|
|
ErrorUnionExpr <- SuffixExpr (EXCLAMATIONMARK type_expr)?
|
|
|
|
SuffixExpr
|
|
<- KEYWORD_ASYNC PrimaryTypeExpr SuffixOp* FnCallArguments
|
|
/ PrimaryTypeExpr (SuffixOp / FnCallArguments)*
|
|
|
|
PrimaryTypeExpr
|
|
<- BUILTINIDENTIFIER FnCallArguments
|
|
/ CHAR_LITERAL
|
|
/ ContainerDecl
|
|
/ DOT IDENTIFIER
|
|
/ DOT InitList
|
|
/ ErrorSetDecl
|
|
/ FLOAT
|
|
/ fn_proto
|
|
/ GroupedExpr
|
|
/ LabeledTypeExpr
|
|
/ IDENTIFIER
|
|
/ IfTypeExpr
|
|
/ INTEGER
|
|
/ KEYWORD_COMPTIME type_expr
|
|
/ KEYWORD_ERROR DOT IDENTIFIER
|
|
/ KEYWORD_ANYFRAME
|
|
/ KEYWORD_UNREACHABLE
|
|
/ STRINGLITERAL
|
|
/ switch_expr
|
|
|
|
ContainerDecl <- (KEYWORD_EXTERN / KEYWORD_PACKED)? ContainerDeclAuto
|
|
|
|
ErrorSetDecl <- KEYWORD_ERROR LBRACE IdentifierList RBRACE
|
|
|
|
GroupedExpr <- LPAREN expr RPAREN
|
|
|
|
IfTypeExpr <- if_prefix type_expr (KEYWORD_ELSE payload? type_expr)?
|
|
|
|
LabeledTypeExpr
|
|
<- block_label block
|
|
/ block_label? LoopTypeExpr
|
|
|
|
LoopTypeExpr <- KEYWORD_INLINE? (ForTypeExpr / WhileTypeExpr)
|
|
|
|
ForTypeExpr <- for_prefix type_expr (KEYWORD_ELSE type_expr)?
|
|
|
|
WhileTypeExpr <- WhilePrefix type_expr (KEYWORD_ELSE payload? type_expr)?
|
|
|
|
switch_expr <- KEYWORD_SWITCH LPAREN expr RPAREN LBRACE switch_prong_list RBRACE
|
|
|
|
AsmExpr <- KEYWORD_ASM KEYWORD_VOLATILE? LPAREN expr AsmOutput? RPAREN
|
|
|
|
AsmOutput <- COLON AsmOutputList AsmInput?
|
|
|
|
AsmOutputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN (MINUSRARROW type_expr / IDENTIFIER) RPAREN
|
|
|
|
AsmInput <- COLON AsmInputList AsmClobbers?
|
|
|
|
AsmInputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN expr RPAREN
|
|
|
|
AsmClobbers <- COLON StringList
|
|
|
|
BreakLabel <- COLON IDENTIFIER
|
|
|
|
block_label <- IDENTIFIER COLON
|
|
|
|
FieldInit <- DOT IDENTIFIER EQUAL expr
|
|
|
|
while_continue_expr <- COLON LPAREN assign_expr RPAREN
|
|
|
|
link_section <- KEYWORD_LINKSECTION LPAREN expr RPAREN
|
|
|
|
call_conv <- KEYWORD_CALLCONV LPAREN expr RPAREN
|
|
|
|
param_decl
|
|
<- doc_comment? (KEYWORD_NOALIAS / KEYWORD_COMPTIME)? (IDENTIFIER COLON)? param_type
|
|
/ DOT3
|
|
|
|
param_type
|
|
<- KEYWORD_ANYTYPE
|
|
/ type_expr
|
|
|
|
if_prefix <- KEYWORD_IF LPAREN expr RPAREN PtrPayload?
|
|
|
|
WhilePrefix <- KEYWORD_WHILE LPAREN expr RPAREN PtrPayload? while_continue_expr?
|
|
|
|
for_prefix <- KEYWORD_FOR LPAREN expr RPAREN ptr_index_payload
|
|
|
|
payload <- PIPE IDENTIFIER PIPE
|
|
|
|
PtrPayload <- PIPE ASTERISK? IDENTIFIER PIPE
|
|
|
|
ptr_index_payload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
|
|
|
|
|
|
SwitchProng <- SwitchCase EQUALRARROW PtrPayload? assign_expr
|
|
|
|
SwitchCase
|
|
<- SwitchItem (COMMA SwitchItem)* COMMA?
|
|
/ KEYWORD_ELSE
|
|
|
|
SwitchItem <- expr (DOT3 expr)?
|
|
|
|
AssignOp
|
|
<- ASTERISKEQUAL
|
|
/ SLASHEQUAL
|
|
/ PERCENTEQUAL
|
|
/ PLUSEQUAL
|
|
/ MINUSEQUAL
|
|
/ LARROW2EQUAL
|
|
/ RARROW2EQUAL
|
|
/ AMPERSANDEQUAL
|
|
/ CARETEQUAL
|
|
/ PIPEEQUAL
|
|
/ ASTERISKPERCENTEQUAL
|
|
/ PLUSPERCENTEQUAL
|
|
/ MINUSPERCENTEQUAL
|
|
/ EQUAL
|
|
|
|
CompareOp
|
|
<- EQUALEQUAL
|
|
/ EXCLAMATIONMARKEQUAL
|
|
/ LARROW
|
|
/ RARROW
|
|
/ LARROWEQUAL
|
|
/ RARROWEQUAL
|
|
|
|
BitwiseOp
|
|
<- AMPERSAND
|
|
/ CARET
|
|
/ PIPE
|
|
/ KEYWORD_ORELSE
|
|
/ KEYWORD_CATCH payload?
|
|
|
|
BitShiftOp
|
|
<- LARROW2
|
|
/ RARROW2
|
|
|
|
AdditionOp
|
|
<- PLUS
|
|
/ MINUS
|
|
/ PLUS2
|
|
/ PLUSPERCENT
|
|
/ MINUSPERCENT
|
|
|
|
MultiplyOp
|
|
<- PIPE2
|
|
/ ASTERISK
|
|
/ SLASH
|
|
/ PERCENT
|
|
/ ASTERISK2
|
|
/ ASTERISKPERCENT
|
|
|
|
PrefixOp
|
|
<- EXCLAMATIONMARK
|
|
/ MINUS
|
|
/ TILDE
|
|
/ MINUSPERCENT
|
|
/ AMPERSAND
|
|
/ KEYWORD_TRY
|
|
/ KEYWORD_AWAIT
|
|
|
|
PrefixTypeOp
|
|
<- QUESTIONMARK
|
|
/ KEYWORD_ANYFRAME MINUSRARROW
|
|
/ SliceTypeStart (byte_align / KEYWORD_CONST / KEYWORD_VOLATILE / KEYWORD_ALLOWZERO)*
|
|
/ PtrTypeStart (KEYWORD_ALIGN LPAREN expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_CONST / KEYWORD_VOLATILE / KEYWORD_ALLOWZERO)*
|
|
/ ArrayTypeStart
|
|
|
|
SuffixOp
|
|
<- LBRACKET expr (DOT2 (expr? (COLON expr)?)?)? RBRACKET
|
|
/ DOT IDENTIFIER
|
|
/ DOTASTERISK
|
|
/ DOTQUESTIONMARK
|
|
|
|
FnCallArguments <- LPAREN expr_list RPAREN
|
|
|
|
SliceTypeStart <- LBRACKET (COLON expr)? RBRACKET
|
|
|
|
PtrTypeStart
|
|
<- ASTERISK
|
|
/ ASTERISK2
|
|
/ LBRACKET ASTERISK (LETTERC / COLON expr)? RBRACKET
|
|
|
|
ArrayTypeStart <- LBRACKET expr (COLON expr)? RBRACKET
|
|
|
|
ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? container_members RBRACE
|
|
|
|
ContainerDeclType
|
|
<- KEYWORD_STRUCT
|
|
/ KEYWORD_OPAQUE
|
|
/ KEYWORD_ENUM (LPAREN expr RPAREN)?
|
|
/ KEYWORD_UNION (LPAREN (KEYWORD_ENUM (LPAREN expr RPAREN)? / expr) RPAREN)?
|
|
|
|
byte_align <- KEYWORD_ALIGN LPAREN expr RPAREN
|
|
|
|
IdentifierList <- (doc_comment? IDENTIFIER COMMA)* (doc_comment? IDENTIFIER)?
|
|
|
|
switch_prong_list <- (SwitchProng COMMA)* SwitchProng?
|
|
|
|
AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem?
|
|
|
|
AsmInputList <- (AsmInputItem COMMA)* AsmInputItem?
|
|
|
|
StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL?
|
|
|
|
param_decl_list <- (param_decl COMMA)* param_decl?
|
|
|
|
expr_list <- (expr COMMA)* expr?
|
|
|
|
eof <- !.
|
|
bin <- [01]
|
|
bin_ <- '_'? bin
|
|
oct <- [0-7]
|
|
oct_ <- '_'? oct
|
|
hex <- [0-9a-fA-F]
|
|
hex_ <- '_'? hex
|
|
dec <- [0-9]
|
|
dec_ <- '_'? dec
|
|
|
|
bin_int <- bin bin_*
|
|
oct_int <- oct oct_*
|
|
dec_int <- dec dec_*
|
|
hex_int <- hex hex_*
|
|
|
|
ox80_oxBF <- [\200-\277]
|
|
oxF4 <- '\364'
|
|
ox80_ox8F <- [\200-\217]
|
|
oxF1_oxF3 <- [\361-\363]
|
|
oxF0 <- '\360'
|
|
ox90_0xBF <- [\220-\277]
|
|
oxEE_oxEF <- [\356-\357]
|
|
oxED <- '\355'
|
|
ox80_ox9F <- [\200-\237]
|
|
oxE1_oxEC <- [\341-\354]
|
|
oxE0 <- '\340'
|
|
oxA0_oxBF <- [\240-\277]
|
|
oxC2_oxDF <- [\302-\337]
|
|
|
|
mb_utf8_literal <-
|
|
oxF4 ox80_ox8F ox80_oxBF ox80_oxBF
|
|
/ oxF1_oxF3 ox80_oxBF ox80_oxBF ox80_oxBF
|
|
/ oxF0 ox90_0xBF ox80_oxBF ox80_oxBF
|
|
/ oxEE_oxEF ox80_oxBF ox80_oxBF
|
|
/ oxED ox80_ox9F ox80_oxBF
|
|
/ oxE1_oxEC ox80_oxBF ox80_oxBF
|
|
/ oxE0 oxA0_oxBF ox80_oxBF
|
|
/ oxC2_oxDF ox80_oxBF
|
|
|
|
ascii_char_not_nl_slash_squote <- [\000-\011\013-\046-\050-\133\135-\177]
|
|
|
|
char_escape
|
|
<- "\\x" hex hex
|
|
/ "\\u{" hex+ "}"
|
|
/ "\\" [nr\\t'"]
|
|
char_char
|
|
<- mb_utf8_literal
|
|
/ char_escape
|
|
/ ascii_char_not_nl_slash_squote
|
|
|
|
string_char
|
|
<- char_escape
|
|
/ [^\\"\n]
|
|
|
|
container_doc_comment <- ('//!' [^\n]* [ \n]*)+
|
|
doc_comment <- ('///' [^\n]* [ \n]*)+
|
|
line_comment <- '//' ![!/][^\n]* / '////' [^\n]*
|
|
line_string <- ("\\\\" [^\n]* [ \n]*)+
|
|
|
|
CHAR_LITERAL <- "'" char_char "'"
|
|
FLOAT
|
|
<- "0x" hex_int "." hex_int ([pP] [-+]? dec_int)?
|
|
/ dec_int "." dec_int ([eE] [-+]? dec_int)?
|
|
/ "0x" hex_int [pP] [-+]? dec_int
|
|
/ dec_int [eE] [-+]? dec_int
|
|
INTEGER
|
|
<- "0b" bin_int
|
|
/ "0o" oct_int
|
|
/ "0x" hex_int
|
|
/ dec_int
|
|
STRINGLITERALSINGLE <- '"' string_char* '"'
|
|
STRINGLITERAL
|
|
<- STRINGLITERALSINGLE
|
|
/ (line_string)+
|
|
IDENTIFIER
|
|
<- !KEYWORD [A-Za-z_] [A-Za-z0-9_]*
|
|
BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]*
|
|
|
|
|
|
AMPERSAND <- '&' ![=]
|
|
AMPERSANDEQUAL <- '&='
|
|
ASTERISK <- '*' ![*%=]
|
|
ASTERISK2 <- '**'
|
|
ASTERISKEQUAL <- '*='
|
|
ASTERISKPERCENT <- '*%' ![=]
|
|
ASTERISKPERCENTEQUAL <- '*%='
|
|
CARET <- '^' ![=]
|
|
CARETEQUAL <- '^='
|
|
COLON <- ':'
|
|
COMMA <- ','
|
|
DOT <- '.' ![*.?]
|
|
DOT2 <- '..' ![.]
|
|
DOT3 <- '...'
|
|
DOTASTERISK <- '.*'
|
|
DOTQUESTIONMARK <- '.?'
|
|
EQUAL <- '=' ![>=]
|
|
EQUALEQUAL <- '=='
|
|
EQUALRARROW <- '=>'
|
|
EXCLAMATIONMARK <- '!' ![=]
|
|
EXCLAMATIONMARKEQUAL <- '!='
|
|
LARROW <- '<' ![<=]
|
|
LARROW2 <- '<<' ![=]
|
|
LARROW2EQUAL <- '<<='
|
|
LARROWEQUAL <- '<='
|
|
LBRACE <- '{'
|
|
LBRACKET <- '['
|
|
LPAREN <- '('
|
|
MINUS <- '-' ![%=>]
|
|
MINUSEQUAL <- '-='
|
|
MINUSPERCENT <- '-%' ![=]
|
|
MINUSPERCENTEQUAL <- '-%='
|
|
MINUSRARROW <- '->'
|
|
PERCENT <- '%' ![=]
|
|
PERCENTEQUAL <- '%='
|
|
PIPE <- '|' ![|=]
|
|
PIPE2 <- '||'
|
|
PIPEEQUAL <- '|='
|
|
PLUS <- '+' ![%+=]
|
|
PLUS2 <- '++'
|
|
PLUSEQUAL <- '+='
|
|
PLUSPERCENT <- '+%' ![=]
|
|
PLUSPERCENTEQUAL <- '+%='
|
|
LETTERC <- 'c'
|
|
QUESTIONMARK <- '?'
|
|
RARROW <- '>' ![>=]
|
|
RARROW2 <- '>>' ![=]
|
|
RARROW2EQUAL <- '>>='
|
|
RARROWEQUAL <- '>='
|
|
RBRACE <- '}'
|
|
RBRACKET <- ']'
|
|
RPAREN <- ')'
|
|
SEMICOLON <- ';'
|
|
SLASH <- '/' ![=]
|
|
SLASHEQUAL <- '/='
|
|
TILDE <- '~'
|
|
|
|
fragment end_of_word <- ![a-zA-Z0-9_]
|
|
KEYWORD_ALIGN <- 'align' end_of_word
|
|
KEYWORD_ALLOWZERO <- 'allowzero' end_of_word
|
|
KEYWORD_AND <- 'and' end_of_word
|
|
KEYWORD_ANYFRAME <- 'anyframe' end_of_word
|
|
KEYWORD_ANYTYPE <- 'anytype' 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_CALLCONV <- 'callconv' 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_FN <- 'fn' end_of_word
|
|
KEYWORD_FOR <- 'for' end_of_word
|
|
KEYWORD_IF <- 'if' end_of_word
|
|
KEYWORD_INLINE <- 'inline' end_of_word
|
|
KEYWORD_NOALIAS <- 'noalias' end_of_word
|
|
KEYWORD_NOSUSPEND <- 'nosuspend' end_of_word
|
|
KEYWORD_NOINLINE <- 'noinline' end_of_word
|
|
KEYWORD_OPAQUE <- 'opaque' end_of_word
|
|
KEYWORD_OR <- 'or' end_of_word
|
|
KEYWORD_ORELSE <- 'orelse' end_of_word
|
|
KEYWORD_PACKED <- 'packed' 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_STRUCT <- 'struct' end_of_word
|
|
KEYWORD_SUSPEND <- 'suspend' end_of_word
|
|
KEYWORD_SWITCH <- 'switch' end_of_word
|
|
KEYWORD_TEST <- 'test' end_of_word
|
|
KEYWORD_THREADLOCAL <- 'threadlocal' end_of_word
|
|
KEYWORD_TRY <- 'try' end_of_word
|
|
KEYWORD_UNION <- 'union' end_of_word
|
|
KEYWORD_UNREACHABLE <- 'unreachable' end_of_word
|
|
KEYWORD_USINGNAMESPACE <- 'usingnamespace' 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_ALLOWZERO / KEYWORD_AND / KEYWORD_ANYFRAME
|
|
/ KEYWORD_ANYTYPE / KEYWORD_ASM / KEYWORD_ASYNC / KEYWORD_AWAIT
|
|
/ KEYWORD_BREAK / KEYWORD_CALLCONV / KEYWORD_CATCH / KEYWORD_COMPTIME
|
|
/ KEYWORD_CONST / KEYWORD_CONTINUE / KEYWORD_DEFER / KEYWORD_ELSE
|
|
/ KEYWORD_ENUM / KEYWORD_ERRDEFER / KEYWORD_ERROR / KEYWORD_EXPORT
|
|
/ KEYWORD_EXTERN / KEYWORD_FN / KEYWORD_FOR / KEYWORD_IF
|
|
/ KEYWORD_INLINE / KEYWORD_NOALIAS / KEYWORD_NOSUSPEND / KEYWORD_NOINLINE
|
|
/ KEYWORD_OPAQUE / KEYWORD_OR / KEYWORD_ORELSE / KEYWORD_PACKED
|
|
/ KEYWORD_PUB / KEYWORD_RESUME / KEYWORD_RETURN / KEYWORD_LINKSECTION
|
|
/ KEYWORD_STRUCT / KEYWORD_SUSPEND / KEYWORD_SWITCH / KEYWORD_TEST
|
|
/ KEYWORD_THREADLOCAL / KEYWORD_TRY / KEYWORD_UNION / KEYWORD_UNREACHABLE
|
|
/ KEYWORD_USINGNAMESPACE / KEYWORD_VAR / KEYWORD_VOLATILE / KEYWORD_WHILE |