javascript - PEGjs 可以将语句的“结束”字符作为输入吗?
问题描述
我一直在研究 PEGjs 语法。大多数都有效,但我在最后一件事上遇到了麻烦。我的解析器接受如下所示的输入:First:[content];
并返回类型(第一个或第二个)和内容中的每个元素(“c”、“o”...)。我还需要它能够]
作为输入,因此它应该能够解析以下内容:First:[co]nt];
.
有谁知道我该怎么做?这是我到目前为止所拥有的:
prod = unit+
unit = u:(form / size)
form = key:(kind) ":" value:(clas) ";" {return {type:key, value:value} }
clas = "[" v:(charact+) "]" { return {type:"class",value:v} }
kind = "First" / "Second"
charact = letters / symbols
symbols = "(" / ")" / "!" / "?" / "%" / "{" / "}" / "[" // "]"
letters = [A-Za-z]`
解决方案
解决此问题的一种方法是查找]
后面没有分号的 a,即。"]" (!";")
. 在下面的示例中,我还使用$()
将 组合symbols
成单个字符串。
prod = unit+
unit = u:(form / size)
form = key:(kind) ":" value:(clas) ";" {return {type:key, value:value} }
clas = "[" v:(charact+) "]" { return {type:"class",value:v} }
kind = "First" / "Second"
charact = letters / symbols
symbols = $("(" / ")" / "!" / "?" / "%" / "{" / "}" / "[" / "]" (!";"))
letters = [A-Za-z]
推荐阅读
- javascript - 我如何控制多个 div 正在使用带有 jquery 的下一个/上一个按钮
- r - 在折线图上更改 R 中 theme_pander 包中的图例名称和变量名称
- javascript - 为什么这个 for 循环没有改变我的对象数组?JS
- python - 当我尝试在 open3D 中分配三角形时出错
- javascript - 如何使时间输入 HTML 步长 30 分钟并隐藏秒
- python - 日期时间和文件
- python - 如何在 cartopy 地图顶部叠加矢量注释图像?
- r - 在 plotly 中,如何在用户与之交互后检索情节的相机位置?
- kubernetes - 一个 Job 可以在其下的不同 pod 中运行多个不同的任务吗?
- google-bigquery - 使用脚本调度查询