首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pest解析器为变量构建语法

使用pest解析器为变量构建语法
EN

Stack Overflow用户
提问于 2021-04-14 01:28:57
回答 1查看 358关注 0票数 2

使用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',字母数字,以及其他选项,但没有改变。我可能错过了中的一些东西,但我似乎找不到任何有用的东西。

其他信息:

  • 在pest网站的底部,有一个语法https://pest.rs/的测试区域。
  • “保留”是保留名称的列表,如for、while和int。
  • 重申目标是让我的解析器识别变量名,‘a’.z‘和’A‘.Z’

谢谢,我们很感谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-16 00:10:58

我想出了答案。

var_name = @{!reserved ~ ASCII_ALPHA ~ ASCII_ALPHANUMERIC*}

书中写道:“两种原子规则都能防止隐含的空格:在原子规则中,倾斜~表示”紧接其后“。

我之前试过这样做,结果被困住了,不过很简单。

@说没有空格,保留保留使保留的单词远离变量。ASCII_ALPHA以一个字母字符开始变量,然后它后面可以有0或多个字母数字字符。

希望这能帮助其他被困在这上面的人。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67084357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档