Summary Files Commits Branches @commit @diff @stats
path: root / src / StringConsumer / StringConsumerEngine.cl
diff options
context:
space:
mode:
Commitbeccf376ecbcc3819cc0d102b3635b6e5f39fa9e (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-11-01 17:30:08 +0200
Committer
 Syndamia <kamen@syndamia.com>
2025-11-01 17:30:08 +0200
Files9f3f46c787aa1bb8f1d0663223cef97e95433268 /src/StringConsumer/StringConsumerEngine.cl
cool-self-hosted-beccf376ecbcc3819cc0d102b3635b6e5f39fa9e.tar
cool-self-hosted-beccf376ecbcc3819cc0d102b3635b6e5f39fa9e.tar.gz
cool-self-hosted-beccf376ecbcc3819cc0d102b3635b6e5f39fa9e.zip
Parent61f138b20a2a26a08155f414049acc0bb348ed31 (diff)
feat: Output token list
1 files changed, 6 insertions, 0 deletions
-rw-r--r--src/StringConsumer/StringConsumerEngine.cl6
diff --git a/src/StringConsumer/StringConsumerEngine.cl b/src/StringConsumer/StringConsumerEngine.cl
index 6fe4403..6f07d2e 100644
--- a/src/StringConsumer/StringConsumerEngine.cl
+++ b/src/StringConsumer/StringConsumerEngine.cl
@@ -4,6 +4,7 @@ class StringConsumerEngine inherits System {
;
str: String;
+ tl: TokenList <- new TokenList;
init(code: String) : Object {{
assert(not (code = ""), "init", "input code cannot be empty!");
@@ -23,6 +24,7 @@ class StringConsumerEngine inherits System {
case consumers.find(str) of
c: IStringConsumer => {
str <- str.substr(c.consumed_length(), str.length() - c.consumed_length());
+ tl.push(c.token());
true;
};
o: Object => false;
@@ -37,4 +39,8 @@ class StringConsumerEngine inherits System {
empty() : Bool {
str = ""
};
+
+ generated_tokens() : TokenList {
+ tl
+ };
};