mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-29 19:49:58 +02:00
[poincare/parser] Store only in user-defined variables and functions
This commit is contained in:
@@ -106,7 +106,7 @@ Y3 { *yylval = Poincare::Symbol(yytext, yyleng); return FINAL_SYMBOL; }
|
||||
acos { *yylval = ArcCosine(); return FUNCTION; }
|
||||
acosh { *yylval = HyperbolicArcCosine(); return FUNCTION; }
|
||||
abs { *yylval = AbsoluteValue(); return FUNCTION; }
|
||||
ans { *yylval = Poincare::Symbol(yytext, yyleng); return SYMBOL; }
|
||||
ans { *yylval = Poincare::Symbol(yytext, yyleng); return FINAL_SYMBOL; }
|
||||
arg { *yylval = ComplexArgument(); return FUNCTION; }
|
||||
asin { *yylval = ArcSine(); return FUNCTION; }
|
||||
asinh { *yylval = HyperbolicArcSine(); return FUNCTION; }
|
||||
@@ -151,9 +151,9 @@ trace { *yylval = MatrixTrace(); return FUNCTION; }
|
||||
transpose { *yylval = MatrixTranspose(); return FUNCTION; }
|
||||
undef { *yylval = Undefined(); return TERM; }
|
||||
inf { *yylval = Infinity(false); return TERM; }
|
||||
\x8a { *yylval = Poincare::Symbol(yytext[0]); return SYMBOL; }
|
||||
\x8c { *yylval = Poincare::Symbol(yytext[0]); return SYMBOL; }
|
||||
\x8f { *yylval = Poincare::Symbol(yytext[0]); return SYMBOL; }
|
||||
\x8a { *yylval = Poincare::Symbol(yytext[0]); return FINAL_SYMBOL; } /* Pi */
|
||||
\x8c { *yylval = Poincare::Symbol(yytext[0]); return FINAL_SYMBOL; } /* I complex */
|
||||
\x8f { *yylval = Poincare::Symbol(yytext[0]); return FINAL_SYMBOL; } /* Exponential */
|
||||
\x90 { return STO; }
|
||||
\x91 { *yylval = SquareRoot(); return FUNCTION; }
|
||||
= { return EQUAL; }
|
||||
|
||||
@@ -115,14 +115,14 @@ number : DIGITS { $$ = $1; }
|
||||
;
|
||||
|
||||
symb : SYMBOL { $$ = $1; }
|
||||
| FINAL_SYMBOL { $$ = $1; }
|
||||
| SYMBOL LEFT_PARENTHESIS lstData RIGHT_PARENTHESIS { if ($3.numberOfChildren() != 1) { YYERROR; } ; $$ = Function(static_cast<Symbol&>($1).name(), $3.childAtIndex(0)); }
|
||||
;
|
||||
|
||||
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); }
|
||||
| SYMBOL LEFT_PARENTHESIS lstData RIGHT_PARENTHESIS { if ($3.numberOfChildren() != 1) { YYERROR; } ; $$ = Function(static_cast<Symbol&>($1).name(), $3.childAtIndex(0)); }
|
||||
| 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; } ; }
|
||||
|
||||
Reference in New Issue
Block a user