aboutsummaryrefslogtreecommitdiff
path: root/src/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/parser.c b/src/parser.c
index ac4dfa6..09ce7bc 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -79,6 +79,7 @@ tree_t* parser_parse_expr(parser_t* parser) {
expr->data.expr.val = parser_parse_block(parser);
break;
default:
+ expr->data.lstr.val = "???"; /* TODO: Add an "unknown" token type. */
return expr;
}
@@ -87,9 +88,9 @@ tree_t* parser_parse_expr(parser_t* parser) {
tree_t* parser_parse_block(parser_t* parser) {
if (
- !parser->token ||
- parser->token->type == TOKEN_EXPR_END ||
- parser->token->type == TOKEN_RBLOCK
+ ! parser->token ||
+ parser->token->type == TOKEN_EXPR_END ||
+ parser->token->type == TOKEN_RBLOCK
) { return NULL; }
tree_t* block;
@@ -97,10 +98,9 @@ tree_t* parser_parse_block(parser_t* parser) {
block = tree_init(TREE_TYPE_BLOCK);
block->data.block.val = parser_parse_expr(parser);
- block->data.block.nxt = parser_nxt_token_match(parser, TOKEN_EXPR_END) &&
- parser_nxt_token(parser) ?
- parser_parse_block(parser) :
- NULL;
+ block->data.block.nxt = parser_nxt_token(parser) ?
+ parser_parse_block(parser) :
+ NULL;
return block;
}
@@ -169,10 +169,10 @@ tree_t* parser_parse_carg(parser_t* parser) {
carg->data.carg.val = parser_parse_expr(parser);
carg->data.carg.nxt = (
parser_nxt_token_match(parser, TOKEN_LIST_DELIM) &&
- parser_nxt_token(parser) ?
- parser_parse_carg(parser) :
- NULL
- );
+ parser_nxt_token(parser)
+ ) ?
+ parser_parse_carg(parser) :
+ NULL;
return carg;
}
@@ -184,10 +184,8 @@ tree_t* parser_parse_call(parser_t* parser) {
call->data.call.target = parser->token->val;
parser->token->val = NULL;
- parser_nxt_token_match(parser, TOKEN_APPLY) ||
- (call->data.call.arg = NULL);
call->data.call.arg = (
- parser_nxt_token(parser) ?
+ parser_nxt_token_match(parser, TOKEN_APPLY) && parser_nxt_token(parser) ?
parser_parse_carg(parser) :
NULL
);