trying to fix infinite loop
This commit is contained in:
9
parser.c
9
parser.c
@@ -16,6 +16,7 @@ static AstNodeIndex parseBlock(Parser* p);
|
|||||||
static AstNodeIndex parseLabeledStatement(Parser*);
|
static AstNodeIndex parseLabeledStatement(Parser*);
|
||||||
static AstNodeIndex parseExpr(Parser*);
|
static AstNodeIndex parseExpr(Parser*);
|
||||||
static AstNodeIndex expectExpr(Parser*);
|
static AstNodeIndex expectExpr(Parser*);
|
||||||
|
static AstNodeIndex expectSemicolon(Parser*);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
enum { FIELD_STATE_NONE, FIELD_STATE_SEEN, FIELD_STATE_END } tag;
|
enum { FIELD_STATE_NONE, FIELD_STATE_SEEN, FIELD_STATE_END } tag;
|
||||||
@@ -463,6 +464,10 @@ static AstTokenIndex expectToken(Parser* p, TokenizerTag tag) {
|
|||||||
return 0; // tcc
|
return 0; // tcc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static AstNodeIndex expectSemicolon(Parser *p) {
|
||||||
|
return expectToken(p, TOKEN_SEMICOLON);
|
||||||
|
}
|
||||||
|
|
||||||
static AstNodeIndex parseErrorUnionExpr(Parser* p) {
|
static AstNodeIndex parseErrorUnionExpr(Parser* p) {
|
||||||
const AstNodeIndex suffix_expr = parseSuffixExpr(p);
|
const AstNodeIndex suffix_expr = parseSuffixExpr(p);
|
||||||
if (suffix_expr == 0)
|
if (suffix_expr == 0)
|
||||||
@@ -983,7 +988,9 @@ static AstNodeIndex expectStatement(Parser* p, bool allow_defer_var) {
|
|||||||
if (allow_defer_var) {
|
if (allow_defer_var) {
|
||||||
return expectVarDeclExprStatement(p);
|
return expectVarDeclExprStatement(p);
|
||||||
} else {
|
} else {
|
||||||
return parseAssignExpr(p);
|
const AstNodeIndex assign_expr = parseAssignExpr(p);
|
||||||
|
expectSemicolon(p);
|
||||||
|
return assign_expr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user