First commit
This commit is contained in:
commit
3d68783535
25 files changed
+1751
No files matched your search
@@ -0,0 +1,31 @@
|
||||
#ifndef MICROPASCAL_PARSER_AST_H
|
||||
#define MICROPASCAL_PARSER_AST_H
|
||||
|
||||
typedef enum AstKind {
|
||||
AST_PROGRAMA,
|
||||
AST_SECAO_VAR,
|
||||
AST_DECL_VAR,
|
||||
AST_TIPO,
|
||||
AST_BLOCO,
|
||||
AST_LISTA_COMANDOS,
|
||||
AST_ATRIBUICAO,
|
||||
AST_ITERACAO,
|
||||
AST_DECISAO,
|
||||
AST_ESCRITA,
|
||||
AST_EXPRESSAO_BINARIA,
|
||||
AST_EXPRESSAO_UNARIA,
|
||||
AST_EXPRESSAO_PARENTESES,
|
||||
AST_EXPRESSAO_LITERAL,
|
||||
AST_EXPRESSAO_IDENTIFICADOR
|
||||
} AstKind;
|
||||
|
||||
typedef struct AstNo {
|
||||
AstKind kind;
|
||||
char* valor;
|
||||
struct AstNo* esquerda;
|
||||
struct AstNo* direita;
|
||||
struct AstNo* terceiro;
|
||||
struct AstNo* proximo;
|
||||
} AstNo;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,21 @@
|
||||
#ifndef MICROPASCAL_PARSER_PARSER_H
|
||||
#define MICROPASCAL_PARSER_PARSER_H
|
||||
|
||||
#include "micropascal-lexer/lexer.h"
|
||||
#include "micropascal-parser/ast.h"
|
||||
|
||||
typedef struct Parser {
|
||||
Lexer* lexer;
|
||||
Token atual;
|
||||
int houve_erro;
|
||||
int total_erros;
|
||||
int silencioso;
|
||||
} Parser;
|
||||
|
||||
void parserInicializar(Parser* parser, Lexer* lexer);
|
||||
void parserSilenciarErros(Parser* parser, int silenciar);
|
||||
AstNo* parserAnalisarPrograma(Parser* parser);
|
||||
void astLiberar(AstNo* no);
|
||||
void astImprimir(const AstNo* no, int profundidade);
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user