[poincare] Clean parser

This commit is contained in:
Léa Saviot
2018-09-28 14:29:11 +02:00
committed by Émilie Feral
parent 256b2f8b76
commit d0df271b6e
2 changed files with 5 additions and 5 deletions

View File

@@ -130,7 +130,7 @@ int { *yylval = Integral(); return FUNCTION; }
inverse { *yylval = MatrixInverse(); return FUNCTION; }
lcm { *yylval = LeastCommonMultiple(); return FUNCTION; }
ln { *yylval = NaperianLogarithm(); return FUNCTION; }
log { return LOGFUNCTION; }
log { return LOG_FUNCTION; }
permute { *yylval = PermuteCoefficient(); return FUNCTION; }
prediction95 { *yylval = PredictionInterval(); return FUNCTION; }
prediction { *yylval = SimplePredictionInterval(); return FUNCTION; }

View File

@@ -75,7 +75,7 @@ using namespace Poincare;
%nonassoc RIGHT_BRACKET
%nonassoc LEFT_BRACE
%nonassoc RIGHT_BRACE
%nonassoc FUNCTION LOGFUNCTION DIFF_FUNCTION
%nonassoc FUNCTION LOG_FUNCTION DIFF_FUNCTION
%left COMMA
%nonassoc UNDERSCORE
%nonassoc DIGITS
@@ -122,11 +122,11 @@ term : TERM { $$ = $1; }
| symb { $$ = $1; }
| FINAL_SYMBOL { $$ = $1; }
| number { $$ = $1; }
| LOGFUNCTION UNDERSCORE LEFT_BRACE exp RIGHT_BRACE LEFT_PARENTHESIS exp RIGHT_PARENTHESIS { $$ = Logarithm($7, $4); }
| FUNCTION LEFT_PARENTHESIS RIGHT_PARENTHESIS { if ($1.numberOfChildren() != 0) { YYERROR; } $$ = $1; }
| FUNCTION LEFT_PARENTHESIS lstData RIGHT_PARENTHESIS { $$ = $1; if ($$.numberOfChildren() != ($3.numberOfChildren())) { YYERROR; } ; $$.setChildrenInPlace($3); }
/* Special case for logarithm, as we do not at first if it needs 1 or 2 children */
| LOGFUNCTION LEFT_PARENTHESIS lstData RIGHT_PARENTHESIS { if ($3.numberOfChildren() == 1) { $$ = Logarithm($3.childAtIndex(0)); } else if ($3.numberOfChildren() == 2) { $$ = Logarithm($3.childAtIndex(0), $3.childAtIndex(1));} else { YYERROR; } ; }
| FUNCTION LEFT_PARENTHESIS RIGHT_PARENTHESIS { if ($1.numberOfChildren() != 0) { YYERROR; } $$ = $1; }
| LOG_FUNCTION LEFT_PARENTHESIS lstData RIGHT_PARENTHESIS { if ($3.numberOfChildren() == 1) { $$ = Logarithm($3.childAtIndex(0)); } else if ($3.numberOfChildren() == 2) { $$ = Logarithm($3.childAtIndex(0), $3.childAtIndex(1));} else { YYERROR; } ; }
| LOG_FUNCTION UNDERSCORE LEFT_BRACE exp RIGHT_BRACE LEFT_PARENTHESIS exp RIGHT_PARENTHESIS { $$ = Logarithm($7, $4); }
| DIFF_FUNCTION LEFT_PARENTHESIS lstData RIGHT_PARENTHESIS { if ($$.numberOfChildren() != ($3.numberOfChildren())) { YYERROR; } ; if ($3.childAtIndex(1).type() != ExpressionNode::Type::Symbol) { YYERROR; } ; $$ = $1; $$.setChildrenInPlace($3); }
| LEFT_PARENTHESIS exp RIGHT_PARENTHESIS { $$ = Parenthesis($2); }
/* MATRICES_ARE_DEFINED */