un pequeno analizador léxico de python.
restrinxe a especificación ó atopado no arquivo wilcoxon.py
.
utiliza autómatas formais baseados en expresións regulares para definir as regras léxicas.
para ver unha versión utilizando flex ir á rama alternativa.
make (debug|centinela) run (arquivo)
debug
: activa a macroDEBUG
e imprime mais diagnósticos. esto fai que o programa estea menos optimizado. xera representacións gráficas dos AFD en formato graphviz (poden verse online en https://dreampuf.github.io/GraphvizOnline)centinela
: activaDEBUG
, e a maioresDEBUG_CENTINELA
. para cada acción sobre o centinela amosa os punteiros incio e actualarquivo
: indica o arquivo a analizar. por defecto éwilcoxon.py
definicions
: arquivo cabeceira importado por todos os demais. contén definicións de tipos, lexemas, funcións útileslexico
: módulo do analizador léxicoentrada
: abstracción do sistema de entrada, utilizacentinela
ts
: abstracción da taboa de símbolos, utilizahash
tipos
: tipos de datos abstractosarena
: implementación dun alocador de arena. xestiona toda a memoria do programa e permite unha limpeza fácil.vec
: lista dinámica xenérica e polimórficastr
: cadea de caracteres implementada enriba devec
hash
: árbore hash trie xenérica sen restricción de tamañocentinela
: lista dobre centinela para o sistema de entrada
estados
: xeración de autómatas en base a expresións regularesafd
: automata finito determinado compilado que pode executarseafn
: automata finito non determinado (paso intermedio)regex
: transforma unha expresión regular nun autómata
- estructuras de datos
- array dinámico
- string
- arena de memoria
- hash map
- autómatas formais
- afn epsilon
- afn a afd
- calculo clausuras
- transicións
- crear afd
- minimizar
- executar afd
- regex a afn
- clases de caracteres (numeros, letras...)
- símbolos especiais
- NEWLINE - liñas lóxicas
- INDENT / DEDENT - indentación
- scopes e scratch arenas
- comentarios
- comentario de encoding
- liñas en branco
- sistema de entrada
- buffer dobre centinela
- cargar outro buffer
- devolver caracter
- comprobación de limites
- erro simbolo demasiado largo
- análise léxico
- palabras clave
- identificadores
- operadores
- literals
- números
- strings
- caracteres especiais
- sistema de erros
- macros varádicas