Javascript 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

我一直在研究PEGjs语法。大部分都有效,但最后一件事我有点麻烦。我的解析器接受如下输入:
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]

谢谢,这就成功了!$()到底是做什么的?它基本上和连接一样吗?是的,和字符串连接一样。