diff options
| author | Marc Vertes <mvertes@free.fr> | 2024-03-22 16:59:25 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-22 16:59:25 +0100 |
| commit | 362f7c9c45598b429c92e67756f41b690043e0c4 (patch) | |
| tree | 59dd897446880912b4a2ca4a3a8d8c49e3553211 /parser/parse.go | |
| parent | bf2d6438e95c60946c64a6692e3dae1d836364a6 (diff) | |
feat: add initial support for import, provide minimal fmt (#6)
The `import` statement is now parsed. It only provides minimal
support for the `fmt` package (only `Println` symbol is defined).
This should be sufficient to pass a few tests.
Full support of package namespaces, source and binary imports will be
supported later, based on this work.
Diffstat (limited to 'parser/parse.go')
| -rw-r--r-- | parser/parse.go | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/parser/parse.go b/parser/parse.go index 95f9af3..ffcb8e2 100644 --- a/parser/parse.go +++ b/parser/parse.go @@ -67,10 +67,10 @@ func (p *Parser) ParseStmts(in Tokens) (out Tokens, err error) { } func (p *Parser) ParseStmt(in Tokens) (out Tokens, err error) { - log.Println("ParseStmt in:", in, len(in)) if len(in) == 0 { return nil, nil } + log.Println("ParseStmt in:", in) switch t := in[0]; t.Id { case lang.Break: return p.ParseBreak(in) @@ -82,12 +82,14 @@ func (p *Parser) ParseStmt(in Tokens) (out Tokens, err error) { return p.ParseFor(in) case lang.Func: return p.ParseFunc(in) - case lang.Defer, lang.Go, lang.Fallthrough, lang.Import, lang.Select: + case lang.Defer, lang.Go, lang.Fallthrough, lang.Select: return out, fmt.Errorf("not yet implemented: %v", t.Id) case lang.Goto: return p.ParseGoto(in) case lang.If: return p.ParseIf(in) + case lang.Import: + return p.ParseImport(in) case lang.Package: // TODO: support packages return out, err |
