summaryrefslogtreecommitdiff
path: root/parser/parse.go
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2024-03-22 16:59:25 +0100
committerGitHub <noreply@github.com>2024-03-22 16:59:25 +0100
commit362f7c9c45598b429c92e67756f41b690043e0c4 (patch)
tree59dd897446880912b4a2ca4a3a8d8c49e3553211 /parser/parse.go
parentbf2d6438e95c60946c64a6692e3dae1d836364a6 (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.go6
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