Javascript PEGjs能接受这个“问题”吗;结案;作为输入的语句的字符?
我一直在研究PEGjs语法。大部分都有效,但最后一件事我有点麻烦。我的解析器接受如下输入:Javascript PEGjs能接受这个“问题”吗;结案;作为输入的语句的字符?,javascript,pegjs,Javascript,Pegjs,我一直在研究PEGjs语法。大部分都有效,但最后一件事我有点麻烦。我的解析器接受如下输入:First:[content]并返回类型(第一个或第二个)和内容中的每个元素(“c”、“o”…)。我还需要它能够将]作为输入,以便它能够解析以下内容:首先:[co]nt] 有人知道我该怎么做吗?这就是我到目前为止所做的: prod = unit+ unit = u:(form / size) form = key:(kind) ":" value:(clas) ";" {return {type:ke
First:[content]
并返回类型(第一个或第二个)和内容中的每个元素(“c”、“o”…)。我还需要它能够将]
作为输入,以便它能够解析以下内容:首先:[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]`
解决这一问题的一种方法是查找不后跟分号的]
,即“]”(!“;”)
。在下面的示例中,我还使用$()
将符号组合成单个字符串
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]
谢谢,这就成功了!$()到底是做什么的?它基本上和连接一样吗?是的,和字符串连接一样。