Fix bugs
Co-authored-by: Ezequiel Bellver <ebellver@itba.edu.ar> Co-authored-by: Juan Barmasch <jbarmasch@itba.edu.ar>
This commit is contained in:
parent
7b905ec260
commit
af3d848aec
|
@ -1,3 +1,2 @@
|
||||||
fun f = 1/x;
|
fun f = 1/x;
|
||||||
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;
|
fun g = taylor 5 f;
|
||||||
taylor 5 f;
|
|
|
@ -1,4 +1,5 @@
|
||||||
|
fun g = (1-x)^(x);
|
||||||
|
fun f = x^2;
|
||||||
fun h = x/(x-2);
|
fun h = x/(x-2);
|
||||||
fun g = hohohoh;
|
fun j = 1/x;
|
||||||
printCsv g(1)
|
printCSV(["g", "f", "h", "j"], [[g(1), f(1), h(1) , j(1), gofohoj(1)]], "example.csv");
|
||||||
printCsv g(1)
|
|
|
@ -1 +1 @@
|
||||||
var x = f(3) * x * 4 + 3;
|
fun f = f(3) * x * 4 + 3;
|
|
@ -67,6 +67,7 @@ typedef enum TokenID {
|
||||||
ERR,
|
ERR,
|
||||||
TAYLOR,
|
TAYLOR,
|
||||||
ESCAPESTRING,
|
ESCAPESTRING,
|
||||||
|
PRINTCSV,
|
||||||
DOUBLE,
|
DOUBLE,
|
||||||
INTEGER,
|
INTEGER,
|
||||||
STRING
|
STRING
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
crlf \r\n
|
crlf \r\n
|
||||||
digit [0-9]
|
digit [0-9]
|
||||||
char [a-zA-Z]
|
char [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\0 ] */
|
||||||
|
@ -75,6 +76,7 @@ whitespace [ \f\n\r\t\v]
|
||||||
"var" { return VAR; }
|
"var" { return VAR; }
|
||||||
"err" { return ERR; }
|
"err" { return ERR; }
|
||||||
"taylor" { return TAYLOR; }
|
"taylor" { return TAYLOR; }
|
||||||
|
"printCSV" { return PRINTCSV; }
|
||||||
|
|
||||||
|
|
||||||
{digit}+{decimal}{digit}+ { return DoublePatternAction(yytext); }
|
{digit}+{decimal}{digit}+ { return DoublePatternAction(yytext); }
|
||||||
|
@ -83,7 +85,7 @@ whitespace [ \f\n\r\t\v]
|
||||||
|
|
||||||
{char}+ { return StringPatternAction(yytext); }
|
{char}+ { return StringPatternAction(yytext); }
|
||||||
|
|
||||||
\"{char}+\" { return EscapeStringPatternAction(yytext); }
|
\"{characters}+\" { return EscapeStringPatternAction(yytext); }
|
||||||
|
|
||||||
{whitespace} { IgnoredPatternAction(yytext); }
|
{whitespace} { IgnoredPatternAction(yytext); }
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
%token ERR
|
%token ERR
|
||||||
%token TAYLOR
|
%token TAYLOR
|
||||||
%token ESCAPESTRING
|
%token ESCAPESTRING
|
||||||
|
%token PRINTCSV
|
||||||
%token DOUBLE
|
%token DOUBLE
|
||||||
%token INTEGER
|
%token INTEGER
|
||||||
%token STRING
|
%token STRING
|
||||||
|
@ -66,31 +67,34 @@
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
program: statements // { $$ = ProgramGrammarAction($1); }
|
program: statements
|
||||||
;
|
;
|
||||||
|
|
||||||
expression: constant
|
expression: constant
|
||||||
|
| evaluate
|
||||||
|
| integrate
|
||||||
|
| derivative
|
||||||
| STRING
|
| STRING
|
||||||
| expression ADD expression // { $$ = AdditionExpressionGrammarAction($1, $3); }
|
| expression ADD expression
|
||||||
| expression SUB expression // { $$ = SubtractionExpressionGrammarAction($1, $3); }
|
| expression SUB expression
|
||||||
| expression MUL expression // { $$ = MultiplicationExpressionGrammarAction($1, $3); }
|
| expression MUL expression
|
||||||
| expression DIV expression // { $$ = DivisionExpressionGrammarAction($1, $3); }
|
| expression DIV expression
|
||||||
| expression POW expression // { $$ = PowerExpressionGrammarAction($1, $3); }
|
| expression POW expression
|
||||||
| OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
| OPEN_PARENTHESIS expression CLOSE_PARENTHESIS
|
||||||
| SUB expression
|
| SUB expression
|
||||||
| number
|
| number
|
||||||
;
|
;
|
||||||
|
|
||||||
domain: STRING LESSER number // { $$ = LesserExpressionGrammarAction($1, $3); }
|
domain: STRING LESSER number
|
||||||
| STRING LESSER_EQUAL number // { $$ = LesserEqualExpressionGrammarAction($1, $3); }
|
| STRING LESSER_EQUAL number
|
||||||
| STRING GREATER number // { $$ = GreaterExpressionGrammarAction($1, $3); }
|
| STRING GREATER number
|
||||||
| STRING GREATER_EQUAL number // { $$ = GreaterEqualExpressionGrammarAction($1, $3); }
|
| STRING GREATER_EQUAL number
|
||||||
| STRING EQUAL number // { $$ = EqualExpressionGrammarAction($1, $3); }
|
| STRING EQUAL number
|
||||||
| number LESSER STRING // { $$ = LesserExpressionGrammarAction($1, $3); }
|
| number LESSER STRING
|
||||||
| number LESSER_EQUAL STRING // { $$ = LesserEqualExpressionGrammarAction($1, $3); }
|
| number LESSER_EQUAL STRING
|
||||||
| number GREATER STRING // { $$ = GreaterExpressionGrammarAction($1, $3); }
|
| number GREATER STRING
|
||||||
| number GREATER_EQUAL STRING // { $$ = GreaterEqualExpressionGrammarAction($1, $3); }
|
| number GREATER_EQUAL STRING
|
||||||
| number EQUAL STRING // { $$ = EqualExpressionGrammarAction($1, $3); }
|
| number EQUAL STRING
|
||||||
| number LESSER STRING LESSER number
|
| number LESSER STRING LESSER number
|
||||||
| number LESSER_EQUAL STRING LESSER number
|
| number LESSER_EQUAL STRING LESSER number
|
||||||
| number LESSER STRING LESSER_EQUAL number
|
| number LESSER STRING LESSER_EQUAL number
|
||||||
|
@ -136,19 +140,38 @@ numbers: number
|
||||||
|
|
||||||
strings: STRING
|
strings: STRING
|
||||||
| STRING COMMA strings
|
| STRING COMMA strings
|
||||||
|
;
|
||||||
|
|
||||||
numArray: OPEN_BRACKETS numbers CLOSE_BRACKETS
|
numArray: OPEN_BRACKETS numbers CLOSE_BRACKETS
|
||||||
;
|
;
|
||||||
|
|
||||||
|
numArrays: numArray
|
||||||
|
| numArray COMMA numArrays
|
||||||
|
;
|
||||||
|
|
||||||
|
arrayNumArray: OPEN_BRACKETS numArrays CLOSE_BRACKETS
|
||||||
|
;
|
||||||
|
|
||||||
stringArray: OPEN_BRACKETS strings CLOSE_BRACKETS
|
stringArray: OPEN_BRACKETS strings CLOSE_BRACKETS
|
||||||
;
|
;
|
||||||
|
|
||||||
evaluate: EVALUATE STRING IN number //{ $$ = IntegerConstantGrammarAction($1); }
|
escapeString: ESCAPESTRING
|
||||||
| EVALUATE STRING IN numArray //{ $$ = IntegerConstantGrammarAction($1); }
|
| ESCAPESTRING ADD escapeString
|
||||||
| STRING OPEN_PARENTHESIS number CLOSE_PARENTHESIS //{ $$ = IntegerConstantGrammarAction($1); }
|
;
|
||||||
| EVALUATE stringArray IN number //{ $$ = IntegerConstantGrammarAction($1); }
|
|
||||||
| EVALUATE stringArray IN numArray //{ $$ = IntegerConstantGrammarAction($1); }
|
escapeStrings: escapeString
|
||||||
| stringArray OPEN_PARENTHESIS number CLOSE_PARENTHESIS //{ $$ = IntegerConstantGrammarAction($1); }
|
| escapeString COMMA escapeStrings
|
||||||
|
;
|
||||||
|
|
||||||
|
escapeStringArray: OPEN_BRACKETS escapeStrings CLOSE_BRACKETS
|
||||||
|
;
|
||||||
|
|
||||||
|
evaluate: EVALUATE STRING IN number
|
||||||
|
| EVALUATE STRING IN numArray
|
||||||
|
| STRING OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
||||||
|
| EVALUATE stringArray IN number
|
||||||
|
| EVALUATE stringArray IN numArray
|
||||||
|
| stringArray OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
||||||
;
|
;
|
||||||
|
|
||||||
integrate: INTEGRATE STRING BETWEEN number AND_INT number
|
integrate: INTEGRATE STRING BETWEEN number AND_INT number
|
||||||
|
@ -170,6 +193,7 @@ statement: evaluate SEMICOLON
|
||||||
| ifelse_statement
|
| ifelse_statement
|
||||||
| for_statement
|
| for_statement
|
||||||
| while_statement
|
| while_statement
|
||||||
|
| printCSV SEMICOLON
|
||||||
| print SEMICOLON
|
| print SEMICOLON
|
||||||
| declare_variable SEMICOLON
|
| declare_variable SEMICOLON
|
||||||
| assign_variable SEMICOLON
|
| assign_variable SEMICOLON
|
||||||
|
@ -177,11 +201,7 @@ statement: evaluate SEMICOLON
|
||||||
|
|
||||||
print: PRINT OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
print: PRINT OPEN_PARENTHESIS number CLOSE_PARENTHESIS
|
||||||
| PRINT OPEN_PARENTHESIS STRING CLOSE_PARENTHESIS
|
| PRINT OPEN_PARENTHESIS STRING CLOSE_PARENTHESIS
|
||||||
| PRINT OPEN_PARENTHESIS escapedString CLOSE_PARENTHESIS
|
| PRINT OPEN_PARENTHESIS escapeString CLOSE_PARENTHESIS
|
||||||
;
|
|
||||||
|
|
||||||
escapedString: ESCAPESTRING
|
|
||||||
| ESCAPESTRING ADD escapedString
|
|
||||||
;
|
;
|
||||||
|
|
||||||
statements: statement
|
statements: statement
|
||||||
|
@ -219,14 +239,16 @@ while_statement: WHILE OPEN_PARENTHESIS boolean CLOSE_PARENTHESIS OPEN_BRACKETS
|
||||||
;
|
;
|
||||||
|
|
||||||
declare_variable: VAR STRING
|
declare_variable: VAR STRING
|
||||||
| VAR STRING ASSIGN number
|
|
||||||
| VAR STRING ASSIGN expression
|
| VAR STRING ASSIGN expression
|
||||||
;
|
;
|
||||||
|
|
||||||
number: evaluate
|
printCSV: PRINTCSV OPEN_PARENTHESIS escapeStringArray COMMA arrayNumArray COMMA escapeString CLOSE_PARENTHESIS
|
||||||
|
;
|
||||||
|
|
||||||
|
number: constant
|
||||||
|
| evaluate
|
||||||
| integrate
|
| integrate
|
||||||
| derivative
|
| derivative
|
||||||
| constant
|
|
||||||
| number ADD number
|
| number ADD number
|
||||||
| number DIV number
|
| number DIV number
|
||||||
| number SUB number
|
| number SUB number
|
||||||
|
|
Loading…
Reference in New Issue