[
    ['special', '', 'STRING', 'Constante de cadena.'],
    ['special', '', 'NUM', 'Constante numérica.'],
    ['special', '', 'LOWERID', 'Identificador empezado con minúsculas.'],
    ['special', '', 'UPPERID', 'Identificador empezado con mayúsculas.'],
    ['keyword', 'program', 'PROGRAM', 'Para declarar el programa principal.'],
    [
        'keyword',
        'interactive',
        'INTERACTIVE',
        'Para declarar una rutina principal interactiva con interactive program.'
    ],
    ['keyword', 'procedure', 'PROCEDURE', 'Para declarar procedimientos.'],
    ['keyword', 'function', 'FUNCTION', 'Para declarar funciones.'],
    ['keyword', 'return', 'RETURN', 'Para devolver valores de funciones y de la rutina principal.'],
    ['keyword', 'if', 'IF', 'Para la alternativa condicional.'],
    ['keyword', 'then', 'THEN', "Palabra clave opcional para la rama 'then'."],
    ['keyword', 'elseif', 'ELSEIF', "Para las ramas 'elseif'."],
    ['keyword', 'else', 'ELSE', "Para la rama 'else'."],
    ['keyword', 'choose', 'CHOOSE', 'Para la expresión alternativa condicional.'],
    ['keyword', 'when', 'WHEN', "Para las condiciones del 'choose'."],
    [
        'keyword',
        'otherwise',
        'OTHERWISE',
        "Para la última rama del 'choose' y el 'matching..select'."
    ],
    ['keyword', 'repeat', 'REPEAT', 'Repetición simple.'],
    ['keyword', 'foreach', 'FOREACH', 'Repetición indexada.'],
    ['keyword', 'in', 'IN', 'Para declarar el rango de la repetición indexada.'],
    ['keyword', 'while', 'WHILE', 'Repetición condicional.'],
    ['keyword', 'switch', 'SWITCH', 'Para hacer pattern matching.'],
    [
        'keyword',
        'to',
        'TO',
        'Palabra clave opcional después del sujeto sobre el que se hace pattern matching.'
    ],
    ['keyword', 'matching', 'MATCHING', "Para la expresión 'matching..select'."],
    ['keyword', 'select', 'SELECT', "Para la expresión 'matching..select'."],
    ['keyword', 'on', 'ON', "Para la expresión 'matching..select'."],
    [
        'keyword',
        'let',
        'LET',
        'Palabra clave opcional para la asignación. Es obligatoria en el caso de las asignaciones de tuplas.'
    ],
    ['keyword', 'not', 'NOT', 'Negación lógica.'],
    ['keyword', 'mod', 'MOD', 'Resto de la división entera.'],
    ['keyword', 'div', 'DIV', 'Cociente de la división entera.'],
    ['keyword', 'type', 'TYPE', 'Para la declaración de nuevos tipos.'],
    ['keyword', 'is', 'IS', 'Palabra clave para acompañar la declaración de un nuevo tipo.'],
    ['keyword', 'record', 'RECORD', 'Para tipos registro.'],
    ['keyword', 'variant', 'VARIANT', 'Para tipos variantes.'],
    ['keyword', 'case', 'CASE', 'Para las alternativas de tipos variantes.'],
    ['keyword', 'field', 'FIELD', 'Para los campos de tipos registro.'],
    ['keyword', '_', 'UNDERSCORE', 'Para marcar el caso default en un switch/match.'],
    ['keyword', 'TIMEOUT', 'TIMEOUT', 'Para la rama timeout en un interactive program.'],
    ['symbol', '{', 'LBRACE', 'Llave izquierda.'],
    ['symbol', '}', 'RBRACE', 'Llave derecha.'],
    ['symbol', '(', 'LPAREN', 'Paréntesis izquierdo.'],
    ['symbol', ')', 'RPAREN', 'Paréntesis derecho.'],
    ['symbol', '[', 'LBRACK', 'Corchete izquierdo (para listas y rangos).'],
    ['symbol', ']', 'RBRACK', 'Corchete derecho.'],
    ['symbol', ',', 'COMMA', 'Coma.'],
    ['symbol', ';', 'SEMICOLON', 'Punto y coma (separador de instrucciones opcional).'],
    ['symbol', '...', 'ELLIPSIS', 'Fragmento de programa intencionalmente incompleto.'],
    ['symbol', '..', 'RANGE', 'Para rangos.'],
    ['symbol', ':=', 'ASSIGN', 'Asignación.'],
    ['symbol', '&&', 'AND', 'Conjunción.'],
    ['symbol', '||', 'OR', 'Disyunción.'],
    ['symbol', '<-', 'GETS', 'Para inicialización de campos.'],
    ['symbol', '|', 'PIPE', 'Para actualización de campos.'],
    ['symbol', '->', 'ARROW', "Usado en las ramas de un 'switch'."],
    ['symbol', '==', 'EQ', 'Comparación por igualdad.'],
    ['symbol', '/=', 'NE', 'Comparación por desigualdad.'],
    ['symbol', '<=', 'LE', 'Comparación por menor o igual.'],
    ['symbol', '>=', 'GE', 'Comparación por mayor o igual.'],
    ['symbol', '<', 'LT', 'Comparación por menor estricto.'],
    ['symbol', '>', 'LT', 'Comparación por mayor estricto.'],
    ['symbol', '++', 'CONCAT', 'Operador de concatenación de listas.'],
    ['symbol', '+', 'PLUS', 'Suma de números.'],
    ['symbol', '-', 'MINUS', 'Resta de números y menos unario.'],
    ['symbol', '*', 'TIMES', 'Producto de números.'],
    ['symbol', '^', 'POW', 'Potencia.']
];
