¿Para qué se utilizan los puntos suspensivos (cadena vacía) en una gramática Treetop (PEG)?
Pregunta
El sitio web de Treetop ofrece la siguiente explicación que no entiendo
Elipsis Una cadena vacía coincide en cualquier posición y no consume entrada.Es útil cuando desea tratar un solo símbolo como parte de una secuencia, por ejemplo, cuando se procesará una regla alternativa utilizando código compartido.
reglas alternativas (foo bar / baz '') { valor def elements.map {| e |e.text_value} fin } final
¿Cuándo es útil tratar un símbolo como parte de una secuencia?¿Alguien puede dar un ejemplo significativo de eso?
Solución
No estoy familiarizado con Treetop.A partir del ejemplo, parecería que ( foo bar / baz '' )
produciría ['foo', 'bar']
o ['baz', '']
.
Si elimina los puntos suspensivos, obtendría ['foo', 'bar']
o simplemente 'baz'
(sin secuencia / lista / matriz).