using pest
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
WHITESPACE = _{ " " | "\t" | "\n" }
|
||||
|
||||
// [literals]
|
||||
round = { "(" ~ (expr)* ~ ")" }
|
||||
curly = { "{" ~ (code_expr)* ~ "}" }
|
||||
escape = { "\\" ~ ANY }
|
||||
raw_string = { (!("\\" | "\"") ~ ANY)+ }
|
||||
string = { "\"" ~ (raw_string | escape )* ~ "\"" }
|
||||
char = { "'" ~ (escape | ANY) ~ "'" }
|
||||
bool = @{"true" | "false"}
|
||||
semicolon = {";"}
|
||||
|
||||
// [numbers]
|
||||
hex = @{ "0" ~ ("x"|"X") ~ ('0'..'9' | 'a'..'f' | 'A'..'F')*}
|
||||
float = @{ ('0'..'9')* ~ "." ~ ('0'..'9')+ }
|
||||
int = @{ '0'..'9'+ }
|
||||
|
||||
// [identifiers]
|
||||
identifier = @{ !(hex|float|int) ~ ("_" | 'a'..'z' | 'a'..'z') ~ ( "_" | 'a'..'z' | 'a'..'z' | int )* }
|
||||
|
||||
// [definitions]
|
||||
var_def = { identifier ~ identifier }
|
||||
var_def_set = { var_def ~ "=" ~ expr ~ semicolon }
|
||||
func_def = { identifier ~ identifier ~ round ~ curly }
|
||||
|
||||
expr = {(
|
||||
round |
|
||||
curly |
|
||||
char |
|
||||
hex |
|
||||
float |
|
||||
int |
|
||||
bool |
|
||||
identifier |
|
||||
string |
|
||||
semicolon
|
||||
)+}
|
||||
|
||||
code_expr = {(
|
||||
round |
|
||||
curly |
|
||||
char |
|
||||
var_def_set |
|
||||
(var_def ~ semicolon) |
|
||||
hex |
|
||||
float |
|
||||
int |
|
||||
bool |
|
||||
// identifier |
|
||||
string |
|
||||
semicolon
|
||||
)+}
|
||||
|
||||
top_expr = {
|
||||
(
|
||||
func_def
|
||||
)+
|
||||
}
|
||||
Reference in New Issue
Block a user