@@ -15,7 +15,7 @@ newline = _{ "\\n" | "\\r\\n" }
1515line_comment = _{ "//" ~ (!newline ~ ANY)* }
1616
1717main = { SOI ~ item ~ ("," ~ item)* ~ EOI }
18- item = { ident ~ "=" ~ number }
18+ item = { #name = ident ~ "=" ~ #value = number }
1919ident = @{ ("_" | ASCII_ALPHA) ~ ("_" | ASCII_ALPHANUMERIC)* }
2020number = @{ ASCII_DIGIT+ }
2121` ,
@@ -28,9 +28,9 @@ number = @{ ASCII_DIGIT+ }
2828// Arithmetic with precedence and recursion.
2929// Entry rule: expr
3030// Try: 1 + 2 * 3, (1 + 2) * 3
31- expr = { term ~ (("+" | "-") ~ term)* }
32- term = { factor ~ (("*" | "/") ~ factor)* }
33- factor = { number | "(" ~ expr ~ ")" }
31+ expr = { term ~ ( #op = ("+" | "-") ~ term )* }
32+ term = { factor ~ ( #op = ("*" | "/") ~ factor )* }
33+ factor = { #inner = number | "(" ~ #inner = expr ~ ")" }
3434number = @{ ASCII_DIGIT+ }
3535WHITESPACE = _{ " " | "\\t" }
3636` ,
@@ -45,7 +45,7 @@ WHITESPACE = _{ " " | "\\t" }
4545// Try: #ff00aa, #AABBCC
4646WHITESPACE = _{ " " }
4747main = { SOI ~ hex_color ~ EOI }
48- hex_color = { "#" ~ hex_digit{6} }
48+ hex_color = { "#" ~ #body = hex_digit{6} }
4949hex_digit = _{ '0'..'9' | 'a'..'f' | 'A'..'F' }
5050` ,
5151 } ,
@@ -58,7 +58,7 @@ hex_digit = _{ '0'..'9' | 'a'..'f' | 'A'..'F' }
5858// Entry rule: main
5959// Try: select from foo, SELECT FROM bar
6060WHITESPACE = _{ " " }
61- main = { SOI ~ ^"select" ~ ^"from" ~ ident ~ EOI }
61+ main = { SOI ~ #select = ^"select" ~ #from = ^"from" ~ #table = ident ~ EOI }
6262ident = @{ ("_" | ASCII_ALPHA) ~ ("_" | ASCII_ALPHANUMERIC)* }
6363` ,
6464 } ,
@@ -71,7 +71,7 @@ ident = @{ ("_" | ASCII_ALPHA) ~ ("_" | ASCII_ALPHANUMERIC)* }
7171// Entry rule: main
7272// Try: hello world end, foo_bar end
7373WHITESPACE = _{ " " }
74- main = { SOI ~ ident ~ (!"end" ~ ANY)* ~ "end" ~ EOI }
74+ main = { SOI ~ #id = ident ~ #prefix = (!"end" ~ ANY)* ~ "end" ~ EOI }
7575ident = @{ ("_" | ASCII_ALPHA) ~ ("_" | ASCII_ALPHANUMERIC)* }
7676` ,
7777 } ,
0 commit comments