terminals programar para org instalar examples como common eclipse eclipse-plugin grammar xtext

eclipse - programar - XText: use definiciones de terminales personalizados



xtext eclipse (1)

Tiene muchas opciones (todas están documentadas en la ayuda en línea):

  1. Defina sus reglas de terminal directamente en la gramática con la que está trabajando actualmente.
  2. Cree una nueva gramática dedicada para símbolos de terminal similar a lo que hicimos con los términos comunes. Terminales. Usa ese en lugar de los terminales comunes.
  3. Cree una nueva gramática dedicada para los símbolos de la terminal, reutilice los términos comunes.Terminal en esa gramática y use su propia gramática terminal en su idioma actual.

Yo recomendaría simplemente anular los terminales que desea cambiar directamente en su idioma (opción 1) o si desea definir múltiples idiomas con el mismo conjunto de terminales que usaría (opción 3) o combinar ambas opciones, por ej.

grammar org.mycompany.MyTerminals with org.eclipse.xtext.common.Terminals terminal ID: (''a''..''z''|''A''..''Z''|''_'') (''a''..''z''|''A''..''Z''|''_''|''0''..''9'')*; terminal SL_COMMENT: ''--'' !(''/n''|''/r'')* (''/r''? ''/n'')?; == grammar org.mycompany.MyLanguage with org.mycompany.MyTerminals MyModel: name=ID other=ANOTHER; terminal ANOTHER: ''/#'' -> ''#/''

Soy totalmente nuevo en XText.

Cuando defines una gramática con XText puedes especificar una segunda gramática y usar las definiciones que declara como se dice aquí :

grammar org.eclipse.xtext.example.Domainmodel with org.eclipse.xtext.common.Terminals

En Xtext, cada gramática tiene un nombre único, que al igual que las clases de Java públicas, debe reflejar la ubicación del archivo dentro de la ruta de clase de Java. En nuestro caso, el archivo de la gramática está ubicado en /org/eclipse/xtext/example/Domainmodel.xtext, por lo tanto, el nombre de la gramática es org.eclipse.xtext.example.Domainmodel. La segunda parte de esa declaración (con org.eclipse.xtext.common.Terminals) establece que esta gramática reutiliza y anula las reglas de la gramática especificada. Org.eclipse.xtext.common.Terminals es una gramática de biblioteca enviada con Xtext y predefine las reglas de terminal más comunes

Estoy desarrollando un complemento XText y me gustaría definir mis propios símbolos de terminal en un archivo separado. ¿Es posible? ¿Cómo puedo hacer eso?

Intenté crear un nuevo archivo Xtext y anexarlo después de org.eclipse.xtext.common.Terminals y agregar solo la mina, pero ambas soluciones no se compilan.

Gracias.

EDITAR

Si utilizo dos archivos xtext en el mismo proyecto, uno para la gramática y otro para los terminales de la gramática, recibo la siguiente excepción al ejecutar el archivo mwe2:

java.lang.IllegalStateException: análisis de problemas ''classpath: /org/xvr/language/sh/ShaderDsl.xtext'': [XtextLinkingDiagnostic: null: 1 No se pudo resolver la referencia a Grammar ''org.xvr.language.sh.ShTerminal''. , XtextLinkingDiagnostic: null: 9 No se pudo resolver la referencia a AbstractRule ''ID''., TransformationDiagnostic: null: 14 No se puede crear el tipo de datos INVARIANT (ErrorCode: NoSuchTypeAvailable), TransformationDiagnostic: null: 17 No se puede crear el tipo de datos PRECISION (ErrorCode: NoSuchTypeAvailable), TransformationDiagnostic: null: 19 No se puede crear el tipo de datos HIGH_PRECISION (ErrorCode: NoSuchTypeAvailable), TransformationDiagnostic: null: 20 No se puede crear el tipo de datos MEDIUM_PRECISION (ErrorCode: NoSuchTypeAvailable), TransformationDiagnostic: null: 21 No se puede crear el tipo de datos LOW_PRECISION (ErrorCode: NoSuchTypeAvailable)]

los dos archivos xtext son:

la gramática

grammar org.xvr.language.sh.ShaderDsl with org.xvr.language.sh.ShTerminal //org.eclipse.xtext.common.Terminals generate shaderDsl "http://www.xvr.org/language/sh/ShaderDsl" ....

y los terminales de la gramática

grammar org.xvr.language.sh.ShTerminals with org.eclipse.xtext.common.Terminals generate shTerminals "http://www.xvr.org/language/sh/ShTerminals" terminal Test : ''test'';