Las promociones, escritas como lenguaje.
Un lenguaje de dominio específico para que el área comercial defina sus reglas de descuento sin tocar el código del sistema. Esta primera etapa reconoce los lexemas de cada regla y los clasifica en tokens.
SI CLIENTE.nivel = VIP Y COMPRA.total > 500 ENTONCES APLICAR DESCUENTO(15%)
Enunciado del proyecto
Implementación de un DSL para reglas de descuento en la validación de promociones de una empresa de comercio electrónico
La empresa en estudio es una organización de comercio electrónico y retail ubicada en Lima que lanza continuamente promociones y descuentos dinámicos: por monto de compra, tipo de cliente, categoría o temporada. Hoy esas reglas están codificadas dentro del sistema transaccional, así que cada nueva promoción depende del área de TI y de un nuevo despliegue.
Tampoco existe un mecanismo formal que valide las reglas antes de activarlas. Eso produce ambigüedades, errores de configuración y descuentos acumulados que nadie autorizó y que afectan el margen comercial.
La propuesta es un lenguaje de dominio específico, formalizado con expresiones regulares, autómatas finitos y una gramática libre de contexto, con el que el área comercial escriba reglas declarativas y legibles que el sistema valide automáticamente.
Objetivo general
Determinar el efecto de un lenguaje de dominio específico para reglas de descuento en la validación automática de promociones en una empresa de comercio electrónico en Lima.
Etapa 1: alcance de esta aplicación
- Escribir reglas del lenguaje o subir un archivo que las contenga.
- Reconocer cada lexema aplicando la coincidencia más larga.
- Clasificar cada lexema en su token e informar su línea y columna.
- Señalar los caracteres que no pertenecen al alfabeto del lenguaje.
Analizador léxico
Escribe tus reglas o sube un archivo .dsl, .txt o .reglas. El editor ya trae un ejemplo con varias reglas; puedes modificarlo libremente. Las líneas que empiezan con // son comentarios y se ignoran.
Resultado del análisis léxico
Código fuente coloreado por token
Tabla de tokens
Cada lexema en el orden en que lo leyó el analizador.
| # | Lexema | Token | Línea | Col. |
|---|
Lexemas agrupados por token
Lexemas distintos reconocidos para cada token.
| Token | Lexemas | Veces |
|---|
Tokens y expresiones regulares
Catálogo de tokens del lenguaje. En las expresiones regulares, L = [a-zA-Z] y D = [0-9]. Las palabras reservadas se reconocen primero como identificadores y luego se comparan con la tabla de reservadas.
| Token | Categoría | Lexemas de ejemplo | Expresión regular |
|---|---|---|---|
| Cargando catálogo… | |||