diff options
author | Bad Diode <bd@badd10de.dev> | 2024-06-20 14:58:33 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2024-06-20 14:58:33 +0200 |
commit | 27930f546c4e7f216b6cb687bde26b68741b44f8 (patch) | |
tree | 6dba28dd443f7e256e4eed6c2c365cd8a786bee1 /src/parser.c | |
parent | d8bdb8be74904ee7b12d3f61dc3afe222aec82ff (diff) | |
download | bdl-27930f546c4e7f216b6cb687bde26b68741b44f8.tar.gz bdl-27930f546c4e7f216b6cb687bde26b68741b44f8.zip |
Make sure symbol chains continue as expected.
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/parser.c b/src/parser.c index a8b9c47..8732a25 100644 --- a/src/parser.c +++ b/src/parser.c | |||
@@ -961,6 +961,13 @@ parse_symbol(Parser *parser) { | |||
961 | array_push(node->arguments, array_pop(parser->nodes), | 961 | array_push(node->arguments, array_pop(parser->nodes), |
962 | parser->storage); | 962 | parser->storage); |
963 | } | 963 | } |
964 | if (parse_match(parser, TOK_DOT)) { | ||
965 | // Symbol chain. | ||
966 | parse_consume(parser, TOK_SYMBOL, | ||
967 | cstr("expected symbol after '.' operator")); | ||
968 | parse_symbol(parser); | ||
969 | node->next = array_pop(parser->nodes); | ||
970 | } | ||
964 | } else { | 971 | } else { |
965 | node = node_alloc(parser, NODE_SYMBOL, prev); | 972 | node = node_alloc(parser, NODE_SYMBOL, prev); |
966 | if (!node) return; | 973 | if (!node) return; |