about summary refs log tree commit diff stats
path: root/shell/tokenize.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-06-23 10:06:42 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-06-23 10:06:57 -0700
commit6a65f6f23385b98f3f79a9b0258a7f349a84d7eb (patch)
tree867f29ba4093b609a4e0531e97cb938b0649de34 /shell/tokenize.mu
parentba0c41673b7cb024544c5e1ec1638cf2fb1f3725 (diff)
downloadmu-6a65f6f23385b98f3f79a9b0258a7f349a84d7eb.tar.gz
one more bug, and documentation for infix
One error message gets a bit worse.
Diffstat (limited to 'shell/tokenize.mu')
-rw-r--r--shell/tokenize.mu39
1 files changed, 16 insertions, 23 deletions
diff --git a/shell/tokenize.mu b/shell/tokenize.mu
index 2d7ea041..6ebf5e46 100644
--- a/shell/tokenize.mu
+++ b/shell/tokenize.mu
@@ -419,27 +419,6 @@ fn next-token in: (addr gap-buffer), out: (addr token), start-of-line?: boolean,
       next-stream-token in, out, trace
       break $next-token:case
     }
-    # special-case: '-'
-    {
-      compare g, 0x2d/minus
-      break-if-!=
-      var dummy/eax: grapheme <- read-from-gap-buffer in  # skip '-'
-      var g2/eax: grapheme <- peek-from-gap-buffer in
-      put-back-from-gap-buffer in
-      var digit?/eax: boolean <- decimal-digit? g2
-      compare digit?, 0/false
-      break-if-=
-      next-number-token in, out, trace
-      break $next-token:case
-    }
-    # digit
-    {
-      var digit?/eax: boolean <- decimal-digit? g
-      compare digit?, 0/false
-      break-if-=
-      next-number-token in, out, trace
-      break $next-token:case
-    }
     # other symbol char
     {
       var symbol?/eax: boolean <- symbol-grapheme? g
@@ -878,8 +857,22 @@ fn number-token? _self: (addr token) -> _/eax: boolean {
     break-if-!=
     g <- read-grapheme in-data
   }
-  var result/eax: boolean <- decimal-digit? g
-  return result
+  {
+    {
+      var result/eax: boolean <- decimal-digit? g
+      compare result, 0/false
+      break-if-!=
+      return 0/false
+    }
+    {
+      var done?/eax: boolean <- stream-empty? in-data
+      compare done?, 0/false
+    }
+    break-if-!=
+    g <- read-grapheme in-data
+    loop
+  }
+  return 1/true
 }
 
 fn bracket-token? _self: (addr token) -> _/eax: boolean {