Pregunta

Tengo que unir tokens como este usando pegjs:

?xxx ?yyy

Pensé que esto funcionaría:

variable 
   = str:?[a-z]+ {  console.log('---->>>',str); return str.join(""); } 

Cuando analizo la fuente, aparece un error:

Objeto ?no tiene método 'unirse'

Esto se debe a que el str la variable no es una matriz de los tokens coincidentes...¿Alguna idea de cómo debería hacerse esto?

¿Fue útil?

Solución

Puede agrupar literales:

variable 
    = str:("?"[a-z]+)

en ese caso str será ["?",["a","b","c"]] para ?abc, o si ? no es necesariamente el primer carácter, simplemente inclúyelo en la clase:

variable 
    = str:[?a-z]+

entonces obtendrás una matriz normal ["?","a","b","c"].

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top