Wofür wird die Ellipse (leere Zeichenfolge) in einer Treetop-Grammatik (PEG) verwendet?
Frage
Die Treetop-Website enthält die folgende Erklärung, die ich nicht verstehe
Ellipse Eine leere Zeichenfolge stimmt an jeder Position überein und verbraucht keine Eingabe.Dies ist nützlich, wenn Sie ein einzelnes Symbol als Teil einer Sequenz behandeln möchten, z. B. wenn eine alternative Regel mit gemeinsam genutztem Code verarbeitet wird.
Regel Alts (foo bar / baz '') { def Wert elements.map {| e |e.text_value} Ende }} Ende
Wann ist es sinnvoll, ein Symbol als Teil einer Sequenz zu behandeln?Kann jemand ein aussagekräftiges Beispiel dafür liefern?
Lösung
Ich kenne Treetop nicht.Aus dem Beispiel geht hervor, dass ( foo bar / baz '' )
entweder ['foo', 'bar']
oder ['baz', '']
erzeugen würde.
Wenn Sie die Auslassungspunkte entfernen, erhalten Sie entweder ['foo', 'bar']
oder nur 'baz'
(keine Sequenz / Liste / Array).