summaryrefslogtreecommitdiffstats
path: root/src/lex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lex.cpp')
-rw-r--r--src/lex.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/lex.cpp b/src/lex.cpp
index 3058232..2d56fef 100644
--- a/src/lex.cpp
+++ b/src/lex.cpp
@@ -166,7 +166,7 @@ int lex_t::unterminated_block(parse_token_value_t *value) {
return -1;
}
-int lex_t::lex_block(parse_token_value_t *value) {
+int lex_t::lex_block(parse_token_value_t *value, int token, char open, char close) {
size_t parens = 0;
bool line_comment = false;
bool block_comment = false;
@@ -202,10 +202,10 @@ int lex_t::lex_block(parse_token_value_t *value) {
pp = false;
}
else {
- if (cur == '{') {
+ if (cur == open) {
parens++;
}
- else if (cur == '}') {
+ else if (cur == close) {
if (!parens)
break;
@@ -234,7 +234,7 @@ int lex_t::lex_block(parse_token_value_t *value) {
next(true);
consume(true);
- return TOK_BLOCK;
+ return token;
}
int lex_t::lex_symbol(parse_token_value_t *value) {
@@ -403,7 +403,10 @@ int lex_t::lex(parse_token_value_t *value) {
return TOK_CHAR;
case '{':
- return lex_block(value);
+ return lex_block(value, TOK_BLOCK, '{', '}');
+
+ case '[':
+ return lex_block(value, TOK_SQBLOCK, '[', ']');
case '"':
return lex_string(value);