Skip to content
Snippets Groups Projects
Commit 3a6c9040 authored by mandeca's avatar mandeca :speech_balloon:
Browse files

Comentarios de autoria reformato.

parent 32abaa0f
No related branches found
No related tags found
No related merge requests found
/** /**
* @Autores: Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega * Compilador de A - Proyecto final GLF
* @Curso: 2019 - 2020 * Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega
* Curso 2019-2020
*/ */
%{ %{
...@@ -70,7 +71,7 @@ OP_AR ([+*-/%=()^]) ...@@ -70,7 +71,7 @@ OP_AR ([+*-/%=()^])
OP_LOG ("=="|"!="|"<"|">") OP_LOG ("=="|"!="|"<"|">")
/*Comienzo de cadena de caracteres*/ /*Comienzo de cadena de caracteres*/
STR_START (["]) /*"/**/ STR_START (["])
/* Comentario de línea */ /* Comentario de línea */
LINE_COMM ("//".*"\n") LINE_COMM ("//".*"\n")
......
/** /**
* Proyecto final GLF * Compilador de A - Proyecto final GLF
* Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega * Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega
* Curso 2019-2020 * Curso 2019-2020
*/ */
...@@ -143,6 +143,7 @@ SENTENCE ...@@ -143,6 +143,7 @@ SENTENCE
$$.type = AST_NODE_id; $$.type = AST_NODE_id;
$$.u.node = newNode(WHILE, $3.u.node, $5.u.node); $$.u.node = newNode(WHILE, $3.u.node, $5.u.node);
} }
/* TODO: FOR? */
| IF '(' EXPR ')' BLOCK ELSE BLOCK | IF '(' EXPR ')' BLOCK ELSE BLOCK
{ {
$$.type = AST_NODE_id; $$.type = AST_NODE_id;
......
/* /**
* @Author: Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega * Compilador de A - Proyecto final GLF
* @Year: 2020 * Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega
* Curso 2019-2020
*/ */
#include "ast.h" #include "ast.h"
......
/**
* Compilador de A - Proyecto final GLF
* Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega
* Curso 2019-2020
*/
#ifndef __AST_H__ #ifndef __AST_H__
#define __AST_H__ #define __AST_H__
/* Tipo "nodo del ast" */
typedef struct ast_s { typedef struct ast_s {
unsigned tag; unsigned tag;
unsigned lineN; unsigned lineN;
......
/* /**
* CÓDIGOS DE SALIDA PARA EL INTÉRPRETE. * Compilador de A - Proyecto final GLF
* * Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega
* Curso 2019-2020
*/ */
/* Identificadores de tokens */ /* Identificadores de tokens */
......
/** /**
* Proyecto final GLF * Compilador de A - Proyecto final GLF
* Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega * Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega
* Curso 2019-2020 * Curso 2019-2020
*/ */
/* /*
* TABLA DE SÍMBOLOS PARA EL INTÉRPRETE * TABLA DE SÍMBOLOS PARA EL INTÉRPRETE
* *
...@@ -25,16 +26,16 @@ static int symbols = 0; /* Número de entradas llenas */ ...@@ -25,16 +26,16 @@ static int symbols = 0; /* Número de entradas llenas */
typedef struct { typedef struct {
bool used; bool used;
char *id; char *id;
sym_value value; symbol value;
} symbol; } entry;
static symbol *symTab = NULL; static entry *symTab = NULL;
/* Rellenar la tabla con entradas vacías */ /* Rellenar la tabla con entradas vacías */
static void init() static void init()
{ {
mallocCheck(symTab, sizeof(symbol) * size); mallocCheck(symTab, sizeof(entry) * size);
memset(symTab, 0, sizeof(symbol) * (size_t)size); memset(symTab, 0, sizeof(entry) * (size_t)size);
} }
/* Función de dispersión para un identificador (String) */ /* Función de dispersión para un identificador (String) */
...@@ -95,7 +96,7 @@ static bool resize() ...@@ -95,7 +96,7 @@ static bool resize()
if (size/symbols >= 2) return false; if (size/symbols >= 2) return false;
size *= 2; size *= 2;
symbol *tmp = symTab; entry *tmp = symTab;
init(); init();
for (int i = 0; i < size/2; i++) for (int i = 0; i < size/2; i++)
...@@ -115,7 +116,7 @@ static bool resize() ...@@ -115,7 +116,7 @@ static bool resize()
} }
/* Función para obtener el valor de un símbolo de la tabla */ /* Función para obtener el valor de un símbolo de la tabla */
sym_value get(char *id) symbol get(char *id)
{ {
int index = pos(id); int index = pos(id);
if (index == SYMTAB_NOT_FOUND) if (index == SYMTAB_NOT_FOUND)
...@@ -127,7 +128,7 @@ sym_value get(char *id) ...@@ -127,7 +128,7 @@ sym_value get(char *id)
} }
/* Función para cambiar una entrada de la tabla de símbolos */ /* Función para cambiar una entrada de la tabla de símbolos */
void edit(char *id, sym_value value) void edit(char *id, symbol value)
{ {
if (symbols == 0) init(); if (symbols == 0) init();
......
/** /**
* Proyecto final GLF * Compilador de A - Proyecto final GLF
* Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega * Manuel de Castro Caballero, María Ruiz Molina, Andrés Trigueros Vega
* Curso 2019-2020 * Curso 2019-2020
*/ */
/* Tipo "símbolo" para la tabla de símbolos
(Par tipo de dato - valor del dato) */
typedef struct symbol_s { typedef struct symbol_s {
int type; int type;
union { union {
double real; double real;
} value; } value;
} sym_value; } symbol;
sym_value get(char *id); /* Declaración de funciones de symtab.c */
void edit(char *id, sym_value value); symbol get(char *id);
void edit(char *id, symbol value);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment