我有以下 Pest ( https://pest.rs ) 语法
name = {ASCII_ALPHA+}
fragment = { "fragment" ~ name }
Run Code Online (Sandbox Code Playgroud)
当我尝试fragment name使用它进行解析时,我收到此错误:
--> 1:9
|
1 | fragment name
| ^---
|
= expected name
Run Code Online (Sandbox Code Playgroud) 我正在使用pest crate 在 Rust 中实现递归语法:
id = _{ ASCII_ALPHA_LOWER ~ (ASCII_ALPHANUMERIC|"_")* }
integer = _{ (ASCII_NONZERO_DIGIT ~ ASCII_DIGIT*)|"0" }
real = _{ ((integer ~ "." ~ ASCII_DIGIT*) | (integer? ~ "." ~ ASCII_DIGIT+)) ~ (("e"|"E") ~ ("-"|"+")? ~ ASCII_DIGIT+)? }
unaryop = _{ "sin"|"cos"|"tan"|"exp"|"ln"|"sqrt" }
inner_exp = _{ real|integer|"pi"|id }
exp = { SOI ~ ( inner_exp | (exp ~ ( "+"|"-"|"*"|"/"|"^" ) ~ inner_exp) | ("-" ~ exp) | ("(" ~ exp ~ ")") | (unaryop ~ "(" …Run Code Online (Sandbox Code Playgroud)