所以,我试图向我学习一些红宝石,一点TDD和一点Treetop。
我有以下语法来解析字符串文字:
grammar Str
rule string
'"'
(
!'"' . / '\"'
)*
'"'
end
end
以下测试方法:
def test_strings
assert @parser.parse('"Hi there!"')
assert !@parser.parse('"This is not" valid')
assert @parser.parse('"He said, \"Well done!\""')
end
第三个测试(带有反斜杠的测试)没有通过(字符串没有被解析):为什么?
谢谢!
答案 0 :(得分:1)
您需要交换转义报价单的顺序:
(
'\"' / !'"' .
)*
另一个例子,你的语法也会匹配这个:
"he said, \"
正确翻转支票也失败了。