Qual é o reticências (string vazia) usado para em um (PEG) gramática Treetop?
Pergunta
O href="http://treetop.rubyforge.org/syntactic_recognition.html" rel="nofollow"> site dá a seguinte explicação que eu não entendo
Reticências Uma cadeia vazia corresponde a qualquer posição e não consome entrada. É útil quando você deseja tratar um único símbolo, como parte de uma sequência, por exemplo, quando uma regra alternativa será processado utilizando o código compartilhado.
alts regra (Foo bar / baz '') { valor def elements.map {| e | e.text_value} fim } end
quando é útil para tratar um símbolo como uma parte da seqüência? Alguém pode dar um exemplo significativo disso?
Solução
Eu não estou familiarizado com Treetop. A partir do exemplo parece que ( foo bar / baz '' )
seria ou produtos ['foo', 'bar']
ou ['baz', '']
.
Se você remover as reticências, você teria tanto ['foo', 'bar']
ou 'baz'
apenas (sem sequência / list / matriz).