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);
|
||||
|
||||
evaluate f in 3;
|
||||
evaluate f in (3);
|
||||
g(5);
|
||||
evaluate g in 4;
|
||||
evaluate g in (4);
|
||||
g(2);
|
||||
h(2);
|
|
@ -1,2 +1,2 @@
|
|||
fun f = 1/x;
|
||||
derivative f in 3 err -2;
|
||||
derivative f in (3) err -2;
|
|
@ -1,6 +1,6 @@
|
|||
fun f = x^2;
|
||||
derivative f in 3;
|
||||
derivative 2 f in 3;
|
||||
derivative 3 f in 3;
|
||||
derivative 4 f in 3;
|
||||
derivative 5 f in 3;
|
||||
derivative f in (3);
|
||||
derivative 2 f in (3);
|
||||
derivative 3 f in (3);
|
||||
derivative 4 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 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;
|
||||
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 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 c = a - b;
|
|
@ -62,7 +62,7 @@ typedef enum TokenID {
|
|||
LESSER_EQUAL,
|
||||
GREATER,
|
||||
GREATER_EQUAL,
|
||||
COMPARE,
|
||||
NOT_EQUAL,
|
||||
VAR,
|
||||
ERR,
|
||||
TAYLOR,
|
||||
|
|
|
@ -20,7 +20,6 @@ char [a-zA-Z]
|
|||
characters [a-zA-Z., ]
|
||||
decimal [.]
|
||||
endline \n
|
||||
/* whitespace [\f\n\r\t\v\0 ] */
|
||||
whitespace [ \f\n\r\t\v]
|
||||
|
||||
%%
|
||||
|
@ -54,6 +53,7 @@ whitespace [ \f\n\r\t\v]
|
|||
"<=" { return LESSER_EQUAL; }
|
||||
">" { return GREATER; }
|
||||
">=" { return GREATER_EQUAL; }
|
||||
"!=" { return NOT_EQUAL; }
|
||||
"in" { return IN; }
|
||||
"{" { return OPEN_BRACES; }
|
||||
"}" { return CLOSE_BRACES; }
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
|
||||
void yyerror(const char * string) {
|
||||
LogError("Mensaje: '%s' debido a '%s' (linea %d).", string, yytext, yylineno);
|
||||
LogError("En ASCII es:");
|
||||
LogErrorRaw("\t");
|
||||
const int length = strlen(yytext);
|
||||
for (int i = 0; i < length; ++i) {
|
||||
LogErrorRaw("[%d]", yytext[i]);
|
||||
}
|
||||
LogErrorRaw("\n\n");
|
||||
// LogError("En ASCII es:");
|
||||
// LogErrorRaw("\t");
|
||||
// const int length = strlen(yytext);
|
||||
// for (int i = 0; i < length; ++i) {
|
||||
// LogErrorRaw("[%d]", yytext[i]);
|
||||
// }
|
||||
// LogErrorRaw("\n\n");
|
||||
}
|
||||
|
||||
int ProgramGrammarAction(const int value) {
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
%token LESSER_EQUAL
|
||||
%token GREATER
|
||||
%token GREATER_EQUAL
|
||||
%token COMPARE
|
||||
%token NOT_EQUAL
|
||||
%token VAR
|
||||
%token ERR
|
||||
%token TAYLOR
|
||||
|
@ -61,8 +61,9 @@
|
|||
%token STRING
|
||||
|
||||
// Reglas de asociatividad y precedencia (de menor a mayor):
|
||||
%left ADD SUB
|
||||
%left MUL DIV
|
||||
%left GREATER GREATER_EQUAL LESSER LESSER_EQUAL EQUAL NOT_EQUAL
|
||||
%left ADD SUB NOT
|
||||
%left MUL DIV AND OR
|
||||
%left POW
|
||||
|
||||
%%
|
||||
|
@ -70,50 +71,60 @@
|
|||
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
|
||||
| integrate
|
||||
| derivative
|
||||
| STRING
|
||||
| expression ADD expression
|
||||
| expression SUB expression
|
||||
| expression ADD expression
|
||||
| expression SUB expression
|
||||
| expression MUL expression
|
||||
| expression DIV expression
|
||||
| expression POW expression
|
||||
| OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| SUB expression
|
||||
| number
|
||||
;
|
||||
|
||||
domain: STRING LESSER number
|
||||
| STRING LESSER_EQUAL number
|
||||
| STRING GREATER number
|
||||
| STRING GREATER_EQUAL number
|
||||
| STRING EQUAL number
|
||||
| number LESSER STRING
|
||||
| number LESSER_EQUAL STRING
|
||||
| number GREATER STRING
|
||||
| number GREATER_EQUAL STRING
|
||||
| number EQUAL STRING
|
||||
| number LESSER STRING LESSER number
|
||||
| number LESSER_EQUAL STRING LESSER number
|
||||
| number LESSER STRING LESSER_EQUAL number
|
||||
| number LESSER_EQUAL STRING LESSER_EQUAL number
|
||||
domain: expression LESSER expression
|
||||
| expression LESSER_EQUAL expression
|
||||
| expression GREATER expression
|
||||
| expression GREATER_EQUAL expression
|
||||
| expression EQUAL expression
|
||||
| expression NOT_EQUAL expression
|
||||
| expression LESSER expression LESSER expression
|
||||
| expression LESSER_EQUAL expression LESSER expression
|
||||
| expression LESSER expression LESSER_EQUAL expression
|
||||
| expression LESSER_EQUAL expression LESSER_EQUAL expression
|
||||
;
|
||||
|
||||
boolean: number LESSER number
|
||||
| number LESSER_EQUAL number
|
||||
| number GREATER number
|
||||
| number GREATER_EQUAL number
|
||||
| number EQUAL number
|
||||
boolean: expression LESSER expression
|
||||
| expression LESSER_EQUAL expression
|
||||
| expression GREATER expression
|
||||
| expression GREATER_EQUAL expression
|
||||
| expression EQUAL expression
|
||||
| expression NOT_EQUAL expression
|
||||
| boolean OR boolean
|
||||
| boolean AND boolean
|
||||
| OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS
|
||||
| NOT boolean
|
||||
;
|
||||
|
||||
constant: DOUBLE
|
||||
positive_constant: DOUBLE
|
||||
| INTEGER
|
||||
| SUB constant
|
||||
;
|
||||
|
||||
declare_function: FUNCTION STRING ASSIGN function
|
||||
|
@ -134,15 +145,15 @@ composite: STRING COMPOSITE STRING
|
|||
| composite COMPOSITE STRING
|
||||
;
|
||||
|
||||
numbers: number
|
||||
| number COMMA numbers
|
||||
expressions: expression
|
||||
| expression COMMA expressions
|
||||
;
|
||||
|
||||
strings: STRING
|
||||
| STRING COMMA strings
|
||||
;
|
||||
|
||||
numArray: OPEN_BRACKETS numbers CLOSE_BRACKETS
|
||||
numArray: OPEN_BRACKETS expressions CLOSE_BRACKETS
|
||||
;
|
||||
|
||||
numArrays: numArray
|
||||
|
@ -166,41 +177,26 @@ escapeStrings: escapeString
|
|||
escapeStringArray: OPEN_BRACKETS escapeStrings CLOSE_BRACKETS
|
||||
;
|
||||
|
||||
evaluate: EVALUATE STRING IN number
|
||||
evaluate: EVALUATE STRING IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| EVALUATE STRING IN numArray
|
||||
| STRING OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
||||
| EVALUATE stringArray IN number
|
||||
| STRING OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| EVALUATE stringArray IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| 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 STRING number AND_INT number
|
||||
| INTEGRATE stringArray BETWEEN number AND_INT number
|
||||
| INTEGRATE stringArray number AND_INT number
|
||||
| integrate ERR constant
|
||||
integrate: INTEGRATE STRING BETWEEN OPEN_PARENTHESIS expression AND_INT expression CLOSE_PARENTHESIS
|
||||
| INTEGRATE STRING OPEN_PARENTHESIS expression AND_INT expression CLOSE_PARENTHESIS
|
||||
| INTEGRATE stringArray BETWEEN OPEN_PARENTHESIS expression AND_INT expression CLOSE_PARENTHESIS
|
||||
| INTEGRATE stringArray OPEN_PARENTHESIS expression AND_INT expression CLOSE_PARENTHESIS
|
||||
| integrate ERR positive_constant
|
||||
;
|
||||
|
||||
squotes: SQUOTE
|
||||
| SQUOTE squotes
|
||||
;
|
||||
|
||||
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
|
||||
;
|
||||
|
||||
print: PRINT OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
||||
| PRINT OPEN_PARENTHESIS STRING CLOSE_PARENTHESIS
|
||||
print: PRINT OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| PRINT OPEN_PARENTHESIS escapeString CLOSE_PARENTHESIS
|
||||
;
|
||||
|
||||
|
@ -208,13 +204,13 @@ statements: statement
|
|||
| statement statements
|
||||
;
|
||||
|
||||
derivative: DERIVATIVE STRING IN constant
|
||||
| DERIVATIVE INTEGER STRING IN constant
|
||||
| STRING squotes OPEN_PARENTHESIS constant CLOSE_PARENTHESIS
|
||||
| DERIVATIVE stringArray IN constant
|
||||
| DERIVATIVE INTEGER stringArray IN constant
|
||||
| stringArray squotes OPEN_PARENTHESIS constant CLOSE_PARENTHESIS
|
||||
| derivative ERR constant
|
||||
derivative: DERIVATIVE STRING IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| DERIVATIVE INTEGER STRING IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| STRING squotes OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| DERIVATIVE stringArray IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| DERIVATIVE INTEGER stringArray IN OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| stringArray squotes OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
| derivative ERR positive_constant
|
||||
;
|
||||
|
||||
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
|
||||
;
|
||||
|
||||
number: constant
|
||||
/* expression: positive_constant
|
||||
| evaluate
|
||||
| integrate
|
||||
| derivative
|
||||
| number ADD number
|
||||
| number DIV number
|
||||
| number SUB number
|
||||
| number POW number
|
||||
| number MUL number
|
||||
| SUB number
|
||||
| OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
||||
;
|
||||
| expression ADD expression
|
||||
| expression DIV expression
|
||||
| expression SUB expression
|
||||
| expression POW expression
|
||||
| expression MUL expression
|
||||
| SUB expression
|
||||
| OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||
; */
|
||||
|
||||
assign_variable: STRING ADD_ASSIGN number
|
||||
| STRING SUB_ASSIGN number
|
||||
| STRING MUL_ASSIGN number
|
||||
| STRING DIV_ASSIGN number
|
||||
assign_variable: STRING ADD_ASSIGN expression
|
||||
| STRING SUB_ASSIGN expression
|
||||
| STRING MUL_ASSIGN expression
|
||||
| STRING DIV_ASSIGN expression
|
||||
| STRING INCREMENT
|
||||
| STRING DECREMENT
|
||||
| STRING ASSIGN expression
|
||||
|
|
|
@ -13,6 +13,7 @@ const int main(const int argumentCount, const char ** arguments) {
|
|||
// #ifdef YYDEBUG
|
||||
// yydebug = 1;
|
||||
// #endif
|
||||
|
||||
// Inicializar estado de la aplicación.
|
||||
state.result = 0;
|
||||
state.succeed = false;
|
||||
|
|
Loading…
Reference in New Issue