Fix LOTS of warnings (shift/reduce and reduce/reduce)
Co-authored-by: Ezequiel Bellver <ebellver@itba.edu.ar> Co-authored-by: Juan Barmasch <jbarmasch@itba.edu.ar>
This commit is contained in:
parent
01d08db37b
commit
72b7fcf0ff
|
@ -5,8 +5,8 @@ function g = { x - 2: x < 3,
|
||||||
};
|
};
|
||||||
fun h = x/(x-2);
|
fun h = x/(x-2);
|
||||||
|
|
||||||
evaluate f in 3;
|
evaluate f in (3);
|
||||||
g(5);
|
g(5);
|
||||||
evaluate g in 4;
|
evaluate g in (4);
|
||||||
g(2);
|
g(2);
|
||||||
h(2);
|
h(2);
|
|
@ -1,2 +1,2 @@
|
||||||
fun f = 1/x;
|
fun f = 1/x;
|
||||||
derivative f in 3 err -2;
|
derivative f in (3) err -2;
|
|
@ -1,6 +1,6 @@
|
||||||
fun f = x^2;
|
fun f = x^2;
|
||||||
derivative f in 3;
|
derivative f in (3);
|
||||||
derivative 2 f in 3;
|
derivative 2 f in (3);
|
||||||
derivative 3 f in 3;
|
derivative 3 f in (3);
|
||||||
derivative 4 f in 3;
|
derivative 4 f in (3);
|
||||||
derivative 5 f in 3;
|
derivative 5 f in (3);
|
|
@ -2,4 +2,4 @@ fun f = - x^2 / 2 + 5*x;
|
||||||
fun g = x^2 - 5*x - 2;
|
fun g = x^2 - 5*x - 2;
|
||||||
fun h = x^2 - 5*x - 82;
|
fun h = x^2 - 5*x - 82;
|
||||||
|
|
||||||
integrate [f, g, h] between 2 ~ 7;
|
integrate [f, g, h] between (2 ~ 7);
|
|
@ -1 +1,2 @@
|
||||||
fun f = f(3) * x * 4 + 3;
|
fun f = f(3) * x * 4 + 3;
|
||||||
|
fun g = f(3) + f'(3)*(x-3) + f''(3)/2 * (x-3)^2 + f'''(3) / 6 * (x-3)^3 + f''''(3) / 24 * (x-3)^4;
|
|
@ -1,4 +1,4 @@
|
||||||
fun f = x^2;
|
fun f = x^2;
|
||||||
var a = int f 0 ~ 5;
|
var a = int f (0 ~ 5);
|
||||||
var b = int f 0 ~ 1 + int f 1 ~ 2 + int f 2 ~ 3 + int f 3 ~ 4 + int f 4 ~ 5;
|
var b = int f (0 ~ 1) + int f (1 ~ 2) + int f (2 ~ 3) + int f (3 ~ 4) + int f (4 ~ 5);
|
||||||
var c = a - b;
|
var c = a - b;
|
|
@ -62,7 +62,7 @@ typedef enum TokenID {
|
||||||
LESSER_EQUAL,
|
LESSER_EQUAL,
|
||||||
GREATER,
|
GREATER,
|
||||||
GREATER_EQUAL,
|
GREATER_EQUAL,
|
||||||
COMPARE,
|
NOT_EQUAL,
|
||||||
VAR,
|
VAR,
|
||||||
ERR,
|
ERR,
|
||||||
TAYLOR,
|
TAYLOR,
|
||||||
|
|
|
@ -20,7 +20,6 @@ char [a-zA-Z]
|
||||||
characters [a-zA-Z., ]
|
characters [a-zA-Z., ]
|
||||||
decimal [.]
|
decimal [.]
|
||||||
endline \n
|
endline \n
|
||||||
/* whitespace [\f\n\r\t\v\0 ] */
|
|
||||||
whitespace [ \f\n\r\t\v]
|
whitespace [ \f\n\r\t\v]
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
@ -54,6 +53,7 @@ whitespace [ \f\n\r\t\v]
|
||||||
"<=" { return LESSER_EQUAL; }
|
"<=" { return LESSER_EQUAL; }
|
||||||
">" { return GREATER; }
|
">" { return GREATER; }
|
||||||
">=" { return GREATER_EQUAL; }
|
">=" { return GREATER_EQUAL; }
|
||||||
|
"!=" { return NOT_EQUAL; }
|
||||||
"in" { return IN; }
|
"in" { return IN; }
|
||||||
"{" { return OPEN_BRACES; }
|
"{" { return OPEN_BRACES; }
|
||||||
"}" { return CLOSE_BRACES; }
|
"}" { return CLOSE_BRACES; }
|
||||||
|
|
|
@ -10,13 +10,13 @@
|
||||||
|
|
||||||
void yyerror(const char * string) {
|
void yyerror(const char * string) {
|
||||||
LogError("Mensaje: '%s' debido a '%s' (linea %d).", string, yytext, yylineno);
|
LogError("Mensaje: '%s' debido a '%s' (linea %d).", string, yytext, yylineno);
|
||||||
LogError("En ASCII es:");
|
// LogError("En ASCII es:");
|
||||||
LogErrorRaw("\t");
|
// LogErrorRaw("\t");
|
||||||
const int length = strlen(yytext);
|
// const int length = strlen(yytext);
|
||||||
for (int i = 0; i < length; ++i) {
|
// for (int i = 0; i < length; ++i) {
|
||||||
LogErrorRaw("[%d]", yytext[i]);
|
// LogErrorRaw("[%d]", yytext[i]);
|
||||||
}
|
// }
|
||||||
LogErrorRaw("\n\n");
|
// LogErrorRaw("\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int ProgramGrammarAction(const int value) {
|
int ProgramGrammarAction(const int value) {
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
%token LESSER_EQUAL
|
%token LESSER_EQUAL
|
||||||
%token GREATER
|
%token GREATER
|
||||||
%token GREATER_EQUAL
|
%token GREATER_EQUAL
|
||||||
%token COMPARE
|
%token NOT_EQUAL
|
||||||
%token VAR
|
%token VAR
|
||||||
%token ERR
|
%token ERR
|
||||||
%token TAYLOR
|
%token TAYLOR
|
||||||
|
@ -61,8 +61,9 @@
|
||||||
%token STRING
|
%token STRING
|
||||||
|
|
||||||
// Reglas de asociatividad y precedencia (de menor a mayor):
|
// Reglas de asociatividad y precedencia (de menor a mayor):
|
||||||
%left ADD SUB
|
%left GREATER GREATER_EQUAL LESSER LESSER_EQUAL EQUAL NOT_EQUAL
|
||||||
%left MUL DIV
|
%left ADD SUB NOT
|
||||||
|
%left MUL DIV AND OR
|
||||||
%left POW
|
%left POW
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
@ -70,7 +71,21 @@
|
||||||
program: statements { $$ = ProgramGrammarAction($1); }
|
program: statements { $$ = ProgramGrammarAction($1); }
|
||||||
;
|
;
|
||||||
|
|
||||||
expression: constant
|
statement: evaluate SEMICOLON
|
||||||
|
| integrate SEMICOLON
|
||||||
|
| derivative SEMICOLON
|
||||||
|
| declare_function SEMICOLON
|
||||||
|
| if_statement
|
||||||
|
| ifelse_statement
|
||||||
|
| for_statement
|
||||||
|
| while_statement
|
||||||
|
| printCSV SEMICOLON
|
||||||
|
| print SEMICOLON
|
||||||
|
| declare_variable SEMICOLON
|
||||||
|
| assign_variable SEMICOLON
|
||||||
|
;
|
||||||
|
|
||||||
|
expression: positive_constant
|
||||||
| evaluate
|
| evaluate
|
||||||
| integrate
|
| integrate
|
||||||
| derivative
|
| derivative
|
||||||
|
@ -82,38 +97,34 @@ expression: constant
|
||||||
| expression POW expression
|
| expression POW expression
|
||||||
| OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
| OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| SUB expression
|
| SUB expression
|
||||||
| number
|
|
||||||
;
|
;
|
||||||
|
|
||||||
domain: STRING LESSER number
|
domain: expression LESSER expression
|
||||||
| STRING LESSER_EQUAL number
|
| expression LESSER_EQUAL expression
|
||||||
| STRING GREATER number
|
| expression GREATER expression
|
||||||
| STRING GREATER_EQUAL number
|
| expression GREATER_EQUAL expression
|
||||||
| STRING EQUAL number
|
| expression EQUAL expression
|
||||||
| number LESSER STRING
|
| expression NOT_EQUAL expression
|
||||||
| number LESSER_EQUAL STRING
|
| expression LESSER expression LESSER expression
|
||||||
| number GREATER STRING
|
| expression LESSER_EQUAL expression LESSER expression
|
||||||
| number GREATER_EQUAL STRING
|
| expression LESSER expression LESSER_EQUAL expression
|
||||||
| number EQUAL STRING
|
| expression LESSER_EQUAL expression LESSER_EQUAL expression
|
||||||
| number LESSER STRING LESSER number
|
|
||||||
| number LESSER_EQUAL STRING LESSER number
|
|
||||||
| number LESSER STRING LESSER_EQUAL number
|
|
||||||
| number LESSER_EQUAL STRING LESSER_EQUAL number
|
|
||||||
;
|
;
|
||||||
|
|
||||||
boolean: number LESSER number
|
boolean: expression LESSER expression
|
||||||
| number LESSER_EQUAL number
|
| expression LESSER_EQUAL expression
|
||||||
| number GREATER number
|
| expression GREATER expression
|
||||||
| number GREATER_EQUAL number
|
| expression GREATER_EQUAL expression
|
||||||
| number EQUAL number
|
| expression EQUAL expression
|
||||||
|
| expression NOT_EQUAL expression
|
||||||
| boolean OR boolean
|
| boolean OR boolean
|
||||||
| boolean AND boolean
|
| boolean AND boolean
|
||||||
|
| OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS
|
||||||
| NOT boolean
|
| NOT boolean
|
||||||
;
|
;
|
||||||
|
|
||||||
constant: DOUBLE
|
positive_constant: DOUBLE
|
||||||
| INTEGER
|
| INTEGER
|
||||||
| SUB constant
|
|
||||||
;
|
;
|
||||||
|
|
||||||
declare_function: FUNCTION STRING ASSIGN function
|
declare_function: FUNCTION STRING ASSIGN function
|
||||||
|
@ -134,15 +145,15 @@ composite: STRING COMPOSITE STRING
|
||||||
| composite COMPOSITE STRING
|
| composite COMPOSITE STRING
|
||||||
;
|
;
|
||||||
|
|
||||||
numbers: number
|
expressions: expression
|
||||||
| number COMMA numbers
|
| expression COMMA expressions
|
||||||
;
|
;
|
||||||
|
|
||||||
strings: STRING
|
strings: STRING
|
||||||
| STRING COMMA strings
|
| STRING COMMA strings
|
||||||
;
|
;
|
||||||
|
|
||||||
numArray: OPEN_BRACKETS numbers CLOSE_BRACKETS
|
numArray: OPEN_BRACKETS expressions CLOSE_BRACKETS
|
||||||
;
|
;
|
||||||
|
|
||||||
numArrays: numArray
|
numArrays: numArray
|
||||||
|
@ -166,41 +177,26 @@ escapeStrings: escapeString
|
||||||
escapeStringArray: OPEN_BRACKETS escapeStrings CLOSE_BRACKETS
|
escapeStringArray: OPEN_BRACKETS escapeStrings CLOSE_BRACKETS
|
||||||
;
|
;
|
||||||
|
|
||||||
evaluate: EVALUATE STRING IN number
|
evaluate: EVALUATE STRING IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| EVALUATE STRING IN numArray
|
| EVALUATE STRING IN numArray
|
||||||
| STRING OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
| STRING OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| EVALUATE stringArray IN number
|
| EVALUATE stringArray IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| EVALUATE stringArray IN numArray
|
| EVALUATE stringArray IN numArray
|
||||||
| stringArray OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
| stringArray OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
;
|
;
|
||||||
|
|
||||||
integrate: INTEGRATE STRING BETWEEN number AND_INT number
|
integrate: INTEGRATE STRING BETWEEN OPEN_PARENTHESIS expression AND_INT expression CLOSE_PARENTHESIS
|
||||||
| INTEGRATE STRING number AND_INT number
|
| INTEGRATE STRING OPEN_PARENTHESIS expression AND_INT expression CLOSE_PARENTHESIS
|
||||||
| INTEGRATE stringArray BETWEEN number AND_INT number
|
| INTEGRATE stringArray BETWEEN OPEN_PARENTHESIS expression AND_INT expression CLOSE_PARENTHESIS
|
||||||
| INTEGRATE stringArray number AND_INT number
|
| INTEGRATE stringArray OPEN_PARENTHESIS expression AND_INT expression CLOSE_PARENTHESIS
|
||||||
| integrate ERR constant
|
| integrate ERR positive_constant
|
||||||
;
|
;
|
||||||
|
|
||||||
squotes: SQUOTE
|
squotes: SQUOTE
|
||||||
| SQUOTE squotes
|
| SQUOTE squotes
|
||||||
;
|
;
|
||||||
|
|
||||||
statement: evaluate SEMICOLON
|
print: PRINT OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| integrate SEMICOLON
|
|
||||||
| derivative SEMICOLON
|
|
||||||
| declare_function SEMICOLON
|
|
||||||
| if_statement
|
|
||||||
| ifelse_statement
|
|
||||||
| for_statement
|
|
||||||
| while_statement
|
|
||||||
| printCSV SEMICOLON
|
|
||||||
| print SEMICOLON
|
|
||||||
| declare_variable SEMICOLON
|
|
||||||
| assign_variable SEMICOLON
|
|
||||||
;
|
|
||||||
|
|
||||||
print: PRINT OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
|
||||||
| PRINT OPEN_PARENTHESIS STRING CLOSE_PARENTHESIS
|
|
||||||
| PRINT OPEN_PARENTHESIS escapeString CLOSE_PARENTHESIS
|
| PRINT OPEN_PARENTHESIS escapeString CLOSE_PARENTHESIS
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -208,13 +204,13 @@ statements: statement
|
||||||
| statement statements
|
| statement statements
|
||||||
;
|
;
|
||||||
|
|
||||||
derivative: DERIVATIVE STRING IN constant
|
derivative: DERIVATIVE STRING IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| DERIVATIVE INTEGER STRING IN constant
|
| DERIVATIVE INTEGER STRING IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| STRING squotes OPEN_PARENTHESIS constant CLOSE_PARENTHESIS
|
| STRING squotes OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| DERIVATIVE stringArray IN constant
|
| DERIVATIVE stringArray IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| DERIVATIVE INTEGER stringArray IN constant
|
| DERIVATIVE INTEGER stringArray IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| stringArray squotes OPEN_PARENTHESIS constant CLOSE_PARENTHESIS
|
| stringArray squotes OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| derivative ERR constant
|
| derivative ERR positive_constant
|
||||||
;
|
;
|
||||||
|
|
||||||
if_statement: IF OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS OPEN_BRACKETS statements CLOSE_BRACKETS
|
if_statement: IF OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS OPEN_BRACKETS statements CLOSE_BRACKETS
|
||||||
|
@ -245,23 +241,23 @@ declare_variable: VAR STRING
|
||||||
printCSV: PRINTCSV OPEN_PARENTHESIS escapeStringArray COMMA arrayNumArray COMMA escapeString CLOSE_PARENTHESIS
|
printCSV: PRINTCSV OPEN_PARENTHESIS escapeStringArray COMMA arrayNumArray COMMA escapeString CLOSE_PARENTHESIS
|
||||||
;
|
;
|
||||||
|
|
||||||
number: constant
|
/* expression: positive_constant
|
||||||
| evaluate
|
| evaluate
|
||||||
| integrate
|
| integrate
|
||||||
| derivative
|
| derivative
|
||||||
| number ADD number
|
| expression ADD expression
|
||||||
| number DIV number
|
| expression DIV expression
|
||||||
| number SUB number
|
| expression SUB expression
|
||||||
| number POW number
|
| expression POW expression
|
||||||
| number MUL number
|
| expression MUL expression
|
||||||
| SUB number
|
| SUB expression
|
||||||
| OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
| OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
;
|
; */
|
||||||
|
|
||||||
assign_variable: STRING ADD_ASSIGN number
|
assign_variable: STRING ADD_ASSIGN expression
|
||||||
| STRING SUB_ASSIGN number
|
| STRING SUB_ASSIGN expression
|
||||||
| STRING MUL_ASSIGN number
|
| STRING MUL_ASSIGN expression
|
||||||
| STRING DIV_ASSIGN number
|
| STRING DIV_ASSIGN expression
|
||||||
| STRING INCREMENT
|
| STRING INCREMENT
|
||||||
| STRING DECREMENT
|
| STRING DECREMENT
|
||||||
| STRING ASSIGN expression
|
| STRING ASSIGN expression
|
||||||
|
|
|
@ -13,6 +13,7 @@ const int main(const int argumentCount, const char ** arguments) {
|
||||||
// #ifdef YYDEBUG
|
// #ifdef YYDEBUG
|
||||||
// yydebug = 1;
|
// yydebug = 1;
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
// Inicializar estado de la aplicación.
|
// Inicializar estado de la aplicación.
|
||||||
state.result = 0;
|
state.result = 0;
|
||||||
state.succeed = false;
|
state.succeed = false;
|
||||||
|
|
Loading…
Reference in New Issue