Skip to content

Commit 0e06208

Browse files
authored
Update not-scripting.pest
1 parent 07e6eb3 commit 0e06208

File tree

1 file changed

+30
-28
lines changed

1 file changed

+30
-28
lines changed

not-scripting.pest

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,46 @@ WHITESPACE = _{ " " | "\t" | "\n" | "\r" }
22

33
program = { SOI ~ statement* ~ EOI }
44

5-
statement = _{
6-
var_decl
7-
| assign
8-
| print_stmt
9-
| if_stmt
10-
| loop_stmt
11-
| fn_decl
12-
| fn_call
13-
| command
14-
| expr ~ ";"?
5+
statement = _{
6+
var_decl
7+
| assign
8+
| print_stmt
9+
| if_stmt
10+
| loop_stmt
11+
| fn_decl
12+
| fn_call
13+
| command
14+
| expr ~ ";"?
1515
| comment
1616
}
1717

1818
comment = { "!" ~ (!"\n" ~ ANY)* ~ ("\n" | EOI) }
1919

20-
var_decl = {
21-
( "let" | "var" ) ~ WHITESPACE+ ~ ident ~ ( ":" ~ type_name )? ~ WHITESPACE* ~ "=" ~ WHITESPACE* ~ expr ~ ";"?
20+
var_decl = {
21+
( "let" | "var" ) ~ WHITESPACE+ ~ ident ~ ( ":" ~ type_name )? ~ WHITESPACE* ~ "=" ~ WHITESPACE* ~ expr ~ ";"?
2222
}
2323

2424
assign = { ident ~ WHITESPACE* ~ "=" ~ WHITESPACE* ~ expr ~ ";"? }
2525

2626
type_name = @{ ascii_alpha+ } // e.g., i32, String, etc. (uproszczone)
2727

28-
print_stmt = {
29-
( "print" | "println!" | "writeln" ) ~ WHITESPACE* ~ "("? ~ expr ~ ")"? ~ ";"?
28+
print_stmt = {
29+
( "print" | "println!" | "writeln" ) ~ WHITESPACE* ~ "("? ~ expr ~ ")"? ~ ";"?
3030
}
3131

32-
if_stmt = {
33-
"if" ~ WHITESPACE+ ~ expr ~ WHITESPACE* ~ block
34-
~ ( WHITESPACE* ~ "else" ~ WHITESPACE* ~ block )?
32+
if_stmt = {
33+
"if" ~ WHITESPACE+ ~ expr ~ WHITESPACE* ~ block
34+
~ ( WHITESPACE* ~ "else" ~ WHITESPACE* ~ block )?
3535
}
3636

37-
loop_stmt = {
37+
loop_stmt = {
3838
"loop" ~ WHITESPACE* ~ ( expr ~ WHITESPACE* )? ~ block // loop { ... } lub loop 5 { ... }
3939
| "while" ~ WHITESPACE+ ~ expr ~ WHITESPACE* ~ block
4040
| "for" ~ WHITESPACE+ ~ ident ~ WHITESPACE+ ~ "in" ~ WHITESPACE+ ~ expr ~ WHITESPACE* ~ block // for x in range
4141
}
4242

43-
fn_decl = {
44-
( "fn" | "def" ) ~ WHITESPACE+ ~ ident ~ WHITESPACE* ~ "(" ~ param_list? ~ ")" ~ WHITESPACE* ~ block
43+
fn_decl = {
44+
( "fn" | "def" ) ~ WHITESPACE+ ~ ident ~ WHITESPACE* ~ "(" ~ param_list? ~ ")" ~ WHITESPACE* ~ block
4545
}
4646

4747
param_list = { param ~ ( "," ~ WHITESPACE* ~ param )* }
@@ -54,14 +54,16 @@ arg_list = { expr ~ ( "," ~ WHITESPACE* ~ expr )* }
5454

5555
command = { ">" ~ WHITESPACE* ~ (!"\n" ~ ANY)* ~ ("\n" | EOI) } // > echo "hello"
5656

57-
block = _{
58-
"{" ~ statement* ~ "}"
57+
block = _{
58+
"{" ~ statement* ~ "}"
5959
| "then" ~ statement* ~ "end" ~ ( "if" | "" )? // Delphi/Ruby style
6060
| "do" ~ statement* ~ "end" // Ruby style
6161
| "begin" ~ statement* ~ "end" ~ ";"? // Delphi
6262
}
6363

64-
expr = { logic_expr }
64+
expr = { range | logic_expr }
65+
66+
range = { arith_expr ~ ".." ~ arith_expr }
6567

6668
logic_expr = { compare_expr ~ ( WHITESPACE* ~ ( "&&" | "||" | "and" | "or" ) ~ WHITESPACE* ~ compare_expr )* }
6769

@@ -71,12 +73,12 @@ arith_expr = { term ~ ( WHITESPACE* ~ ( "+" | "-" ) ~ WHITESPACE* ~ term )* }
7173

7274
term = { factor ~ ( WHITESPACE* ~ ( "*" | "/" | "%" ) ~ WHITESPACE* ~ factor )* }
7375

74-
factor = _{
75-
"(" ~ expr ~ ")"
76-
| literal
77-
| ident
76+
factor = _{
77+
"(" ~ expr ~ ")"
78+
| literal
79+
| ident
7880
| fn_call // Allow calls in expr
79-
| unary
81+
| unary
8082
}
8183

8284
unary = { ( "!" | "-" ) ~ factor }

0 commit comments

Comments
 (0)