我是Treetop的新手,有一个非常简单的语法,我就是做不到。我有一些测试:
it "parses a open tag as some text surrouded by brackets" do
document = "[b]"
Parser.parse(document).should_not be_nil
end
it "parses a close tag as a tag with a / preceeding the tag name" do
document = '[/b]'
Parser.parse(document).should_not be_nil
end这是我的语法:
grammar BBCode
rule open_tag
"[" tag_name "]"
end
rule tag_name
[a-zA-Z\*]+
end
rule close_tag
"[/" tag_name "]"
end
end第一个测试通过,第二个测试失败。我还尝试了以下替代规则:
"[" [\/] tag_name "]"
"[" "/" tag_name "]"
"[\/" tag_name "]"所有这些都失败了。
不管我怎么尝试,我似乎都不能让它识别结束标记。
发布于 2012-12-07 09:51:08
我发现了这个问题:https://github.com/nathansobo/treetop/issues/25,它似乎已经回答了我的问题。
我的语法没有包含允许开始或结束标签的顶级规则,因此甚至没有考虑第二种可能性:
grammar BBCode
rule document
(open_tag / close_tag)
end
rule open_tag
("[" tag_name "]")
end
rule tag_name
[a-zA-Z\*]+
end
rule close_tag
("[/" tag_name "]")
end
endhttps://stackoverflow.com/questions/13755526
复制相似问题