es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo crear una expresión goto en xtext?

Quiero crear una expresión goto de la siguiente manera:

//label
<bb 2> :

//goto
goto <bb 2>;

La siguiente gramática funciona bien para un ID simple. No tengo idea de cómo hacer referencia al en la expresión goto.

Goto returns Goto:
    {Goto}
    'goto' goto+=[Label]  ';'
;

LabelDef returns LabelDef:
    {LabelDef}
    label+= Label ':'
    ;

Label returns Label:
    {Label}
    name= ID
    ;

¿Tienes alguna idea de cómo hacerlo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Eclipse, gramática, DSL, Xtext y definición de ir-a, sugiero modificar la regla Label en la gramática de la siguiente manera:

    Label returns Label:
        {Label}
        name= (ID INT)
        ;
    

    Esta modificación introduce una nueva regla que permite la combinación de un ID y un INT en un token. Usando la gramática modificada, la regla Goto puede ser actualizada de la siguiente manera:

    Goto returns Goto:
        {Goto}
        'goto' goto+=[Label] ';'
        ;
    

    Con esta regla Goto actualizada, el analizador espera que la expresión goto haga referencia a una etiqueta con un ID y un INT, como <bb 2="">.

Comments are closed.