From 34d675c30d578395ef7eb8e63a9cd300982af82f Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Sun, 4 Oct 2015 18:48:15 -0700 Subject: [PATCH] move main into cmd/gython folder --- main.go => cmd/gython/gython.go | 0 cmd/gython/main.go | 54 +++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) rename main.go => cmd/gython/gython.go (100%) create mode 100644 cmd/gython/main.go diff --git a/main.go b/cmd/gython/gython.go similarity index 100% rename from main.go rename to cmd/gython/gython.go diff --git a/cmd/gython/main.go b/cmd/gython/main.go new file mode 100644 index 0000000..e1b5689 --- /dev/null +++ b/cmd/gython/main.go @@ -0,0 +1,54 @@ +package main + +import ( + "fmt" + "os" + + "github.com/brettlangdon/gython/ast" + "github.com/brettlangdon/gython/compiler" + "github.com/brettlangdon/gython/grammar" + "github.com/brettlangdon/gython/scanner" + "github.com/brettlangdon/gython/token" +) + +func tokenize() { + tokenizer := scanner.NewScanner(os.Stdin) + for { + tok := tokenizer.NextToken() + tokenRange := fmt.Sprintf("%d,%d-%d,%d:", tok.LineStart, tok.ColumnStart, tok.LineEnd, tok.ColumnEnd) + literalRep := fmt.Sprintf("%#v", tok.Literal) + fmt.Printf("%-20s%-15s%-15s\n", tokenRange, tok.String(), literalRep) + if tok.ID == token.ENDMARKER || tok.ID == token.ERRORTOKEN { + break + } + } +} + +func parseGrammar() *grammar.FileInput { + tokenizer := scanner.NewScanner(os.Stdin) + gp := grammar.NewGrammarParser(tokenizer) + return gp.Parse() +} + +func parseAST() ast.Mod { + start := parseGrammar() + mod, err := ast.ASTFromGrammar(start) + if err != nil { + panic(err) + } + return mod +} + +func compile() { + root := parseAST() + codeobject := compiler.CompileAST(root) + fmt.Println(codeobject) +} + +func main() { + // start := parseGrammar() + // fmt.Println(start.Repr()) + // root := parseAST() + // fmt.Println(root) + compile() +}