Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
GLF Proyecto
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Automate
Agent sessions
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
marruiz
GLF Proyecto
Commits
3a6c9040
Commit
3a6c9040
authored
Jun 10, 2020
by
mandeca
Browse files
Options
Downloads
Patches
Plain Diff
Comentarios de autoria reformato.
parent
32abaa0f
No related branches found
No related tags found
No related merge requests found
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
ac.l
+4
-3
4 additions, 3 deletions
ac.l
ac.y
+2
-1
2 additions, 1 deletion
ac.y
ast.c
+4
-3
4 additions, 3 deletions
ast.c
ast.h
+6
-0
6 additions, 0 deletions
ast.h
autils.h
+4
-3
4 additions, 3 deletions
autils.h
symtab.c
+10
-9
10 additions, 9 deletions
symtab.c
symtab.h
+7
-4
7 additions, 4 deletions
symtab.h
with
37 additions
and
23 deletions
ac.l
+
4
−
3
View file @
3a6c9040
/**
/**
* @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")
...
...
This diff is collapsed.
Click to expand it.
ac.y
+
2
−
1
View file @
3a6c9040
/**
/**
* 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;
...
...
This diff is collapsed.
Click to expand it.
ast.c
+
4
−
3
View file @
3a6c9040
/*
/**
* @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"
...
...
This diff is collapsed.
Click to expand it.
ast.h
+
6
−
0
View file @
3a6c9040
/**
* 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
;
...
...
This diff is collapsed.
Click to expand it.
autils.h
+
4
−
3
View file @
3a6c9040
/*
/**
* 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 */
...
...
This diff is collapsed.
Click to expand it.
symtab.c
+
10
−
9
View file @
3a6c9040
/**
/**
* 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
;
sym
bol
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
)
sym
bol
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
,
sym
bol
value
)
{
{
if
(
symbols
==
0
)
init
();
if
(
symbols
==
0
)
init
();
...
...
This diff is collapsed.
Click to expand it.
symtab.h
+
7
−
4
View file @
3a6c9040
/**
/**
* 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
;
}
sym
bol
;
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
);
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
sign in
to comment