Treetop: разбор строковых литералов? - PullRequest
0 голосов
/ 17 декабря 2011

Итак, я пытаюсь научить меня немного рубина, немного 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

Третий тест (с обратными слешами) не проходит (строка не анализируется): почему?

Спасибо!

1 Ответ

1 голос
/ 17 декабря 2011

Вам нужно поменять местами порядок проверки с кавычками:

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

В качестве другого примера, ваша грамматика также будет соответствовать следующему:

"he said, \"

Не удастся правильно щелкнуть по чекуэто также.

...