diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-06-23 10:06:42 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-06-23 10:06:57 -0700 |
commit | 6a65f6f23385b98f3f79a9b0258a7f349a84d7eb (patch) | |
tree | 867f29ba4093b609a4e0531e97cb938b0649de34 /shell/tokenize.mu | |
parent | ba0c41673b7cb024544c5e1ec1638cf2fb1f3725 (diff) | |
download | mu-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.mu | 39 |
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 { |