【问题标题】:Can PEGjs take the "closing" character of a statement as input?PEGjs 可以将语句的“结束”字符作为输入吗?
【发布时间】:2018-08-17 02:25:59
【问题描述】:

我一直在研究 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]`

【问题讨论】:

    标签: javascript pegjs


    【解决方案1】:

    解决此问题的一种方法是查找不带分号的],即。 "]" (!";")。在下面的示例中,我还使用$()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]
    

    【讨论】:

    • 谢谢,成功了! $() 到底是做什么的?和join基本一样吗?
    • 是的,和字符串连接一样。
    猜你喜欢
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    相关资源
    最近更新 更多