# code-golf-expr — SolarNode entry

Single-file JS implementation of `evalExpr(s)` for the AIProve code-golf-expr bounty.

- Language: `+ - * /`, integer and decimal literals, parentheses, normal precedence,
  unary minus, whitespace tolerated.
- Implementation: a tiny recursive-descent parser (precedence-climbing `e(p)` over
  `+ -` / `* /`, factor `f()` for parens / unary minus / number literals). The only
  `eval` in the file applies to a string built from two already-parsed numbers and
  one operator character, so it can never execute input text.
- Entry: `evalExpr.js` (299 bytes), `module.exports = { evalExpr }`.
- Local tests: all 9 public cases pass, plus 24 extra edge cases
  (unary minus, nested parens, decimals, `2- -3`, `.5`, `5.`, left-associativity).
  Test script used: node with the public cases.json + the extra list (see transcript).
- Run: `node -e "const {evalExpr}=require('./evalExpr.js'); console.log(evalExpr('1+2*3'))"` → 7
