GithubHelp home page GithubHelp logo

fdaniela / compiladormgol Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 3.63 MB

Desenvolvimento de um compilador que reconhece a linguagem MGol

License: GNU General Public License v3.0

C# 98.44% C 1.56%
compiler-construction csharp-code lexical-analyzer mgol-compiler semantic-analyzer sintaxis-analyzer

compiladormgol's Introduction

PROJETO: Desenvolvimento de um compilador

Este repositório tem como objetivo o desenvolvimento de um compilador que recebe como entrada um arquivo fonte em uma linguagem Mgol, realiza a fase de análise, síntese e semântica gerando um arquivo objeto em linguagem C. O arquivo final deverá ser compilável em compilador C, ou seja, o código gerado deverá estar completo para compilação e execução.

Este repositório tem como objetivo o desenvolvimento de um compilador que aceitará como entrada um arquivo fonte escrito na linguagem de programação Mgol (uma linguagem criada especificamente para este estudo de caso). O compilador passará pelas etapas de análise e síntese, produzindo como saída um arquivo objeto na linguagem C. Esse arquivo resultante estará pronto para ser compilado e executado em um compilador C, ou seja, o código gerado será completo e funcional para fins de compilação e execução.

Os módulos a serem implementados contemplam:

Etapa 1 - Analisador Léxico

Esta etapa visa o desenvolvimento de um analisador léxico e da tabela de símbolos. Resultando na leitura do arquivo fonte e produção de tokens para a análise léxica e tabela de símbolos.

Etapa 2 - Analisador Sintático

Esta etapa visa o desenvolvimento do analisador sintático ascendente SLR(1) para verificação de sintaxe com dados obtidos do analisador léxico e também a recuperação do erro com reestabelecimento da análise. Resultando na obtenção dos tokens, produção da árvore sintática através do modelo de análise sintática e implementação de rotina de tratamento e recuperação do erro sintático.

Etapa 3 - Analisador Semântico

Esta etapa visa o desenvolvimento do analisador semântico e geração de código final a partir do método tradução dirigida pela sintaxe. Resultando na realização de análise semântica e produção de código final em conjunto com a análise sintática.


Arquitetura Geral

!

Ao final de todos teremos como sistema e resultado do estudo de caso, um pequeno compilador que compilará o programa fonte (linguagem Mgol), Fonte.ALG (a) em PROGRAMA.C (b).


Tabelas Auxiliares

TABELA 1 - Símbolos do alfabeto

Definições Significado
Dígitos 0,1,2,3,4,5,6,7,8,9
Letras (maiúsculas e minúsculas) A, B, ...,Z ,a ,..., z
Demais caracteres ,(vírgula), ;(ponto e vírgula), :(dois pontos), .(ponto), !, ?, , * ,+ ,- , / , (, ), {, }, [,], <, >, =‘(aspas simples), “ (aspas duplas), _(underline)

TABELA 2 - Palavras reservadas

Token Significado
inicio Delimita o início do programa
varinicio Delimita o início da declaração de variáveis
varfim Delimita o fim da declaração de variáveis
escreva Imprime na saída padrão
leia Lê da saída padrão
se Estrutura condicional
entao Elemento de estrutura condicional
fimse Elemento de estrutura condicional
repita Elemento de estrutura de repetição
fimrepita Elemento de estrutura de repetição
fim Delimita o fim do programa
inteiro Tipo de dado inteiro
literal Tipo de dado literal
real Tipo de dado real

TABELA 3 - Tabela de tokens

Token Significado Características/Padrão
Num Constante numérica D+ (. D + )? ((E|e)(+|−)? D + ) ?
Lit Constante literal ".*"
id Identificador L(L|D|_)∗
Comentário Texto entre { } {.*}
EOF Final de Arquivo Flag da linguagem (EOF é um único símbolo)
OPR Operadores relacionais <, >, >= , <= , =, <>
RCB Atribuição <-
OPM Operadores aritméticos + , -, *, /
AB_P Abre Parênteses (
FC_P Fecha Parênteses )
PT_V Ponto e vírgula ;
ERRO Qualquer símbolo diferente de qualquer palavra definida.
Vir Vírgula ,
Ignorar Tabulação, Espaço, Salto de Linha Reconhecidos e ignorados.

compiladormgol's People

Contributors

fdaniela avatar

Watchers

 avatar

compiladormgol's Issues

Erro de declaração de variáveis

A mesma variável é declarada com tipos diferentes no código, deve aceitar apenas a primeira declaração consultando a tabela de simbolos.

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.