]> git.kianting.info Git - clo/commitdiff
fix parsing bug
authorTan Kian-ting <chenjt30@gmail.com>
Sat, 30 Sep 2023 04:20:38 +0000 (12:20 +0800)
committerTan Kian-ting <chenjt30@gmail.com>
Sat, 30 Sep 2023 04:20:38 +0000 (12:20 +0800)
src/index.js
src/index.ts

index 23f1346ce00294099d48f116437815a9a1c1baf3..c424e5ba7a04834390c737890085beb366a128c9 100644 (file)
@@ -237,8 +237,14 @@ let circumfix = (f, signal) => (x) => {
         console.log("$$$" + repr(a.value.ast));
         let inner = a.value.ast[a.value.ast.length - 2];
         var ast_middle;
+        // the list should not be (%list) (%apply) (%lambda) etc.
         if (Array.isArray(inner)) {
-            ast_middle = inner;
+            if ('text' in inner[0] && (inner[0].text.slice(0, 1) != "%")) {
+                ast_middle = inner;
+            }
+            else {
+                ast_middle = [inner];
+            }
         }
         else {
             ast_middle = [inner];
@@ -379,7 +385,7 @@ let expr = orDo(expr1, expr2);
 let tokens = tk.tokenize("1");
 let tokens2 = tk.tokenize("1(2)");
 let tokens3 = tk.tokenize("1(2)(3)");
-let tokens4 = tk.tokenize("2()(4)");
+let tokens4 = tk.tokenize("2()(4)(5,6)(7,8,9,10)");
 //let tokens = tk.tokenize("(4-(3/4))");
 //tk.tokenize(argv[2]);
 let tokensFiltered = tokens4.filter((x) => {
index 3bf281fddc0d462beb6ab89500def42091181a13..46c4a7205501d288c574df83980d0e910e4bfd63 100644 (file)
@@ -250,13 +250,19 @@ let midfix = (f : Function, signal? : string) => (x : TokenMatcheePair)=>{
 }
 
 let circumfix = (f : Function, signal? : string) => (x : TokenMatcheePair)=>{
-    var a = f(x);
+    var a : tk.Maybe<TokenMatcheePair> = f(x);
     if (a._tag == "Some"){
         console.log("$$$"+repr(a.value.ast));
         let inner = a.value.ast[a.value.ast.length-2];
         var ast_middle : tkTree[];
+        // the list should not be (%list) (%apply) (%lambda) etc.
         if (Array.isArray(inner)){
-            ast_middle = inner;
+            if ('text' in inner[0]  && (inner[0].text.slice(0,1) != "%")){
+                ast_middle = inner;
+            }
+            else{
+                ast_middle = [inner];
+            }
         }
         else{
             ast_middle = [inner];
@@ -442,7 +448,7 @@ let expr = orDo(expr1, expr2);
 let tokens = tk.tokenize("1");
 let tokens2 = tk.tokenize("1(2)");
 let tokens3 = tk.tokenize("1(2)(3)");
-let tokens4 = tk.tokenize("2()(4)");
+let tokens4 = tk.tokenize("2()(4)(5,6)(7,8,9,10)");
 
 //let tokens = tk.tokenize("(4-(3/4))");
 //tk.tokenize(argv[2]);