Пробелы в грамматике Treetop

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

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

rule params
  # ...
end

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

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

lambda {
}

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


person ravinggenius    schedule 25.05.2011    source источник


Ответы (1)


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

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

person P Shved    schedule 25.05.2011
comment
Спасибо. Я думал, что мне, возможно, придется это сделать, но я хотел подтвердить, прежде чем столкнуться с проблемой. - person ravinggenius; 25.05.2011