Big Commit
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.
This commit is contained in:
parent
858fe11666
commit
fe22cc7665
13 changed files with 367 additions and 259 deletions
10
.ignore
Normal file
10
.ignore
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
00*
|
||||||
|
01*
|
||||||
|
02*
|
||||||
|
03*
|
||||||
|
04*
|
||||||
|
05*
|
||||||
|
06/deps/lua-
|
||||||
|
06/deps/lua-*
|
||||||
|
|
||||||
|
tofix
|
|
@ -8,6 +8,7 @@ nloaded' failed!"
|
||||||
Write rules into makefile to run tests
|
Write rules into makefile to run tests
|
||||||
1. Create test runner if it doesn't exist for lpeglable and parser-gen
|
1. Create test runner if it doesn't exist for lpeglable and parser-gen
|
||||||
2. Update tests to lua 5.4
|
2. Update tests to lua 5.4
|
||||||
|
2. Fix diagnostics in tofix
|
||||||
3. Write a 'make test' rule
|
3. Write a 'make test' rule
|
||||||
|
|
||||||
Implement backslashed escaped characters in grammar parser
|
Implement backslashed escaped characters in grammar parser
|
||||||
|
|
5
06/arith.peg
Normal file
5
06/arith.peg
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
Expr <- Sum
|
||||||
|
Sum <- Product (('+' / '-') Product)*
|
||||||
|
Product <- Power (('*' / '/') Power)*
|
||||||
|
Power <- Value ('^' Power)?
|
||||||
|
Value <- [0-9]+ / '(' Expr ')'
|
|
@ -1,4 +1,5 @@
|
||||||
local re = require("deps.lpeglabel.relabel")
|
local re = require("deps.lpeglabel.relabel")
|
||||||
|
local util = require("src.util")
|
||||||
|
|
||||||
local peg = {}
|
local peg = {}
|
||||||
|
|
||||||
|
@ -256,6 +257,7 @@ function peg.pegToAST(input, defs)
|
||||||
table.insert(err, string.rep(" ", col-1) .. "^")
|
table.insert(err, string.rep(" ", col-1) .. "^")
|
||||||
error("syntax error(s) in pattern\n" .. table.concat(err, "\n"), 3)
|
error("syntax error(s) in pattern\n" .. table.concat(err, "\n"), 3)
|
||||||
end
|
end
|
||||||
|
|
||||||
return r
|
return r
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
13
06/kitty
Executable file
13
06/kitty
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
new_tab code
|
||||||
|
layout horizontal
|
||||||
|
launch --title "code" bash
|
||||||
|
|
||||||
|
new_tab terminal
|
||||||
|
layout horizontal
|
||||||
|
launch bash
|
||||||
|
|
||||||
|
new_tab ranger
|
||||||
|
enabled_layouts horizontal,stack
|
||||||
|
layout horizontal
|
||||||
|
launch ranger
|
||||||
|
|
32
06/src/ast.lua
Normal file
32
06/src/ast.lua
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
util = require('src.util')
|
||||||
|
|
||||||
|
local function parse_tree_to_ast(parsetree)
|
||||||
|
stack = {{i=1,node=parsetree}};
|
||||||
|
|
||||||
|
while #stack > 0 do
|
||||||
|
current = table.remove(stack, 1)
|
||||||
|
|
||||||
|
for i = current.i, #current.node, 1 do
|
||||||
|
inner = current.node[i]
|
||||||
|
if type(inner) == "table" then
|
||||||
|
current.i = i + 1;
|
||||||
|
table.insert(stack, current)
|
||||||
|
table.insert(stack, {i=1, node=inner})
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
print(inner)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
local function print_ast(ast)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
parse_tree_to_ast = parse_tree_to_ast,
|
||||||
|
print = print_ast
|
||||||
|
}
|
|
@ -1,11 +1,24 @@
|
||||||
local pg = require("deps.parser-gen.parser-gen")
|
local pg = require("deps.parser-gen.parser-gen")
|
||||||
local util = require("src.util")
|
local util = require("src.util")
|
||||||
|
local ast = require("src.ast")
|
||||||
local errs = {errMissingThen = "Missing Then"} -- one custom error
|
|
||||||
pg.setlabels(errs)
|
|
||||||
|
|
||||||
local f = assert(io.open("zig.peg", "r"))
|
local f = assert(io.open("zig.peg", "r"))
|
||||||
local zig_grammar = f:read("*all")
|
local raw = f:read("*all")
|
||||||
f:close()
|
f:close()
|
||||||
pg.compile(zig_grammar)
|
local grammar = pg.compile(raw)
|
||||||
|
|
||||||
|
f = assert(io.open("test.zig", "r"))
|
||||||
|
raw = f:read("*all")
|
||||||
|
f:close()
|
||||||
|
|
||||||
|
local errors = 0
|
||||||
|
local function printerror(desc,line,col,sfail,trec)
|
||||||
|
errors = errors+1
|
||||||
|
print("Error #"..errors..": "..desc.." on line "..line.."(col "..col..")")
|
||||||
|
end
|
||||||
|
|
||||||
|
local result, errors = pg.parse(raw, grammar, printerror)
|
||||||
|
|
||||||
|
my_ast = ast.parse_tree_to_ast(result)
|
||||||
|
ast.print(my_ast)
|
||||||
|
|
||||||
|
|
6
06/test.zig
Normal file
6
06/test.zig
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
pub fn main() void {
|
||||||
|
const x = 0;
|
||||||
|
}
|
506
06/zig.peg
506
06/zig.peg
|
@ -1,69 +1,69 @@
|
||||||
Root <- skip container_doc_comment? ContainerMembers eof
|
Root <- container_doc_comment? container_members eof
|
||||||
|
|
||||||
ContainerMembers <- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations)
|
container_members <- container_declarations (container_field COMMA)* (container_field / container_declarations)
|
||||||
|
|
||||||
ContainerDeclarations
|
container_declarations
|
||||||
<- TestDecl ContainerDeclarations
|
<- test_decl container_declarations
|
||||||
/ TopLevelComptime ContainerDeclarations
|
/ top_level_comptime container_declarations
|
||||||
/ doc_comment? KEYWORD_pub? TopLevelDecl ContainerDeclarations
|
/ doc_comment? KEYWORD_PUB? top_level_decl container_declarations
|
||||||
|
/ end_of_word
|
||||||
|
|
||||||
|
test_decl <- doc_comment? KEYWORD_TEST block
|
||||||
|
|
||||||
TestDecl <- doc_comment? KEYWORD_test STRINGLITERALSINGLE? Block
|
top_level_comptime <- doc_comment? KEYWORD_COMPTIME block_expr
|
||||||
|
|
||||||
TopLevelComptime <- doc_comment? KEYWORD_comptime BlockExpr
|
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
|
||||||
|
|
||||||
TopLevelDecl
|
fn_proto <- KEYWORD_FN IDENTIFIER? LPAREN param_decl_list RPAREN byte_align? link_section? call_conv? EXCLAMATIONMARK? type_expr
|
||||||
<- (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE? / (KEYWORD_inline / KEYWORD_noinline))? FnProto (SEMICOLON / Block)
|
|
||||||
/ (KEYWORD_export / KEYWORD_extern STRINGLITERALSINGLE?)? KEYWORD_threadlocal? VarDecl
|
|
||||||
/ KEYWORD_usingnamespace Expr SEMICOLON
|
|
||||||
|
|
||||||
FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? LinkSection? CallConv? EXCLAMATIONMARK? TypeExpr
|
var_decl <- (KEYWORD_CONST / KEYWORD_VAR) IDENTIFIER (COLON type_expr)? byte_align? link_section? (EQUAL expr)? SEMICOLON
|
||||||
|
|
||||||
VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? LinkSection? (EQUAL Expr)? SEMICOLON
|
container_field <- doc_comment? KEYWORD_COMPTIME? IDENTIFIER (COLON (KEYWORD_ANYTYPE / type_expr) byte_align?)? (EQUAL expr)?
|
||||||
|
|
||||||
ContainerField <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON (KEYWORD_anytype / TypeExpr) ByteAlign?)? (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
|
||||||
|
|
||||||
Statement
|
if_statement
|
||||||
<- KEYWORD_comptime? VarDecl
|
<- if_prefix block_expr ( KEYWORD_ELSE payload? statement )?
|
||||||
/ KEYWORD_comptime BlockExprStatement
|
/ if_prefix assign_expr ( SEMICOLON / KEYWORD_ELSE payload? statement )
|
||||||
/ KEYWORD_nosuspend BlockExprStatement
|
|
||||||
/ KEYWORD_suspend BlockExprStatement
|
|
||||||
/ KEYWORD_defer BlockExprStatement
|
|
||||||
/ KEYWORD_errdefer Payload? BlockExprStatement
|
|
||||||
/ IfStatement
|
|
||||||
/ LabeledStatement
|
|
||||||
/ SwitchExpr
|
|
||||||
/ AssignExpr SEMICOLON
|
|
||||||
|
|
||||||
IfStatement
|
labeled_statement <- block_label? (block / loop_statement)
|
||||||
<- IfPrefix BlockExpr ( KEYWORD_else Payload? Statement )?
|
|
||||||
/ IfPrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )
|
|
||||||
|
|
||||||
LabeledStatement <- BlockLabel? (Block / LoopStatement)
|
loop_statement <- KEYWORD_INLINE? (for_statement / while_statement)
|
||||||
|
|
||||||
LoopStatement <- KEYWORD_inline? (ForStatement / WhileStatement)
|
for_statement
|
||||||
|
<- for_prefix block_expr ( KEYWORD_ELSE statement )?
|
||||||
|
/ for_prefix assign_expr ( SEMICOLON / KEYWORD_ELSE statement )
|
||||||
|
|
||||||
ForStatement
|
while_statement
|
||||||
<- ForPrefix BlockExpr ( KEYWORD_else Statement )?
|
<- WhilePrefix block_expr ( KEYWORD_ELSE payload? statement )?
|
||||||
/ ForPrefix AssignExpr ( SEMICOLON / KEYWORD_else Statement )
|
/ WhilePrefix assign_expr ( SEMICOLON / KEYWORD_ELSE payload? statement )
|
||||||
|
|
||||||
WhileStatement
|
block_expr_satement
|
||||||
<- WhilePrefix BlockExpr ( KEYWORD_else Payload? Statement )?
|
<- block_expr
|
||||||
/ WhilePrefix AssignExpr ( SEMICOLON / KEYWORD_else Payload? Statement )
|
/ assign_expr SEMICOLON
|
||||||
|
|
||||||
BlockExprStatement
|
block_expr <- block_label? block
|
||||||
<- BlockExpr
|
|
||||||
/ AssignExpr SEMICOLON
|
|
||||||
|
|
||||||
BlockExpr <- BlockLabel? Block
|
assign_expr <- expr (AssignOp expr)?
|
||||||
|
|
||||||
AssignExpr <- Expr (AssignOp Expr)?
|
expr <- bool_or_expr
|
||||||
|
|
||||||
Expr <- BoolOrExpr
|
bool_or_expr <- 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)?
|
||||||
|
|
||||||
|
@ -80,39 +80,39 @@ PrefixExpr <- PrefixOp* PrimaryExpr
|
||||||
PrimaryExpr
|
PrimaryExpr
|
||||||
<- AsmExpr
|
<- AsmExpr
|
||||||
/ IfExpr
|
/ IfExpr
|
||||||
/ KEYWORD_break BreakLabel? Expr?
|
/ KEYWORD_BREAK BreakLabel? expr?
|
||||||
/ KEYWORD_comptime Expr
|
/ KEYWORD_COMPTIME expr
|
||||||
/ KEYWORD_nosuspend Expr
|
/ KEYWORD_NOSUSPEND expr
|
||||||
/ KEYWORD_continue BreakLabel?
|
/ KEYWORD_CONTINUE BreakLabel?
|
||||||
/ KEYWORD_resume Expr
|
/ KEYWORD_RESUME expr
|
||||||
/ KEYWORD_return Expr?
|
/ KEYWORD_RETURN expr?
|
||||||
/ BlockLabel? LoopExpr
|
/ block_label? LoopExpr
|
||||||
/ Block
|
/ block
|
||||||
/ CurlySuffixExpr
|
/ CurlySuffixExpr
|
||||||
|
|
||||||
IfExpr <- IfPrefix Expr (KEYWORD_else Payload? Expr)?
|
IfExpr <- if_prefix expr (KEYWORD_ELSE payload? expr)?
|
||||||
|
|
||||||
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 <- for_prefix expr (KEYWORD_ELSE expr)?
|
||||||
|
|
||||||
WhileExpr <- WhilePrefix Expr (KEYWORD_else Payload? Expr)?
|
WhileExpr <- WhilePrefix expr (KEYWORD_ELSE payload? expr)?
|
||||||
|
|
||||||
CurlySuffixExpr <- TypeExpr InitList?
|
CurlySuffixExpr <- type_expr InitList?
|
||||||
|
|
||||||
InitList
|
InitList
|
||||||
<- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
|
<- LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
|
||||||
/ LBRACE Expr (COMMA Expr)* COMMA? RBRACE
|
/ LBRACE expr (COMMA expr)* COMMA? RBRACE
|
||||||
/ LBRACE RBRACE
|
/ LBRACE RBRACE
|
||||||
|
|
||||||
TypeExpr <- PrefixTypeOp* ErrorUnionExpr
|
type_expr <- PrefixTypeOp* ErrorUnionExpr
|
||||||
|
|
||||||
ErrorUnionExpr <- SuffixExpr (EXCLAMATIONMARK TypeExpr)?
|
ErrorUnionExpr <- SuffixExpr (EXCLAMATIONMARK type_expr)?
|
||||||
|
|
||||||
SuffixExpr
|
SuffixExpr
|
||||||
<- KEYWORD_async PrimaryTypeExpr SuffixOp* FnCallArguments
|
<- KEYWORD_ASYNC PrimaryTypeExpr SuffixOp* FnCallArguments
|
||||||
/ PrimaryTypeExpr (SuffixOp / FnCallArguments)*
|
/ PrimaryTypeExpr (SuffixOp / FnCallArguments)*
|
||||||
|
|
||||||
PrimaryTypeExpr
|
PrimaryTypeExpr
|
||||||
|
@ -123,91 +123,91 @@ PrimaryTypeExpr
|
||||||
/ DOT InitList
|
/ DOT InitList
|
||||||
/ ErrorSetDecl
|
/ ErrorSetDecl
|
||||||
/ FLOAT
|
/ FLOAT
|
||||||
/ FnProto
|
/ fn_proto
|
||||||
/ GroupedExpr
|
/ GroupedExpr
|
||||||
/ LabeledTypeExpr
|
/ LabeledTypeExpr
|
||||||
/ IDENTIFIER
|
/ IDENTIFIER
|
||||||
/ IfTypeExpr
|
/ IfTypeExpr
|
||||||
/ INTEGER
|
/ INTEGER
|
||||||
/ KEYWORD_comptime TypeExpr
|
/ KEYWORD_COMPTIME type_expr
|
||||||
/ KEYWORD_error DOT IDENTIFIER
|
/ KEYWORD_ERROR DOT IDENTIFIER
|
||||||
/ KEYWORD_anyframe
|
/ KEYWORD_ANYFRAME
|
||||||
/ KEYWORD_unreachable
|
/ KEYWORD_UNREACHABLE
|
||||||
/ STRINGLITERAL
|
/ STRINGLITERAL
|
||||||
/ SwitchExpr
|
/ switch_expr
|
||||||
|
|
||||||
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 <- if_prefix type_expr (KEYWORD_ELSE payload? type_expr)?
|
||||||
|
|
||||||
LabeledTypeExpr
|
LabeledTypeExpr
|
||||||
<- BlockLabel Block
|
<- block_label block
|
||||||
/ BlockLabel? LoopTypeExpr
|
/ block_label? LoopTypeExpr
|
||||||
|
|
||||||
LoopTypeExpr <- KEYWORD_inline? (ForTypeExpr / WhileTypeExpr)
|
LoopTypeExpr <- KEYWORD_INLINE? (ForTypeExpr / WhileTypeExpr)
|
||||||
|
|
||||||
ForTypeExpr <- ForPrefix TypeExpr (KEYWORD_else TypeExpr)?
|
ForTypeExpr <- for_prefix type_expr (KEYWORD_ELSE type_expr)?
|
||||||
|
|
||||||
WhileTypeExpr <- WhilePrefix TypeExpr (KEYWORD_else Payload? TypeExpr)?
|
WhileTypeExpr <- WhilePrefix type_expr (KEYWORD_ELSE payload? type_expr)?
|
||||||
|
|
||||||
SwitchExpr <- KEYWORD_switch LPAREN Expr RPAREN LBRACE SwitchProngList RBRACE
|
switch_expr <- KEYWORD_SWITCH LPAREN expr RPAREN LBRACE switch_prong_list RBRACE
|
||||||
|
|
||||||
AsmExpr <- KEYWORD_asm KEYWORD_volatile? LPAREN Expr AsmOutput? RPAREN
|
AsmExpr <- KEYWORD_ASM KEYWORD_VOLATILE? LPAREN expr 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 type_expr / IDENTIFIER) RPAREN
|
||||||
|
|
||||||
AsmInput <- COLON AsmInputList AsmClobbers?
|
AsmInput <- COLON AsmInputList AsmClobbers?
|
||||||
|
|
||||||
AsmInputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN Expr RPAREN
|
AsmInputItem <- LBRACKET IDENTIFIER RBRACKET STRINGLITERAL LPAREN expr RPAREN
|
||||||
|
|
||||||
AsmClobbers <- COLON StringList
|
AsmClobbers <- COLON StringList
|
||||||
|
|
||||||
BreakLabel <- COLON IDENTIFIER
|
BreakLabel <- COLON IDENTIFIER
|
||||||
|
|
||||||
BlockLabel <- IDENTIFIER COLON
|
block_label <- IDENTIFIER COLON
|
||||||
|
|
||||||
FieldInit <- DOT IDENTIFIER EQUAL Expr
|
FieldInit <- DOT IDENTIFIER EQUAL expr
|
||||||
|
|
||||||
WhileContinueExpr <- COLON LPAREN AssignExpr RPAREN
|
while_continue_expr <- COLON LPAREN assign_expr RPAREN
|
||||||
|
|
||||||
LinkSection <- KEYWORD_linksection LPAREN Expr RPAREN
|
link_section <- KEYWORD_LINKSECTION LPAREN expr RPAREN
|
||||||
|
|
||||||
CallConv <- KEYWORD_callconv LPAREN Expr RPAREN
|
call_conv <- KEYWORD_CALLCONV LPAREN expr RPAREN
|
||||||
|
|
||||||
ParamDecl
|
param_decl
|
||||||
<- doc_comment? (KEYWORD_noalias / KEYWORD_comptime)? (IDENTIFIER COLON)? ParamType
|
<- doc_comment? (KEYWORD_NOALIAS / KEYWORD_COMPTIME)? (IDENTIFIER COLON)? param_type
|
||||||
/ DOT3
|
/ DOT3
|
||||||
|
|
||||||
ParamType
|
param_type
|
||||||
<- KEYWORD_anytype
|
<- KEYWORD_ANYTYPE
|
||||||
/ TypeExpr
|
/ type_expr
|
||||||
|
|
||||||
IfPrefix <- KEYWORD_if LPAREN Expr RPAREN PtrPayload?
|
if_prefix <- KEYWORD_IF LPAREN expr RPAREN PtrPayload?
|
||||||
|
|
||||||
WhilePrefix <- KEYWORD_while LPAREN Expr RPAREN PtrPayload? WhileContinueExpr?
|
WhilePrefix <- KEYWORD_WHILE LPAREN expr RPAREN PtrPayload? while_continue_expr?
|
||||||
|
|
||||||
ForPrefix <- KEYWORD_for LPAREN Expr RPAREN PtrIndexPayload
|
for_prefix <- KEYWORD_FOR LPAREN expr RPAREN ptr_index_payload
|
||||||
|
|
||||||
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
|
ptr_index_payload <- PIPE ASTERISK? IDENTIFIER (COMMA IDENTIFIER)? PIPE
|
||||||
|
|
||||||
|
|
||||||
SwitchProng <- SwitchCase EQUALRARROW PtrPayload? AssignExpr
|
SwitchProng <- SwitchCase EQUALRARROW PtrPayload? assign_expr
|
||||||
|
|
||||||
SwitchCase
|
SwitchCase
|
||||||
<- SwitchItem (COMMA SwitchItem)* COMMA?
|
<- SwitchItem (COMMA SwitchItem)* COMMA?
|
||||||
/ KEYWORD_else
|
/ KEYWORD_ELSE
|
||||||
|
|
||||||
SwitchItem <- Expr (DOT3 Expr)?
|
SwitchItem <- expr (DOT3 expr)?
|
||||||
|
|
||||||
AssignOp
|
AssignOp
|
||||||
<- ASTERISKEQUAL
|
<- ASTERISKEQUAL
|
||||||
|
@ -237,8 +237,8 @@ BitwiseOp
|
||||||
<- AMPERSAND
|
<- AMPERSAND
|
||||||
/ CARET
|
/ CARET
|
||||||
/ PIPE
|
/ PIPE
|
||||||
/ KEYWORD_orelse
|
/ KEYWORD_ORELSE
|
||||||
/ KEYWORD_catch Payload?
|
/ KEYWORD_CATCH payload?
|
||||||
|
|
||||||
BitShiftOp
|
BitShiftOp
|
||||||
<- LARROW2
|
<- LARROW2
|
||||||
|
@ -265,46 +265,46 @@ PrefixOp
|
||||||
/ TILDE
|
/ TILDE
|
||||||
/ MINUSPERCENT
|
/ MINUSPERCENT
|
||||||
/ AMPERSAND
|
/ AMPERSAND
|
||||||
/ KEYWORD_try
|
/ KEYWORD_TRY
|
||||||
/ KEYWORD_await
|
/ KEYWORD_AWAIT
|
||||||
|
|
||||||
PrefixTypeOp
|
PrefixTypeOp
|
||||||
<- QUESTIONMARK
|
<- QUESTIONMARK
|
||||||
/ KEYWORD_anyframe MINUSRARROW
|
/ KEYWORD_ANYFRAME MINUSRARROW
|
||||||
/ SliceTypeStart (ByteAlign / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
|
/ 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)*
|
/ PtrTypeStart (KEYWORD_ALIGN LPAREN expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_CONST / KEYWORD_VOLATILE / KEYWORD_ALLOWZERO)*
|
||||||
/ ArrayTypeStart
|
/ ArrayTypeStart
|
||||||
|
|
||||||
SuffixOp
|
SuffixOp
|
||||||
<- LBRACKET Expr (DOT2 (Expr? (COLON Expr)?)?)? RBRACKET
|
<- LBRACKET expr (DOT2 (expr? (COLON expr)?)?)? RBRACKET
|
||||||
/ DOT IDENTIFIER
|
/ DOT IDENTIFIER
|
||||||
/ DOTASTERISK
|
/ DOTASTERISK
|
||||||
/ DOTQUESTIONMARK
|
/ DOTQUESTIONMARK
|
||||||
|
|
||||||
FnCallArguments <- LPAREN ExprList RPAREN
|
FnCallArguments <- LPAREN expr_list RPAREN
|
||||||
|
|
||||||
SliceTypeStart <- LBRACKET (COLON Expr)? RBRACKET
|
SliceTypeStart <- LBRACKET (COLON expr)? RBRACKET
|
||||||
|
|
||||||
PtrTypeStart
|
PtrTypeStart
|
||||||
<- ASTERISK
|
<- ASTERISK
|
||||||
/ ASTERISK2
|
/ ASTERISK2
|
||||||
/ LBRACKET ASTERISK (LETTERC / COLON Expr)? RBRACKET
|
/ LBRACKET ASTERISK (LETTERC / COLON expr)? RBRACKET
|
||||||
|
|
||||||
ArrayTypeStart <- LBRACKET Expr (COLON Expr)? RBRACKET
|
ArrayTypeStart <- LBRACKET expr (COLON expr)? RBRACKET
|
||||||
|
|
||||||
ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? ContainerMembers RBRACE
|
ContainerDeclAuto <- ContainerDeclType LBRACE container_doc_comment? container_members RBRACE
|
||||||
|
|
||||||
ContainerDeclType
|
ContainerDeclType
|
||||||
<- KEYWORD_struct
|
<- KEYWORD_STRUCT
|
||||||
/ KEYWORD_opaque
|
/ KEYWORD_OPAQUE
|
||||||
/ KEYWORD_enum (LPAREN Expr RPAREN)?
|
/ KEYWORD_ENUM (LPAREN expr RPAREN)?
|
||||||
/ KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)?
|
/ KEYWORD_UNION (LPAREN (KEYWORD_ENUM (LPAREN expr RPAREN)? / expr) RPAREN)?
|
||||||
|
|
||||||
ByteAlign <- KEYWORD_align LPAREN Expr RPAREN
|
byte_align <- KEYWORD_ALIGN LPAREN expr RPAREN
|
||||||
|
|
||||||
IdentifierList <- (doc_comment? IDENTIFIER COMMA)* (doc_comment? IDENTIFIER)?
|
IdentifierList <- (doc_comment? IDENTIFIER COMMA)* (doc_comment? IDENTIFIER)?
|
||||||
|
|
||||||
SwitchProngList <- (SwitchProng COMMA)* SwitchProng?
|
switch_prong_list <- (SwitchProng COMMA)* SwitchProng?
|
||||||
|
|
||||||
AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem?
|
AsmOutputList <- (AsmOutputItem COMMA)* AsmOutputItem?
|
||||||
|
|
||||||
|
@ -312,9 +312,9 @@ AsmInputList <- (AsmInputItem COMMA)* AsmInputItem?
|
||||||
|
|
||||||
StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL?
|
StringList <- (STRINGLITERAL COMMA)* STRINGLITERAL?
|
||||||
|
|
||||||
ParamDeclList <- (ParamDecl COMMA)* ParamDecl?
|
param_decl_list <- (param_decl COMMA)* param_decl?
|
||||||
|
|
||||||
ExprList <- (Expr COMMA)* Expr?
|
expr_list <- (expr COMMA)* expr?
|
||||||
|
|
||||||
eof <- !.
|
eof <- !.
|
||||||
bin <- [01]
|
bin <- [01]
|
||||||
|
@ -374,145 +374,143 @@ container_doc_comment <- ('//!' [^\n]* [ \n]*)+
|
||||||
doc_comment <- ('///' [^\n]* [ \n]*)+
|
doc_comment <- ('///' [^\n]* [ \n]*)+
|
||||||
line_comment <- '//' ![!/][^\n]* / '////' [^\n]*
|
line_comment <- '//' ![!/][^\n]* / '////' [^\n]*
|
||||||
line_string <- ("\\\\" [^\n]* [ \n]*)+
|
line_string <- ("\\\\" [^\n]* [ \n]*)+
|
||||||
skip <- ([ \n] / line_comment)*
|
|
||||||
|
|
||||||
CHAR_LITERAL <- "'" char_char "'" skip
|
CHAR_LITERAL <- "'" char_char "'"
|
||||||
FLOAT
|
FLOAT
|
||||||
<- "0x" hex_int "." hex_int ([pP] [-+]? dec_int)? skip
|
<- "0x" hex_int "." hex_int ([pP] [-+]? dec_int)?
|
||||||
/ dec_int "." dec_int ([eE] [-+]? dec_int)? skip
|
/ dec_int "." dec_int ([eE] [-+]? dec_int)?
|
||||||
/ "0x" hex_int [pP] [-+]? dec_int skip
|
/ "0x" hex_int [pP] [-+]? dec_int
|
||||||
/ dec_int [eE] [-+]? dec_int skip
|
/ dec_int [eE] [-+]? dec_int
|
||||||
INTEGER
|
INTEGER
|
||||||
<- "0b" bin_int skip
|
<- "0b" bin_int
|
||||||
/ "0o" oct_int skip
|
/ "0o" oct_int
|
||||||
/ "0x" hex_int skip
|
/ "0x" hex_int
|
||||||
/ dec_int skip
|
/ dec_int
|
||||||
STRINGLITERALSINGLE <- "\"" string_char* "\"" skip
|
STRINGLITERALSINGLE <- '"' string_char* '"'
|
||||||
STRINGLITERAL
|
STRINGLITERAL
|
||||||
<- STRINGLITERALSINGLE
|
<- STRINGLITERALSINGLE
|
||||||
/ (line_string skip)+
|
/ (line_string)+
|
||||||
IDENTIFIER
|
IDENTIFIER
|
||||||
<- !keyword [A-Za-z_] [A-Za-z0-9_]* skip
|
<- !KEYWORD [A-Za-z_] [A-Za-z0-9_]*
|
||||||
/ "@\"" string_char* "\"" skip
|
BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]*
|
||||||
BUILTINIDENTIFIER <- "@"[A-Za-z_][A-Za-z0-9_]* skip
|
|
||||||
|
|
||||||
|
|
||||||
AMPERSAND <- '&' ![=] skip
|
AMPERSAND <- '&' ![=]
|
||||||
AMPERSANDEQUAL <- '&=' skip
|
AMPERSANDEQUAL <- '&='
|
||||||
ASTERISK <- '*' ![*%=] skip
|
ASTERISK <- '*' ![*%=]
|
||||||
ASTERISK2 <- '**' skip
|
ASTERISK2 <- '**'
|
||||||
ASTERISKEQUAL <- '*=' skip
|
ASTERISKEQUAL <- '*='
|
||||||
ASTERISKPERCENT <- '*%' ![=] skip
|
ASTERISKPERCENT <- '*%' ![=]
|
||||||
ASTERISKPERCENTEQUAL <- '*%=' skip
|
ASTERISKPERCENTEQUAL <- '*%='
|
||||||
CARET <- '^' ![=] skip
|
CARET <- '^' ![=]
|
||||||
CARETEQUAL <- '^=' skip
|
CARETEQUAL <- '^='
|
||||||
COLON <- ':' skip
|
COLON <- ':'
|
||||||
COMMA <- ',' skip
|
COMMA <- ','
|
||||||
DOT <- '.' ![*.?] skip
|
DOT <- '.' ![*.?]
|
||||||
DOT2 <- '..' ![.] skip
|
DOT2 <- '..' ![.]
|
||||||
DOT3 <- '...' skip
|
DOT3 <- '...'
|
||||||
DOTASTERISK <- '.*' skip
|
DOTASTERISK <- '.*'
|
||||||
DOTQUESTIONMARK <- '.?' skip
|
DOTQUESTIONMARK <- '.?'
|
||||||
EQUAL <- '=' ![>=] skip
|
EQUAL <- '=' ![>=]
|
||||||
EQUALEQUAL <- '==' skip
|
EQUALEQUAL <- '=='
|
||||||
EQUALRARROW <- '=>' skip
|
EQUALRARROW <- '=>'
|
||||||
EXCLAMATIONMARK <- '!' ![=] skip
|
EXCLAMATIONMARK <- '!' ![=]
|
||||||
EXCLAMATIONMARKEQUAL <- '!=' skip
|
EXCLAMATIONMARKEQUAL <- '!='
|
||||||
LARROW <- '<' ![<=] skip
|
LARROW <- '<' ![<=]
|
||||||
LARROW2 <- '<<' ![=] skip
|
LARROW2 <- '<<' ![=]
|
||||||
LARROW2EQUAL <- '<<=' skip
|
LARROW2EQUAL <- '<<='
|
||||||
LARROWEQUAL <- '<=' skip
|
LARROWEQUAL <- '<='
|
||||||
LBRACE <- '{' skip
|
LBRACE <- '{'
|
||||||
LBRACKET <- '[' skip
|
LBRACKET <- '['
|
||||||
LPAREN <- '(' skip
|
LPAREN <- '('
|
||||||
MINUS <- '-' ![%=>] skip
|
MINUS <- '-' ![%=>]
|
||||||
MINUSEQUAL <- '-=' skip
|
MINUSEQUAL <- '-='
|
||||||
MINUSPERCENT <- '-%' ![=] skip
|
MINUSPERCENT <- '-%' ![=]
|
||||||
MINUSPERCENTEQUAL <- '-%=' skip
|
MINUSPERCENTEQUAL <- '-%='
|
||||||
MINUSRARROW <- '->' skip
|
MINUSRARROW <- '->'
|
||||||
PERCENT <- '%' ![=] skip
|
PERCENT <- '%' ![=]
|
||||||
PERCENTEQUAL <- '%=' skip
|
PERCENTEQUAL <- '%='
|
||||||
PIPE <- '|' ![|=] skip
|
PIPE <- '|' ![|=]
|
||||||
PIPE2 <- '||' skip
|
PIPE2 <- '||'
|
||||||
PIPEEQUAL <- '|=' skip
|
PIPEEQUAL <- '|='
|
||||||
PLUS <- '+' ![%+=] skip
|
PLUS <- '+' ![%+=]
|
||||||
PLUS2 <- '++' skip
|
PLUS2 <- '++'
|
||||||
PLUSEQUAL <- '+=' skip
|
PLUSEQUAL <- '+='
|
||||||
PLUSPERCENT <- '+%' ![=] skip
|
PLUSPERCENT <- '+%' ![=]
|
||||||
PLUSPERCENTEQUAL <- '+%=' skip
|
PLUSPERCENTEQUAL <- '+%='
|
||||||
LETTERC <- 'c' skip
|
LETTERC <- 'c'
|
||||||
QUESTIONMARK <- '?' skip
|
QUESTIONMARK <- '?'
|
||||||
RARROW <- '>' ![>=] skip
|
RARROW <- '>' ![>=]
|
||||||
RARROW2 <- '>>' ![=] skip
|
RARROW2 <- '>>' ![=]
|
||||||
RARROW2EQUAL <- '>>=' skip
|
RARROW2EQUAL <- '>>='
|
||||||
RARROWEQUAL <- '>=' skip
|
RARROWEQUAL <- '>='
|
||||||
RBRACE <- '}' skip
|
RBRACE <- '}'
|
||||||
RBRACKET <- ']' skip
|
RBRACKET <- ']'
|
||||||
RPAREN <- ')' skip
|
RPAREN <- ')'
|
||||||
SEMICOLON <- ';' skip
|
SEMICOLON <- ';'
|
||||||
SLASH <- '/' ![=] skip
|
SLASH <- '/' ![=]
|
||||||
SLASHEQUAL <- '/=' skip
|
SLASHEQUAL <- '/='
|
||||||
TILDE <- '~' skip
|
TILDE <- '~'
|
||||||
|
|
||||||
end_of_word <- ![a-zA-Z0-9_] skip
|
fragment end_of_word <- ![a-zA-Z0-9_]
|
||||||
KEYWORD_align <- 'align' end_of_word
|
KEYWORD_ALIGN <- 'align' end_of_word
|
||||||
KEYWORD_allowzero <- 'allowzero' end_of_word
|
KEYWORD_ALLOWZERO <- 'allowzero' end_of_word
|
||||||
KEYWORD_and <- 'and' end_of_word
|
KEYWORD_AND <- 'and' end_of_word
|
||||||
KEYWORD_anyframe <- 'anyframe' end_of_word
|
KEYWORD_ANYFRAME <- 'anyframe' end_of_word
|
||||||
KEYWORD_anytype <- 'anytype' end_of_word
|
KEYWORD_ANYTYPE <- 'anytype' end_of_word
|
||||||
KEYWORD_asm <- 'asm' end_of_word
|
KEYWORD_ASM <- 'asm' end_of_word
|
||||||
KEYWORD_async <- 'async' end_of_word
|
KEYWORD_ASYNC <- 'async' end_of_word
|
||||||
KEYWORD_await <- 'await' end_of_word
|
KEYWORD_AWAIT <- 'await' end_of_word
|
||||||
KEYWORD_break <- 'break' end_of_word
|
KEYWORD_BREAK <- 'break' end_of_word
|
||||||
KEYWORD_callconv <- 'callconv' end_of_word
|
KEYWORD_CALLCONV <- 'callconv' end_of_word
|
||||||
KEYWORD_catch <- 'catch' end_of_word
|
KEYWORD_CATCH <- 'catch' end_of_word
|
||||||
KEYWORD_comptime <- 'comptime' end_of_word
|
KEYWORD_COMPTIME <- 'comptime' end_of_word
|
||||||
KEYWORD_const <- 'const' end_of_word
|
KEYWORD_CONST <- 'const' end_of_word
|
||||||
KEYWORD_continue <- 'continue' end_of_word
|
KEYWORD_CONTINUE <- 'continue' end_of_word
|
||||||
KEYWORD_defer <- 'defer' end_of_word
|
KEYWORD_DEFER <- 'defer' end_of_word
|
||||||
KEYWORD_else <- 'else' end_of_word
|
KEYWORD_ELSE <- 'else' end_of_word
|
||||||
KEYWORD_enum <- 'enum' end_of_word
|
KEYWORD_ENUM <- 'enum' end_of_word
|
||||||
KEYWORD_errdefer <- 'errdefer' end_of_word
|
KEYWORD_ERRDEFER <- 'errdefer' end_of_word
|
||||||
KEYWORD_error <- 'error' end_of_word
|
KEYWORD_ERROR <- 'error' end_of_word
|
||||||
KEYWORD_export <- 'export' end_of_word
|
KEYWORD_EXPORT <- 'export' end_of_word
|
||||||
KEYWORD_extern <- 'extern' end_of_word
|
KEYWORD_EXTERN <- 'extern' end_of_word
|
||||||
KEYWORD_fn <- 'fn' end_of_word
|
KEYWORD_FN <- 'fn' end_of_word
|
||||||
KEYWORD_for <- 'for' end_of_word
|
KEYWORD_FOR <- 'for' end_of_word
|
||||||
KEYWORD_if <- 'if' end_of_word
|
KEYWORD_IF <- 'if' end_of_word
|
||||||
KEYWORD_inline <- 'inline' end_of_word
|
KEYWORD_INLINE <- 'inline' end_of_word
|
||||||
KEYWORD_noalias <- 'noalias' end_of_word
|
KEYWORD_NOALIAS <- 'noalias' end_of_word
|
||||||
KEYWORD_nosuspend <- 'nosuspend' end_of_word
|
KEYWORD_NOSUSPEND <- 'nosuspend' end_of_word
|
||||||
KEYWORD_noinline <- 'noinline' end_of_word
|
KEYWORD_NOINLINE <- 'noinline' end_of_word
|
||||||
KEYWORD_opaque <- 'opaque' end_of_word
|
KEYWORD_OPAQUE <- 'opaque' end_of_word
|
||||||
KEYWORD_or <- 'or' end_of_word
|
KEYWORD_OR <- 'or' end_of_word
|
||||||
KEYWORD_orelse <- 'orelse' end_of_word
|
KEYWORD_ORELSE <- 'orelse' end_of_word
|
||||||
KEYWORD_packed <- 'packed' end_of_word
|
KEYWORD_PACKED <- 'packed' end_of_word
|
||||||
KEYWORD_pub <- 'pub' end_of_word
|
KEYWORD_PUB <- 'pub' end_of_word
|
||||||
KEYWORD_resume <- 'resume' end_of_word
|
KEYWORD_RESUME <- 'resume' end_of_word
|
||||||
KEYWORD_return <- 'return' end_of_word
|
KEYWORD_RETURN <- 'return' end_of_word
|
||||||
KEYWORD_linksection <- 'linksection' end_of_word
|
KEYWORD_LINKSECTION <- 'linksection' end_of_word
|
||||||
KEYWORD_struct <- 'struct' end_of_word
|
KEYWORD_STRUCT <- 'struct' end_of_word
|
||||||
KEYWORD_suspend <- 'suspend' end_of_word
|
KEYWORD_SUSPEND <- 'suspend' end_of_word
|
||||||
KEYWORD_switch <- 'switch' end_of_word
|
KEYWORD_SWITCH <- 'switch' end_of_word
|
||||||
KEYWORD_test <- 'test' end_of_word
|
KEYWORD_TEST <- 'test' end_of_word
|
||||||
KEYWORD_threadlocal <- 'threadlocal' end_of_word
|
KEYWORD_THREADLOCAL <- 'threadlocal' end_of_word
|
||||||
KEYWORD_try <- 'try' end_of_word
|
KEYWORD_TRY <- 'try' end_of_word
|
||||||
KEYWORD_union <- 'union' end_of_word
|
KEYWORD_UNION <- 'union' end_of_word
|
||||||
KEYWORD_unreachable <- 'unreachable' end_of_word
|
KEYWORD_UNREACHABLE <- 'unreachable' end_of_word
|
||||||
KEYWORD_usingnamespace <- 'usingnamespace' end_of_word
|
KEYWORD_USINGNAMESPACE <- 'usingnamespace' end_of_word
|
||||||
KEYWORD_var <- 'var' end_of_word
|
KEYWORD_VAR <- 'var' end_of_word
|
||||||
KEYWORD_volatile <- 'volatile' end_of_word
|
KEYWORD_VOLATILE <- 'volatile' end_of_word
|
||||||
KEYWORD_while <- 'while' end_of_word
|
KEYWORD_WHILE <- 'while' end_of_word
|
||||||
|
|
||||||
keyword <- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe
|
KEYWORD <- KEYWORD_ALIGN / KEYWORD_ALLOWZERO / KEYWORD_AND / KEYWORD_ANYFRAME
|
||||||
/ KEYWORD_anytype / KEYWORD_asm / KEYWORD_async / KEYWORD_await
|
/ KEYWORD_ANYTYPE / KEYWORD_ASM / KEYWORD_ASYNC / KEYWORD_AWAIT
|
||||||
/ KEYWORD_break / KEYWORD_callconv / KEYWORD_catch / KEYWORD_comptime
|
/ KEYWORD_BREAK / KEYWORD_CALLCONV / KEYWORD_CATCH / KEYWORD_COMPTIME
|
||||||
/ KEYWORD_const / KEYWORD_continue / KEYWORD_defer / KEYWORD_else
|
/ KEYWORD_CONST / KEYWORD_CONTINUE / KEYWORD_DEFER / KEYWORD_ELSE
|
||||||
/ KEYWORD_enum / KEYWORD_errdefer / KEYWORD_error / KEYWORD_export
|
/ KEYWORD_ENUM / KEYWORD_ERRDEFER / KEYWORD_ERROR / KEYWORD_EXPORT
|
||||||
/ KEYWORD_extern / KEYWORD_fn / KEYWORD_for / KEYWORD_if
|
/ KEYWORD_EXTERN / KEYWORD_FN / KEYWORD_FOR / KEYWORD_IF
|
||||||
/ KEYWORD_inline / KEYWORD_noalias / KEYWORD_nosuspend / KEYWORD_noinline
|
/ KEYWORD_INLINE / KEYWORD_NOALIAS / KEYWORD_NOSUSPEND / KEYWORD_NOINLINE
|
||||||
/ KEYWORD_opaque / KEYWORD_or / KEYWORD_orelse / KEYWORD_packed
|
/ KEYWORD_OPAQUE / KEYWORD_OR / KEYWORD_ORELSE / KEYWORD_PACKED
|
||||||
/ KEYWORD_pub / KEYWORD_resume / KEYWORD_return / KEYWORD_linksection
|
/ KEYWORD_PUB / KEYWORD_RESUME / KEYWORD_RETURN / KEYWORD_LINKSECTION
|
||||||
/ KEYWORD_struct / KEYWORD_suspend / KEYWORD_switch / KEYWORD_test
|
/ KEYWORD_STRUCT / KEYWORD_SUSPEND / KEYWORD_SWITCH / KEYWORD_TEST
|
||||||
/ KEYWORD_threadlocal / KEYWORD_try / KEYWORD_union / KEYWORD_unreachable
|
/ KEYWORD_THREADLOCAL / KEYWORD_TRY / KEYWORD_UNION / KEYWORD_UNREACHABLE
|
||||||
/ KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while
|
/ KEYWORD_USINGNAMESPACE / KEYWORD_VAR / KEYWORD_VOLATILE / KEYWORD_WHILE
|
17
kitty
Executable file
17
kitty
Executable file
|
@ -0,0 +1,17 @@
|
||||||
|
new_tab code
|
||||||
|
layout horizontal
|
||||||
|
launch --title "code" bash
|
||||||
|
|
||||||
|
new_tab terminal
|
||||||
|
layout horizontal
|
||||||
|
launch bash
|
||||||
|
|
||||||
|
new_tab webdev
|
||||||
|
layout horizontal
|
||||||
|
launch bash
|
||||||
|
|
||||||
|
new_tab ranger
|
||||||
|
enabled_layouts horizontal,stack
|
||||||
|
layout horizontal
|
||||||
|
launch ranger
|
||||||
|
|
5
kitty.conf
Normal file
5
kitty.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
map alt+, launch ./scripts/run.sh
|
||||||
|
map alt+. launch ./scripts/build.sh
|
||||||
|
map alt+shift+. launch ./scripts/test.sh
|
||||||
|
map alt+shfit+, launch ./scripts/debug.sh
|
||||||
|
map alt+shift+m launch ./scripts/script2.sh
|
3
scripts/build.sh
Executable file
3
scripts/build.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
./bootstrap.sh
|
3
scripts/run.sh
Executable file
3
scripts/run.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cd 06 && ./zsh 2>&1 | less -R +F
|
Loading…
Add table
Add a link
Reference in a new issue