Clojure insta / parser 1.4.5,问题与]

时间:2017-04-02 07:19:46

标签: parsing clojure

我有以下语法:

LIST = LBRACE LISTBODY RBRACE
LISTBODY = ATOM | ATOM COMMA LISTBODY
ATOM = NUMBER | WORD 
NUMBER = INTEGER
INTEGER = #'[-|+]{0,1}[ ]*(\\d)+'
WORD = #'[a-z]([a-zA-z0-9_])*'
LBRACE = '['
RBRACE = ']'
COMMA = ',' 

尝试解析[a,b]失败。如果我用RBRACE ='}'替换RBRACE =']',我可以解析[a,b}

我缺少哪些特别的东西?

1 个答案:

答案 0 :(得分:1)

LBRACERBRACE的内容很好。

我想知道发生的事情并不是你可能认为正在发生的事情,即多个规则相互作用。您通常可以通过[:index n]形式的错误来判断,其中n是解析得到的距离。

INTEGER是一个正则表达式,其中包含[],其间有空格。你能带走它们和空间*,看看你怎么走?我知道他们应该在正则表达式中逃脱,但我仍然会尝试沿着这些方向进行实验。