Coder Social home page Coder Social logo

g--p-'s Issues

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

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

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) {};

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

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

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.)

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

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

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.

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.