Coder Social home page Coder Social logo

g--p-'s Introduction

G--+-

Esse compilador foi desenvolvido como trabalho da disciplina Teoria dos Compiladores em 2019.3 na UFJF, disciplina ministrada pelo Prof. Marcelo Bernardes Vieira. O trabalho foi implementado pelo grupo:

  • Arthur Gonze Machado
  • João Victor de Souza @SouzaJBR
  • Jorão Júnior @joraojr

g--p-'s People

Contributors

arthurgonze avatar joraojr avatar souzajbr avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

joraojr

g--p-'s Issues

Remover warnings do symbol.h e .cpp

passing NULL to non-pointer argument 2 of ‘Symbol::Symbol(const char*, int, const char*)’ [-Wconversion-null]
explicit IdSymbol(const char *lexeme) : Symbol(lexeme, NULL, NULL) {};

Refatoração da checagem de tipos para os nós do tipo "ExpNode"

Refatorar o código do semântico para inferência e checagem de tipos dos nós

  • TokenNode
  • ArrayNode
  • CallNode
  • PrimaryNode
  • AssignNode
  • BooleanOpNode
  • SignNode
  • AddressValNode
  • PointerValNode
  • NotNode
  • NameExpNode
  • PointerExpNode
  • ArrayCallNode
  • AdditionOPNode
  • MultiplicationOPNode

Atribuição por retorno de função não está pegando o tipo do função e do struct

Para o código

typedef struct {
int a;
float b;
} c;

float f (int c, float b) {

c = c + 2;
b = b + 1.21;
if(a)
b = 2e10;

return b;
}

char v;

int main (){
char v;
char * z;
c *x;
x->a=2;
x->b= f(2,3);

v = '\n';
try{
z = "abacasad";
} catch (...) throw;
return 0;
}

Dá erro de atribuição de tipo nas linhas :
x->a=2;
x->b= f(2,3);

[SEMANTIC ERROR - assignNode] CANNOT ASSIGN AN EXPRESSION TO A DIFFERENT TYPE, line: 22
[SEMANTIC ERROR - callNode] PARAMETER TYPE MISMATCH, line: 23 parameter: b

Encapsulamento de expressões Pointer-to-Value

Seja a estrutura:

typedef struct {

    int m11;
    int m12;
} m1;

m1* c[2];

A expressão

*c[1].m11

Deve ser interpretada como *(c) [1].m11 (ler o valor que c aponta) ou *(c[1].m11) (ler o valor que o resultado da expressão aponta).
A gramática está lendo como a primeira opção.

Erros léxicos até a coluna 4095

Investigar o que ocorre com o tratamento de erros do analisador léxico indo até a coluna 4095, mesmo os arquivos tendo um número maior de caracteres na linha

Consertar operações do parser

Ter certeza de que as operações do Parser estão sendo computadas corretamente. Após isso, a impressão deve seguir os tipos (Se é int, imprimir NUMINT, pro ex.)

Correções no Parser e token.h

Corrigir tokens LBRACE para LKEY
3 pontos do CATCH
Corrigir os CHARs para LITERALCHARs no Parser
Corrigir os LBRACEs e Lbrackets no Parser

Verificar gramática para detecção de arrays

Alguns testes detectam problemas sintáticos incorretamente.

O código a seguir funciona corretamente:

typedef struct {

    int za;
    int zc;
} myStruct;

myStruct k, *o[899];

Se o k for retirado da declaração, é apontado um erro sintático:

typedef struct {

    int za;
    int zc;
} myStruct;

myStruct  *o[899];

[SYNTAX ERROR] Error(Sync), Token error: LBRACKET

Ajustar sintático

Arrumar as produções

  • *a[] (não está na gramática)
  • ****a (não está na gramática)
  • a[2] = 0
  • (a*p)
  • a*8
  • x =[a+b]
  • a*p (o semântico tem q resolver por precisar de contexto)

@arthurgonze @SouzaJBR add o resto ai, só lembro esses

Problema na detecção do Ctrl+Z

O console, quando lê a entrada padrão, não detecta corretamente a entrada da finalização da entrada (Ctrl+Z). Bug ocorre principalmente no Windows

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.