summaryrefslogtreecommitdiff
path: root/tokenizer.fun
diff options
context:
space:
mode:
authorVladimir Azarov <avm@intermediate-node.net>2025-06-23 01:00:49 +0200
committerVladimir Azarov <avm@intermediate-node.net>2025-06-23 01:00:49 +0200
commit403a326aea9a3931e433f581448578144ec5014f (patch)
tree1501adbf7627f4e78f90d0b51f0cf16bd47b50b5 /tokenizer.fun
parent9ccb3fce8e390f09fa5b812a77f7a65c10c5e4b1 (diff)
Unop type assignment
Diffstat (limited to 'tokenizer.fun')
-rw-r--r--tokenizer.fun14
1 files changed, 7 insertions, 7 deletions
diff --git a/tokenizer.fun b/tokenizer.fun
index 07bd08d..14f4289 100644
--- a/tokenizer.fun
+++ b/tokenizer.fun
@@ -14,7 +14,7 @@ struct
Id of int |
CharConst of int * Word64.word |
Num of int |
- Strlit of int |
+ Strlit of int * int |
kwBreak |
kwCase |
@@ -280,7 +280,7 @@ struct
| PpcInclude (dir, arg) =>
Printf out `"#include(" `dir `", " `arg `")" %
| CharConst (repr, _) => Printf out ?repr %
- | Strlit id => Printf out ?id %
+ | Strlit (id, _) => Printf out ?id %
| v =>
case List.find (fn (x, _) => x = v) tokenRepr of
SOME (_, repr) =>
@@ -606,21 +606,21 @@ struct
val startOff = S.getOffset stream - 1
val (pos, stream) = S.getPosRaw startOff stream
- fun collect stream =
+ fun collect size stream =
let
val (c, stream) = getMaybeBackslashed stream
in
case c of
Reg #"\000" => error pos "unfinished string literal"
- | Reg #"\"" => (S.getOffset stream, stream)
- | _ => collect stream
+ | Reg #"\"" => (S.getOffset stream, size, stream)
+ | _ => collect (size + 1) stream
end
- val (endOff, stream) = collect stream
+ val (endOff, size, stream) = collect 0 stream
val s = S.getSubstr startOff endOff stream
val id = ST.getId symtab s
in
- (Strlit id, pos, stream)
+ (Strlit (id, size), pos, stream)
end
fun parseId symtab _ stream =