Base reutilizable para crear lenguajes con JFlex + Java CUP sin rearmar infraestructura cada vez.
Que cualquier proyecto nuevo pueda:
- Definir su
lexer.flexyparser.cup. - Implementar dos adapters (
LexerAdapteryParserAdapter). - Ejecutar un frontend consistente con manejo de mensajes/errores.
core/: contratos y pipeline reutilizable.starter/: plantillas.flex/.cupy utilidades de arranque.example-language/: ejemplo funcional con generación JFlex + CUP y adapters reales.example-language-archetype/: generador Maven para crear un proyecto base listo.ui-api/: contrato para conectar lógica de lenguaje a la UI.plugin-example/: implementación mock de referencia del contrato de UI.ui-shell/: interfaz JavaFX desacoplada de la lógica.
- Copia
starter/src/main/resources/templates/lexer.flexyparser.cupa tu proyecto. - Genera código con JFlex/CUP según tu build.
- Implementa adapters usando
core. - Ejecuta
LanguageFrontend.
mvn clean testmvn -pl example-language -am test./run-ui.shLa UI consume implementaciones de LanguageRuntimePlugin vía ServiceLoader.
Para integrar otra lógica, crea un módulo que implemente ui-api y registra el provider en META-INF/services.
- Comando de terminal:
run [archivo|carpeta](alias:ricardious). - Botón
Run: ejecuta automáticamenterun <archivo_activo>. - Dropdown
Run:Run Current FileRun ProjectRun All Open Files
Source Control:- muestra
git status Refresh,Stage All,Commit
- muestra
- Menú
File:Open Folder...cambia de proyectoClose Foldercierra el proyecto actual- ambas acciones preguntan si hay cambios sin guardar.
- Crea un módulo nuevo (ej.
plugin-mi-lenguaje). - Agrega dependencia a
lexcupstudio-ui-api. - Implementa
LanguageRuntimePlugin. - Registra la implementación en:
src/main/resources/META-INF/services/io.lexcupstudio.ui.api.LanguageRuntimePlugin - Agrega tu módulo al
pom.xmlpadre y ejecuta./run-ui.sh.
Edita:
ui-shell/src/main/resources/edu/usac/olc1/olc1_proyecto1/branding.properties
app.name=LexCupStudio
app.logo.path=/edu/usac/olc1/olc1_proyecto1/icons/logo.pngapp.name: nombre que aparece en la ventana principal, portada y mensajes de salida.app.logo.path: ruta absoluta dentro de recursos delui-shell.
mvn install -DskipTests
mvn archetype:generate \
-DarchetypeGroupId=io.lexcupstudio \
-DarchetypeArtifactId=lexcupstudio-example-language-archetype \
-DarchetypeVersion=0.1.0 \
-DgroupId=com.myteam \
-DartifactId=my-language \
-Dversion=0.1.0 \
-Dpackage=com.myteam.language \
-DlexcupstudioVersion=0.1.0 \
-DinteractiveMode=falseGuía completa: docs/PLUGIN_GUIDE.md