Ho un parser che può essere definito come
int = a:/[0-9]+/ {parseInt(a)}
.
Si suppone che corrisponda ad un int e lo converta in un numero. Ci può anche essere un parser come
sum = a:int b:int {a+b}
Come puoi vedere, è una serie di token, il che significa che devono essere analizzati come una serie di token. Quando iniziamo una tale matrice, alloco un ambito per le variabili. Il guaio però è che la catena include l'azione semantica. L'analisi 1 2
con int int
produrrebbe [1,2]
e l'azione semantica a+b
, che è anche un parser, sostituisce quello con [3]
, tre nell'array, perché sum è una catena di parser e il suo risultato deve essere un array. Ma, l'utente normale vuole il puro risultato 3
. Come risolvo il problema?