使用pest解析器,我试图构建一个能够识别变量名的语法,但是我不能让变量以下一个空格/非alpha字符结束。我试着用..。
var_name = {!reserved ~ ASCII_ALPHA+},它完全适用于单字母变量。
var_name = {!reserved ~ ASCII_ALPHA+},但这包括一个空格,当我执行x := 1时,解析器将var_name看作"x“。即使我对此没有意见,它也不适用于解析更大的表达式while true do { if a < b then b := b - a else a := a - b } =>解析错误
var_name = {!reserved ~ ASCII_ALPHA | ASCII_ALPHA+}的反应类似于单字符选项。
我也尝试使用'a'..'z',字母数字,以及其他选项,但没有改变。我可能错过了书中的一些东西,但我似乎找不到任何有用的东西。
其他信息:
谢谢,我们很感谢你的帮助
发布于 2021-04-16 00:10:58
我想出了答案。
var_name = @{!reserved ~ ASCII_ALPHA ~ ASCII_ALPHANUMERIC*}
书中写道:“两种原子规则都能防止隐含的空格:在原子规则中,倾斜~表示”紧接其后“。
我之前试过这样做,结果被困住了,不过很简单。
@说没有空格,保留保留使保留的单词远离变量。ASCII_ALPHA以一个字母字符开始变量,然后它后面可以有0或多个字母数字字符。
希望这能帮助其他被困在这上面的人。
https://stackoverflow.com/questions/67084357
复制相似问题