Refactored lvalues into just another expr

This commit is contained in:
2023-08-13 23:55:49 -05:00
parent 1de091f269
commit c6aea2f78f
4 changed files with 70 additions and 48 deletions
+3 -4
View File
@@ -19,8 +19,7 @@ escape = @{ "\\" ~ ("t" | "r" | "n" | "0" | "\\" | "\"") }
string_inner = ${ !("\"" | "\\") ~ ANY | escape }
string = ${ "\"" ~ string_inner* ~ "\"" }
assignment = { lvalue ~ "=" ~ rvalue }
lvalue = { (name ~ (modifier)*) | ("*" ~ expr) }
assignment = { expr ~ "=" ~ rvalue }
rvalue = { expr | string }
add = { "+" }
@@ -41,7 +40,7 @@ eq = { "==" }
ne = { "!=" }
lshift = { "<<" }
rshift = { ">>" }
prefix = { "*" | "-" | "!" }
prefix = { "*" | "-" | "!" | "&" }
operator = _{
add
@@ -65,7 +64,7 @@ operator = _{
}
expr = { prefix* ~ term ~ suffix* ~ (operator ~ prefix* ~ term ~ suffix*)* }
term = _{ number | name | "(" ~ expr ~ ")" | "&" ~ lvalue }
term = _{ number | name | "(" ~ expr ~ ")" }
suffix = _{ modifier | arglist }
modifier = _{ subscript | member }