Loading repository data…
Loading repository data…
cacajr / repository
Neste projeto foi desenvolvido um analisador léxico da linguagem Python usando Java e a biblioteca JFlex para a cadeira de Compiladores.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Este é um analisador léxico da linguagem Python produzido em Java para o trabalho final da disciplina de Compiladores. O analisador deste repositório está dividido em três partes: código fonte, executável e um conjunto de exemplos de código em Python para testes. Dentro de cada pasta existe uma documentação explicando como usar cada um.
Os Tokens escolhidos podem ser visualizados dentro da pasta Código Fonte/src/python/Token.java. Mais detalhes sobre os símbolos que representam cada Token é mostrado a seguir e podem ser vistos no endereço: Código Fonte/src/python/Python.flex:
ERROR: Símbolo não tratado pelo analisador QUEBRA_LINHA: \n IDENTACAO: " " (Três espaços vazios) ou "\t" (Tecla TAB) COMENTARIO_SIMPLES: # COMENTARIO_MULTILINHAS: ''' ''' IDENTIFICADOR: var, var1, _var (Não podendo iniciar com números ou conter caracteres especiais) OPERADOR_ARITMETICO: +, -, *, /, % OPERADOR_LOGICO: and, or, not OPERADOR_RELACIONAL: >, <, >=, <=, ==, != OPERADOR_ATRIBUICAO: =, +=, -=, *=, /= DELIMITADOR_ABERTO: ( DELIMITADOR_FECHAOD: ) FACA: : NUMERO_INTEIRO: 1, 2, 3, ..., 9999... NUMERO_FLUTUANTE: 1.1, 1.2, 1.3, ..., 9999.9999... STRING: "123", "Carlos Jr", ... LISTA_ABERTA: [ LISTA_FECHADA: ] PALAVRA_RESERVADA: if, else, elif, for, while, def, return, try, except, as, in, False, True, break, import, from, continue, del, class, global, None, is, and, or, assert
Símbolos como: ,\r, , não são analisados.
Ao ser executado o exe-complexo.txt contido na pasta Exemplos desse repositório, a saída a seguir deve ser retornada:
COMENTARIO_MULTILINHAS -> ''' Testando Analisador Léxico da Linguagem Python ''' QUEBRA_LINHA QUEBRA_LINHA COMENTARIO_SIMPLES -> # Função somar QUEBRA_LINHA PALAVRA_RESERVADA -> def IDENTIFICADOR -> somar DELIMITADOR_ABERTO -> ( IDENTIFICADOR -> a IDENTIFICADOR -> b DELIMITADOR_FECHADO -> ) FACA -> : QUEBRA_LINHA IDENTACAO IDENTIFICADOR -> x OPERADOR_ATRIBUICAO -> = IDENTIFICADOR -> a OPERADOR_ARITMETICO -> + IDENTIFICADOR -> b QUEBRA_LINHA IDENTACAO PALAVRA_RESERVADA -> return IDENTIFICADOR -> x QUEBRA_LINHA QUEBRA_LINHA COMENTARIO_SIMPLES -> # Testando função em uma lista QUEBRA_LINHA IDENTIFICADOR -> lista OPERADOR_ATRIBUICAO -> = LISTA_ABERTA -> [ NUMERO_INTEIRO -> 1 NUMERO_INTEIRO -> 2 NUMERO_INTEIRO -> 3 NUMERO_INTEIRO -> 4 LISTA_FECHADA -> ] QUEBRA_LINHA IDENTIFICADOR -> resultado OPERADOR_ATRIBUICAO -> = NUMERO_INTEIRO -> 0 QUEBRA_LINHA IDENTIFICADOR -> indice OPERADOR_ATRIBUICAO -> = NUMERO_INTEIRO -> 0 QUEBRA_LINHA PALAVRA_RESERVADA -> while DELIMITADOR_ABERTO -> ( IDENTIFICADOR -> indice OPERADOR_RELACIONAL -> < IDENTIFICADOR -> len DELIMITADOR_ABERTO -> ( IDENTIFICADOR -> lista DELIMITADOR_FECHADO -> ) DELIMITADOR_FECHADO -> ) FACA -> : QUEBRA_LINHA IDENTACAO IDENTIFICADOR -> resultado OPERADOR_ATRIBUICAO -> += IDENTIFICADOR -> somar DELIMITADOR_ABERTO -> ( IDENTIFICADOR -> lista LISTA_ABERTA -> [ IDENTIFICADOR -> indice LISTA_FECHADA -> ] IDENTIFICADOR -> lista LISTA_ABERTA -> [ IDENTIFICADOR -> indice OPERADOR_ARITMETICO -> + NUMERO_INTEIRO -> 1 LISTA_FECHADA -> ] DELIMITADOR_FECHADO -> ) QUEBRA_LINHA IDENTACAO IDENTIFICADOR -> indice OPERADOR_ATRIBUICAO -> += NUMERO_INTEIRO -> 2 QUEBRA_LINHA QUEBRA_LINHA COMENTARIO_SIMPLES -> # Mostrando resultado QUEBRA_LINHA IDENTIFICADOR -> print DELIMITADOR_ABERTO -> ( IDENTIFICADOR -> resultado DELIMITADOR_FECHADO -> ) QUEBRA_LINHA