[HN Gopher] Hyoka
___________________________________________________________________
Hyoka
Author : olamide203
Score : 6 points
Date : 2022-08-26 21:20 UTC (1 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| olamide203 wrote:
| I created a lightweight and precise math expression parser and
| evaluator for JavaScript and TypeScript. it can handle complex
| arithmetic expressions
| gus_massa wrote:
| Do you have an online demo, where I can write an expression in
| a text box and get the result?
|
| What are the security implications of this? Does the code run
| in the server or my computer? Does it only recognize math
| functions, or it can also run "alert"?
| olamide203 wrote:
| hyoka uses a full recursive descent parser to parse
| expressions into AST, then evaluates to get the final result.
| it is very secure for math expressions unlike the eval
| function which can run javascript code. you can try out a
| demo here https://codesandbox.io/s/naughty-chatterjee-kr3bsc
| fuzzythinker wrote:
| I would show examples in README on use of it along with
| string interpolation, as it's not too useful with only
| constants.
|
| Eg. const a = 3; const b = 2;
| const expression = new Expression(`${a}*${b}(6/3(5--2))`);
| const result = expression.evaluate();
| document.getElementById("app").innerHTML = `a*b( 6 / 3( 5 -
| - 2 ) )= ${result}`;
|
| Edit: formating
| olamide203 wrote:
| Nice tip, i'm planning to add an identifier node class so
| that you can pass a scope with the values to be used
| during evaluation. Eg. const a = 2;
| const b = 6; const c = 3 const expression =
| new Expression('a \ b * c') const result =
| expression.scope({a, b, c}).evaluate();
| document.getElementById("app").innerHTML `${a} \ ${b} *
| ${c}= ${result}`
| gus_massa wrote:
| [Add an empty line and then two spaces before each line
| to trigger the "code" mode.]
| gus_massa wrote:
| Nice!
|
| I was trying to change the expression, but I need to change
| it twice. At the top where `expression` is defined and at
| the bottom to show it in the html. Is it possible to "see"
| what is inside an Expression object?
| olamide203 wrote:
| you can log it to the console if you want to see the
| Abstract syntax tree of an Expression object
| olamide203 wrote:
| It can also be used in the browser as well as node.js or any
| other javascript runtime environment
___________________________________________________________________
(page generated 2022-08-26 23:00 UTC)