Soy muy principiante en PEGjs . Necesito ayuda para implementar la compatibilidad con la declaración de variables (identificadores) en mi analizador.
Mi código de entrada se parece a:
a=4; print aMi gramática PEGjs:
start =(line)* line =left:var"="right:integer";" {left=right;} / print middle:var {return middle;} print ="print" var =(a-zA-z)+ Integer "integer" = _ [0-9]+ { return parseInt(text(), 10); }Salida esperada: 4
Por favor, ayúdame. #Gracias de antemano
prueba esto:
all = _ mn:multiPutN _ pn:printN _ { return mn[pn]; } multiPutN = mp:putN+ _ { var r = {}; mp.forEach(it => { r[it[0]]=it[1]; }); return r; } putN = vn:varName _ "=" _ nn:n _ ";" { return [vn, nn]} printN = print _ n:varName _ {return n;} varName = [a-zA-Z]+ {return text();} print ="print" n "integer number" = _ [0-9]+ { return parseInt(text(), 10); } _ "whitespace or new line" = [ \t\n\r]*por lo que el código anterior también admite múltiples variables, pero solo puede imprimir una variable. Escribí la gramática basada en su ejemplo, por lo que al asignar un valor variable debe poner ";" al final, pero print var no debería necesitar eso