Azione semantica in combinatori di parser

-1

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?

    
posta Val 20.03.2017 - 09:43
fonte

1 risposta

0

Poiché la sequenza è generata solo per più di un parser in serie e solo javascript nell'azione semantica la collassa in singleton, l'array singletone può essere tranquillamente convertito in un valore, estraendone il valore singolo.

    
risposta data 20.03.2017 - 10:41
fonte

Leggi altre domande sui tag