Пробелы в грамматике Treetop - PullRequest
3 голосов
/ 25 мая 2011

Насколько я должен быть явным при указании, где пробелы разрешены или запрещены? Например, эти правила:

rule lambda
  'lambda' ( '(' params ')' )? block
end

rule params
  # ...
end

rule block
  '{' # ... '}'
end

достаточно, чтобы соответствовать

lambda {
}

В основном мне нужно указывать везде, где могут появляться необязательные пробелы?

1 Ответ

2 голосов
/ 25 мая 2011

Да, вы делаете. В этих правилах вам нужно пропускать пробелы, но, например, когда вы анализируете строки, которые могут содержать пробелы, вы хотели бы сохранить их; вот почему вы должны указать.

Однако, прежде чем применить treetop к вашей строке, вы можете попробовать запустить «быстрый и грязный» алгоритм на основе регулярных выражений, который отбрасывает пробелы из тех мест, где они необязательны. Тем не менее, это может быть гораздо сложнее, чем указывать пробелы в вашей грамматике.

...