summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter <peter@pmikkelsen.com>2026-09-02 20:15:39 +0000
committerpeter <peter@pmikkelsen.com>2026-09-02 20:15:39 +0000
commit2c5efa29b3db7598a551487d727c35d2e2529342 (patch)
treee53cbe407c22b4b8ee8dd95a30b9ff480d360db3
parentfa85b6ad25cbf4d98d80082e44921fc351533204 (diff)
Support comments
FossilOrigin-Name: 6d017126fbc93e45a53af2857cce78133b4714cd1a41d7bc0114c1bbaae2ec07
-rw-r--r--src/lib/aplwc_internal.h3
-rw-r--r--src/lib/module.c1
-rw-r--r--src/lib/syntax.c18
3 files changed, 21 insertions, 1 deletions
diff --git a/src/lib/aplwc_internal.h b/src/lib/aplwc_internal.h
index 5c6f1dc..0a52bb1 100644
--- a/src/lib/aplwc_internal.h
+++ b/src/lib/aplwc_internal.h
@@ -77,7 +77,8 @@ enum token_tag {
TOKEN_TAG_RIGHT_PAREN,
TOKEN_TAG_IBEAM,
TOKEN_TAG_QUAD,
- TOKEN_TAG_UNKNOWN_SYM
+ TOKEN_TAG_UNKNOWN_SYM,
+ TOKEN_TAG_COMMENT
};
struct token {
diff --git a/src/lib/module.c b/src/lib/module.c
index d14b822..32b693c 100644
--- a/src/lib/module.c
+++ b/src/lib/module.c
@@ -45,6 +45,7 @@ static int
read_decl(struct aplwc_module *module, size_t offset)
{
switch(module->tokens->tokens[offset].tag){
+ case TOKEN_TAG_COMMENT:
case TOKEN_TAG_NEWLINE:
return 0;
case TOKEN_TAG_KEYWORD:
diff --git a/src/lib/syntax.c b/src/lib/syntax.c
index d20c058..6e08d1b 100644
--- a/src/lib/syntax.c
+++ b/src/lib/syntax.c
@@ -190,6 +190,23 @@ text(struct scan_state *state, struct token *token)
return 1;
}
+static int
+comment(struct scan_state *state, struct token *token)
+{
+ uint32_t c;
+
+ c = peek(state);
+ if(c != 0x235D)
+ return 0;
+
+ do
+ c = advance(state);
+ while(c != '\n');
+
+ token->tag = TOKEN_TAG_COMMENT;
+ return 1;
+}
+
static enum aplwc_rc
next_token(struct scan_state *state, struct token *token)
{
@@ -199,6 +216,7 @@ next_token(struct scan_state *state, struct token *token)
keyword,
number,
text,
+ comment,
single_sym /* Must be last */
};