Fix parser edge-cases, fix wasm, refactor
This commit is contained in:
parent
c364e09fc9
commit
be7809d467
5 changed files with 38 additions and 25 deletions
|
|
@ -129,7 +129,9 @@ func (p *Parser) Parse(path string) (*Program, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
statements = append(statements, b)
|
||||
if b != nil {
|
||||
statements = append(statements, b)
|
||||
}
|
||||
}
|
||||
|
||||
return &Program{
|
||||
|
|
@ -774,16 +776,23 @@ func (p *Parser) statement() (Node, error) {
|
|||
|
||||
return &BreakpointNode{}, nil
|
||||
|
||||
case TokenImport:
|
||||
defer p.advance()
|
||||
return nil, p.error("import statements must be top-level", p.curr)
|
||||
|
||||
default:
|
||||
err := p.error("invalid statement", p.curr)
|
||||
p.advance()
|
||||
return nil, err
|
||||
defer p.advance()
|
||||
return nil, p.error("invalid statement", p.curr)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Parser) block(canBeStatement bool) (Node, error) {
|
||||
if canBeStatement {
|
||||
if !p.accept(TokenOpenBrace) {
|
||||
if p.curr.Type == TokenEOF {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return p.statement()
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue