|
| int | inicializar_token_list (TokenList *lista, int capacidade_inicial) |
| | inicializa uma lista de tokens com uma capacidade inicial.
|
| |
| void | liberar_token_list (TokenList *lista) |
| | libera a memória alocada para uma TokenList.
|
| |
| int | carregar_tokens (const char *nome_arquivo, TokenList *lista) |
| | carrega tokens de um arquivo de texto para uma TokenList.
|
| |
| void | inicializar_parser (Parser *parser, TokenList *lista, PilhaTabelasSimbolos *symtab_stack) |
| | prepara a estrutura do parser para iniciar a análise a partir de uma lista de tokens.
|
| |
| void | error (Parser *parser, const char *msg) |
| | reporta um erro sintático e encerra o programa.
|
| |
| const char * | token_name (TokenType tipo) |
| | converte um TokenType em uma string legível para impressão.
|
| |
| void | adicionar_token (TokenList *lista, Token token) |
| | adiciona um token ao final de uma TokenList, redimensionando se necessário.
|
| |
| ASTNode * | parse (Parser *parser) |
| | função principal que dispara o processo de análise sintática.
|
| |
| ASTNode * | program (Parser *parser) |
| | processa a regra 'program', o ponto de entrada da gramática.
|
| |
| ASTNode * | function (Parser *parser) |
| | processa a definição completa de uma função.
|
| |
| ASTNode * | var_declaration (Parser *parser) |
| | processa a declaração de uma variável.
|
| |
| ASTNode * | type (Parser *parser) |
| | processa um especificador de tipo (INT ou CHAR).
|
| |
| ASTNode * | statement (Parser *parser) |
| | processa uma única instrução ou um bloco de instruções.
|
| |
| ASTNode * | expression (Parser *parser) |
| | processa uma expressão (incluindo relacionais, aritméticas, etc.).
|
| |
| ASTNode * | arithmetic_expression (Parser *parser) |
| | processa uma expressão aritmética de soma e subtração.
|
| |
| ASTNode * | term (Parser *parser) |
| | processa um termo (multiplicação/divisão).
|
| |
| ASTNode * | factor (Parser *parser) |
| | processa um fator (número, ID, parênteses).
|
| |
| ASTNode * | assign (Parser *parser) |
| | processa uma instrução de atribuição.
|
| |
| ASTNode * | if_statement (Parser *parser) |
| | processa uma instrução condicional 'if-else'.
|
| |
| ASTNode * | for_statement (Parser *parser) |
| | processa uma instrução de laço 'for'.
|
| |
| ASTNode * | param_list (Parser *parser) |
| | processa a lista de parâmetros na definição de uma função.
|
| |
| ASTNode * | arg_list (Parser *parser) |
| | processa a lista de argumentos em uma chamada de função.
|
| |
| ASTNode * | print_statement (Parser *parser) |
| | processa uma instrução 'print'.
|
| |
declarações de tipos e funções para o analisador sintático (parser).
este arquivo define a interface pública do módulo do parser. ele inclui a definição da estrutura de estado 'parser', a lista de tokens e os protótipos de todas as funções que compõem o parser recursivo descendente.
processa uma expressão (incluindo relacionais, aritméticas, etc.).
processa uma expressão (incluindo relacionais, aritméticas, etc.).
Implementa a precedência baixa (comparacoes) de forma iterativa.
- Parameters
-
| parser | Ponteiro para a estrutura Parser. |
- Returns
- O nó ASTNode resultante.
processa um fator (número, ID, parênteses).
processa um fator (número, ID, parênteses).
Esta é a função de maior precedência, consumindo valores literais ou agrupamentos.
- Parameters
-
| parser | Ponteiro para a estrutura Parser. |
- Returns
- O nó ASTNode resultante.