1

だから、私はRubyを少し、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

3 番目のテスト (バックスラッシュの付いたテスト) に合格しません (文字列が解析されません): なぜですか?

ありがとう!

4

1 に答える 1

2

エスケープされた引用符のチェックの順序を入れ替える必要があります。

(
  '\"' / !'"' .
)*

別の例として、文法もこれに一致します。

"he said, \"

チェックを正しく反転すると、それも失敗します。

于 2011-12-17T17:00:37.963 に答える