summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-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 */
};