[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)