diff options
| author | Mel <einebeere@gmail.com> | 2022-07-03 18:11:55 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-07-03 18:11:55 +0200 |
| commit | ed9a0c8f0f3c1eed3582d722935cd1df1d055afd (patch) | |
| tree | de68dd7510f03457693593d7dbd8636804f89ded /pkg/lang/parser/stmts.go | |
| parent | 4774f6373d3e41acba54cb4c63ca51f1b3de2ddd (diff) | |
| download | jinx-ed9a0c8f0f3c1eed3582d722935cd1df1d055afd.tar.zst jinx-ed9a0c8f0f3c1eed3582d722935cd1df1d055afd.zip | |
Compile If Stmts
Diffstat (limited to 'pkg/lang/parser/stmts.go')
| -rw-r--r-- | pkg/lang/parser/stmts.go | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/pkg/lang/parser/stmts.go b/pkg/lang/parser/stmts.go index 52e590c..4b1077e 100644 --- a/pkg/lang/parser/stmts.go +++ b/pkg/lang/parser/stmts.go @@ -151,7 +151,9 @@ func (p *Parser) parseIfStmt() (ast.Stmt, error) { return ast.Stmt{}, err } - cond, err := p.parseExpr() + conds := []ast.CondNode{} + + ifCond, err := p.parseExpr() if err != nil { return ast.Stmt{}, err } @@ -161,7 +163,11 @@ func (p *Parser) parseIfStmt() (ast.Stmt, error) { return ast.Stmt{}, err } - elifs := []ast.CondNode{} + conds = append(conds, ast.CondNode{ + At: ifTok.At, + Cond: ifCond, + Then: then, + }) for p.peek().Kind == token.KwElif { elifTok, err := p.expect(token.KwElif) @@ -179,35 +185,37 @@ func (p *Parser) parseIfStmt() (ast.Stmt, error) { return ast.Stmt{}, err } - elifs = append(elifs, ast.CondNode{ + conds = append(conds, ast.CondNode{ At: elifTok.At, Cond: elifCond, Then: elifThen, }) } - elseThen := ast.BlockNode{} if p.peek().Kind == token.KwElse { - _, err := p.expect(token.KwElse) + elseTok, err := p.expect(token.KwElse) if err != nil { return ast.Stmt{}, err } - elseThen, err = p.parseBlock() + elseThen, err := p.parseBlock() if err != nil { return ast.Stmt{}, err } + + conds = append(conds, ast.CondNode{ + At: elseTok.At, + Cond: ast.Expr{}, + Then: elseThen, + }) } return ast.Stmt{ At: ifTok.At, Kind: ast.StmtKindIf, Value: ast.StmtIf{ - Cond: cond, - Then: then, - Elifs: elifs, - Else: elseThen, + Conds: conds, }, }, nil } |
