diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-11-08 10:29:33 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-11-08 10:29:33 +0100 |
| commit | 5220ccb741c7f3688731d3b3df6e5e851f50f5c5 (patch) | |
| tree | fff450bfd4367a98062c5b7410b44f9357551a29 /parser/parse.go | |
| parent | bb783f8f31797597ca0349434e236e6df923e14b (diff) | |
parser: fix break in switch statements
Diffstat (limited to 'parser/parse.go')
| -rw-r--r-- | parser/parse.go | 31 |
1 files changed, 2 insertions, 29 deletions
diff --git a/parser/parse.go b/parser/parse.go index be8b31a..40cec5b 100644 --- a/parser/parse.go +++ b/parser/parse.go @@ -85,32 +85,6 @@ func (p *Parser) Parse(src string) (out Tokens, err error) { return out, err } return p.ParseStmts(in) - /* - log.Println("Parse in:", in) - for len(in) > 0 { - endstmt := in.Index(lang.Semicolon) - if endstmt == -1 { - return out, scanner.ErrBlock - } - // Skip over simple init statements for some tokens (if, for, ...) - if lang.HasInit[in[0].Id] { - for in[endstmt-1].Id != lang.BraceBlock { - e2 := in[endstmt+1:].Index(lang.Semicolon) - if e2 == -1 { - return out, scanner.ErrBlock - } - endstmt += 1 + e2 - } - } - o, err := p.ParseStmt(in[:endstmt]) - if err != nil { - return out, err - } - out = append(out, o...) - in = in[endstmt+1:] - } - return out, err - */ } func (p *Parser) ParseStmts(in Tokens) (out Tokens, err error) { @@ -387,12 +361,11 @@ func (p *Parser) ParseSwitch(in Tokens) (out Tokens, err error) { p.labelCount[p.scope]++ breakLabel := p.breakLabel p.pushScope(label) - p.breakLabel = p.scope + p.breakLabel = p.scope + "e" defer func() { p.breakLabel = breakLabel p.popScope() }() - log.Println("### ic:", initcond, "#init:", init, "#cond:", cond) if len(init) > 0 { if init, err = p.ParseStmt(init); err != nil { return nil, err @@ -427,7 +400,7 @@ func (p *Parser) ParseSwitch(in Tokens) (out Tokens, err error) { } out = append(out, co...) } - out = append(out, scanner.Token{Id: lang.Label, Str: p.scope + "e"}) + out = append(out, scanner.Token{Id: lang.Label, Str: p.breakLabel}) return out, err } |
