mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Add #reverse to odin/parser.
This commit is contained in:
@@ -419,6 +419,7 @@ Range_Stmt :: struct {
|
|||||||
in_pos: tokenizer.Pos,
|
in_pos: tokenizer.Pos,
|
||||||
expr: ^Expr,
|
expr: ^Expr,
|
||||||
body: ^Stmt,
|
body: ^Stmt,
|
||||||
|
reverse: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
Inline_Range_Stmt :: struct {
|
Inline_Range_Stmt :: struct {
|
||||||
|
|||||||
@@ -1431,6 +1431,18 @@ parse_stmt :: proc(p: ^Parser) -> ^ast.Stmt {
|
|||||||
return es
|
return es
|
||||||
case "unroll":
|
case "unroll":
|
||||||
return parse_unrolled_for_loop(p, tag)
|
return parse_unrolled_for_loop(p, tag)
|
||||||
|
case "reverse":
|
||||||
|
stmt := parse_for_stmt(p)
|
||||||
|
|
||||||
|
if range, is_range := stmt.derived.(^ast.Range_Stmt); is_range {
|
||||||
|
if range.reverse {
|
||||||
|
error(p, range.pos, "#reverse already applied to a 'for in' statement")
|
||||||
|
}
|
||||||
|
range.reverse = true
|
||||||
|
} else {
|
||||||
|
error(p, range.pos, "#reverse can only be applied to a 'for in' statement")
|
||||||
|
}
|
||||||
|
return stmt
|
||||||
case "include":
|
case "include":
|
||||||
error(p, tag.pos, "#include is not a valid import declaration kind. Did you meant 'import'?")
|
error(p, tag.pos, "#include is not a valid import declaration kind. Did you meant 'import'?")
|
||||||
return ast.new(ast.Bad_Stmt, tok.pos, end_pos(tag))
|
return ast.new(ast.Bad_Stmt, tok.pos, end_pos(tag))
|
||||||
|
|||||||
Reference in New Issue
Block a user