¿Hay una manera de armar de cero o más patrón de múltiples normas en una sola lista en Antlr4?

BitMaPT:

Probablemente, esta es una pregunta duplicada, pero no puedo encontrar la pregunta que quiero leer, por lo que he publicado aquí.

Soy novato de Antlr, y yo trato de usar para hacer Antlr4 árbol de sintaxis abstracta con el patrón de visitante en Scala.

Sin embargo, no puedo llegar a cómo armar resultados de múltiples normas, como a continuación en una sola lista.

foo: (rule0 | rule1)*
rule0: ...
rule1: ...

Sé que hay una manera de conseguir cada uno listas (es decir, la lista de rule0s y lista de rule1s). Sin embargo, de esa manera, probablemente rompe el orden de aparición (quiero mantener el orden). La manera como rules=(rule0 | rule1)*no se permitió también, así que no puedo escribir, como a continuación

ctx.rules().asScala.map(...).toArray`

Mi pregunta es cómo poner juntos en lista de varios resultados de la regla mientras se mantiene el orden de aparición en el patrón de visitante.

Mike Lischke:

El visitante es sólo un andador sobre el árbol de análisis sintáctico generado por su carrera de análisis. La clase visitante itera sobre los hijos de cada contexto analizador y llama a las funciones de los visitantes. Eso significa que la información real se almacena en el árbol de análisis sintáctico y se puede utilizar directamente.

Cuando se obtiene una FooContextiterar sobre la lista de los niños, que contiene el encontrado Rule0Contexty Rule1Contextlas instancias en el orden en que fueron usados en el código fuente. Esto le tanto, da la información de posición acerca sub partes, así como la información sobre cada una de las partes sub.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=362273&siteId=1
Recomendado
Clasificación