Skip to content
Snippets Groups Projects
Commit e28a2fdf authored by marivil's avatar marivil
Browse files

Añadido string como expresion

parent c9b77487
No related branches found
No related tags found
1 merge request!1Arbol
......@@ -326,7 +326,7 @@ static void proc(ast_t *root)
printf("%s%g\n", sv(left(root)), expr(right(root)));
}
break;
case READ:
case SCAN:
if (left(root) == NULL)
{
double rval;
......
......@@ -28,12 +28,12 @@ char *keywords[KWLEN] = {
"mcd",
"mcm",
"print",
"read",
"sin",
"tan",
"var",
"while",
"do"
"do",
"scan"
};
/* Identificadores de las palabras clave */
......@@ -48,12 +48,12 @@ unsigned keycodes[KWLEN] = {
MCD,
MCM,
PRINT,
READ,
SIN,
TAN,
VAR,
WHILE,
DO,
SCAN
};
static void lower(char *s);
......
......@@ -16,7 +16,7 @@
#include "token.h"
#define IN_PARSER
#include "inter05.h" //mirar cambios
#include "inter05.h"
int yylex(void);
......@@ -27,13 +27,10 @@ FILE *fIn;
int yyerror(char *str);
// Creacion del arbol
static ast_t *astRoot = NULL;
%}
%union {
struct sStackType {
// Tipo para elementos sintacticos
// Para identificar el tipo
unsigned char flag;
union {
double vFloat;
......@@ -64,7 +61,7 @@ static ast_t *astRoot = NULL;
// Tokens
%token <s> IDENT
%term VAR PRINT SIN COS TAN READ ARCSIN ARCCOS ARCTAN MCM MCD IF ELSE DO WHILE LOG
%term VAR PRINT SIN COS TAN SCAN ARCSIN ARCCOS ARCTAN MCM MCD IF ELSE DO WHILE LOG
%token <s> FLOAT
%token <s> STR
%token <s> CHAR
......@@ -209,15 +206,15 @@ funcionSistema
$$.flag = fAST;
$$.u.ast = mkNd(PRINT, mkSlf(STR,$3.u.vStr), $5.u.ast);
}
| READ '(' IDENT ')'
| SCAN '(' IDENT ')'
{
$$.flag = fAST;
$$.u.ast = mkNd(READ, NULL, mkSlf(IDENT,$3.u.vStr));
$$.u.ast = mkNd(SCAN, NULL, mkSlf(IDENT,$3.u.vStr));
}
| READ '(' STR ',' IDENT ')'
| SCAN '(' STR ',' IDENT ')'
{
$$.flag = fAST;
$$.u.ast = mkNd(READ, mkSlf(STR,$3.u.vStr), mkSlf(IDENT,$5.u.vStr));
$$.u.ast = mkNd(SCAN, mkSlf(STR,$3.u.vStr), mkSlf(IDENT,$5.u.vStr));
}
;
......@@ -332,6 +329,11 @@ expresion
$$.flag = fAST;
$$.u.ast = mkClf(CHAR,$1.u.vChar);
}
| STR
{
$$.flag = fAST;
$$.u.ast = mkSlf(STR,$1.u.vStr);
}
| IDENT
{
$$.flag = fAST;
......@@ -387,7 +389,6 @@ expresion
%%
// Error sintáctico: impresión del error
int yyerror(char *str) {
prError(yylineno,"%s\n",str,NULL);
return 1;
......@@ -395,9 +396,8 @@ int yyerror(char *str) {
extern FILE *yyin;
// Programa principal (lanzador)
int main(int argc, char *argv[]) {
exitOnError(); // Se indica que si hay errores se finaliza la ejecución
exitOnError();
// Impresión de funcionamiento
if (argc!=2) {
......
......@@ -18,8 +18,13 @@ if (true)
}
print(x_ % 2);
print(-x_);
print(x_);
if (x_ > 10 || !true)
{
print("Si esta bien");
}
var nuevavariable = " ";
scan("HOLA AMIGOS", nuevavariable);
print(nuevavariable);
/* HOLA PUTA*/
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment