DSL Descuentos · Compiladores USIL 2026-2

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

  1. Escribir reglas del lenguaje o subir un archivo que las contenga.
  2. Reconocer cada lexema aplicando la coincidencia más larga.
  3. Clasificar cada lexema en su token e informar su línea y columna.
  4. 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.

reglas_ejemplo.dsl
Ctrl + Enter para analizar