Giter Site home page Giter Site logo

copilador_linguagem_l's Introduction

Hello! I am Homenique Vieira


「 Computer Science undergraduate at 🏦 Pontifical Catholic University of Minas Gerais


Technologies & Tools

My Stats


   

My Resume

copilador_linguagem_l's People

Contributors

guilherme-cosso avatar homeniquem avatar iagomorgado avatar

Stargazers

 avatar

Watchers

 avatar

copilador_linguagem_l's Issues

Analisador Léxico

  1. Implemente o analisador léxico na forma de um procedimento que será chamado pelo analisador sintático. Este procedimento deverá ler o programa-fonte e identificar o próximo token.

Comentários, espaços em branco e quebras de linha deverão ser considerados delimitadores e desprezados. O token reconhecido deverá ser representado por um registro único de escopo global contendo campo para o número do token, lexema, endereço de inserção na tabela (somente para identificadores e palavras reservadas), tipo e tamanho em bytes (somente para o token constante). Observe que o registro léxico é diferente do registro da tabela de símbolos.

A diferenciação entre identificador e palavra reservada é feita através de uma pesquisa na tabela de símbolos. Se um identificador não existir na tabela, deverá ser inserido. Para a construção dos lexemas, utilize um autômato de estados finitos
determinístico com rotinas associadas às suas transições. Erros na análise léxica devem ser reportados através de mensagens. O processo de compilação se encerra após um erro léxico.

As mensagens de erro devem ter os seguintes formatos, onde nn é o número da linha onde o erro foi detectado e lex é o

lexema encontrado:
nn:caractere invalido.
nn:lexema nao identificado [lex].
nn:fim de arquivo nao esperado.

A contagem das linhas começa com valor 1. No caso de sucesso na compilação a
mensagem será:
nn linhas compiladas.
onde nn é o número de linhas do programa. Cada quebra de linha conta uma linha,
mesmo dentro de comentários. A linha finalizada pelo fim do arquivo também é
contabilizada.

Até que o analisador sintático seja feito, o programa principal do compilador deve chamar repetidamente o analisador léxico, listando na tela os registros léxicos encontrados, até o fim do arquivo-fonte. Este teste deverá ser desabilitado posteriormente.

leitura Verificar se Números podem ter sinal negativo

Comando de leitura: é da forma readln(id), onde id é um identificador de variável
numérica, caractere alfanumérico ou string. Caracteres e strings são lidos da mesma
maneira, sem que o usuário precise coloca-los entre aspas ou apóstrofos. Números
podem ter sinal negativo

Tabela de Símbolos

  1. Defina o alfabeto para a linguagem e numere os tokens. Crie também um token
    “fim_de_arquivo” que facilitará as análises léxica e sintática. Ele deve ser
    identificado quando a leitura atingir o fim do arquivo.

  2. Implemente o tipo abstrato de dados “tabela de símbolos”, onde serão armazenados
    apenas as palavras reservadas e os identificadores. A tabela deverá armazenar
    registros que conterão, a princípio, campos para o número do token (byte) e o
    lexema (arranjo de caracteres) da palavra ou identificador. Devem ser
    implementadas duas funções:

  • Uma função que pesquisa a tabela em busca de um lexema e retorna o endereço do

  • registro correspondente, caso exista, ou NULL se este não estiver na tabela.

Para maior eficiência, utilize uma função de espalhamento para pesquisar e inserir itens. Antes do início da análise léxica, o compilador deve inserir todas as palavras reservadas na tabela de símbolos.

Uma boa Técnica que podemos usar é a Bloom Filters (devemos olhar se é viável implementar)
https://www.youtube.com/watch?v=kfFacplFY4Y
  1. Teste a estrutura da tabela de símbolos, listando na tela os itens inseridos. Após o ter certeza que a tabela está correta, desabilite os testes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.