diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-11 01:47:28 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-11 01:51:01 +0200 |
commit | 69d5b76e1a56a0e2f537b06b133921b45f490371 (patch) | |
tree | 654943c07d2e1301d5b039025aa6476ce8b414c5 /src/lex.cpp | |
parent | 0f3c53fb630b810e3927e7184273d424ff8b165a (diff) | |
download | solar-69d5b76e1a56a0e2f537b06b133921b45f490371.tar solar-69d5b76e1a56a0e2f537b06b133921b45f490371.zip |
Add support for square-bracketed actions
Diffstat (limited to 'src/lex.cpp')
-rw-r--r-- | src/lex.cpp | 13 |
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); |