Ho essenzialmente la stessa domanda di PEG for Python style indentation, ma mi piacerebbe ottenere un po 'più di direzione per this answer.Livello di indentazione Parse con PEG.js
La risposta genera correttamente una serie di stringhe che sono ciascuna riga di input con "INDENT" e "DEDENT" tra le righe. Sembra che abbia usato PEG.js per tokenizzare, ma non sta accadendo un vero e proprio parsing.
Quindi, come posso estendere il suo esempio per eseguire un vero parsing?
A titolo di esempio, Come posso cambiare questa grammatica:
start = obj
obj = id:id children:(indent obj* outdent)?
{
var o = {};
o[id] = children[1];
return (children[1] ? o : id);
}
id = [a-z]
indent = '{'
outdent = '}'
da usare indentazione invece di parentesi graffe per delineare i blocchi, e ancora ottenere lo stesso risultato?
(Usa http://pegjs.majda.cz/online per verificare che la grammatica con la seguente digitazione: a{bcd{zyx{}}}
)
Ho davvero apprezzato questo anwser. Come vieni con questo metodo per favore? – jiyinyiyong
Se copio/incollo questo direttamente in http://pegjs.majda.cz/online non viene compilato. E dopo alcuni aggiustamenti non è chiaro come "aggiustarlo". – Clearly
Appena testato, lo snippet compila e produce l'output atteso in modo perfetto. Non sei sicuro di quali errori hai colpito lì. – chakrit