瀏覽代碼

fix: use more robust regex to get underscores in JS

Sebastian Bensusan 4 年之前
父節點
當前提交
d4fd6acd28
共有 2 個文件被更改,包括 5 次插入4 次删除
  1. 2 2
      src/main/grammar/calc.bnf
  2. 3 2
      src/test/frontend/extensions/calc_test.cljc

+ 2 - 2
src/main/grammar/calc.bnf

@@ -20,6 +20,6 @@ asin = <#'\s*'> <'asin('> expr <')'> <#'\s*'>
 <term> = scientific | number | variable | <#'\s*'> <'('> expr <')'> <#'\s*'>
 <term> = scientific | number | variable | <#'\s*'> <'('> expr <')'> <#'\s*'>
 scientific = #'\s*[0-9]+\.?[0-9]*(e|E)-?[0-9]+()\s*'
 scientific = #'\s*[0-9]+\.?[0-9]*(e|E)-?[0-9]+()\s*'
 number = #'\s*[0-9]+\.?[0-9]*()\s*'
 number = #'\s*[0-9]+\.?[0-9]*()\s*'
-variable = #'\s*[[a-zA-Z]+\_*[a-zA-Z]*]*\s*'
-toassign = #'\s*[[a-zA-Z]+\_*[a-zA-Z]*]*\s*'
+variable = #'\s*[[a-zA-Z]+[\_*[a-zA-Z]*]*]*\s*'
+toassign = #'\s*[[a-zA-Z]+[\_*[a-zA-Z]*]*]*\s*'
 assignment = toassign <#'\s*'> <'='> <#'\s*'> expr
 assignment = toassign <#'\s*'> <'='> <#'\s*'> expr

+ 3 - 2
src/test/frontend/extensions/calc_test.cljc

@@ -80,8 +80,9 @@
     (are [final-env expr] (let [env (calc/new-env)]
     (are [final-env expr] (let [env (calc/new-env)]
                             (calc/eval env (calc/parse expr))
                             (calc/eval env (calc/parse expr))
                             (= final-env @env))
                             (= final-env @env))
-      {"a_a" 1}          "a_a = 1"
-      {"foo_bar_baz" 1}  "foo_bar_baz = 1 + 0 * 2"))
+      {"a_a" 1}         "a_a = 1"
+      {"x_yy_zzz" 1}    "x_yy_zzz= 1"
+      {"foo_bar_baz" 1} "foo_bar_baz = 1 + 0 * 2"))
   (testing "variables can be reused"
   (testing "variables can be reused"
     (are [final-env exprs] (let [env (calc/new-env)]
     (are [final-env exprs] (let [env (calc/new-env)]
                              (doseq [expr exprs]
                              (doseq [expr exprs]