Skip to content

Commit 1f52454

Browse files
committed
Main gpython binary - slightly working
1 parent 8ad5ca3 commit 1f52454

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
11
*~
2+
gpython
3+
hello.py
4+
hello.pyc
5+
__pycache__

main.go

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// Gpython binary
2+
3+
package main
4+
5+
import (
6+
"flag"
7+
"fmt"
8+
"os"
9+
//"github.com/ncw/gpython/vm"
10+
"github.com/ncw/gpython/marshal"
11+
"log"
12+
"strings"
13+
)
14+
15+
// Globals
16+
var (
17+
// Flags
18+
debug = flag.Bool("d", false, "Print lots of debugging")
19+
)
20+
21+
// syntaxError prints the syntax
22+
func syntaxError() {
23+
fmt.Fprintf(os.Stderr, `GPython
24+
25+
A python implementation in Go
26+
27+
Full options:
28+
`)
29+
flag.PrintDefaults()
30+
}
31+
32+
// Exit with the message
33+
func fatal(message string, args ...interface{}) {
34+
if !strings.HasSuffix(message, "\n") {
35+
message += "\n"
36+
}
37+
syntaxError()
38+
fmt.Fprintf(os.Stderr, message, args...)
39+
os.Exit(1)
40+
}
41+
42+
func main() {
43+
flag.Usage = syntaxError
44+
flag.Parse()
45+
args := flag.Args()
46+
if len(args) != 1 {
47+
fatal("Need program to run")
48+
}
49+
prog := args[0]
50+
fmt.Printf("Running %q\n", prog)
51+
52+
f, err := os.Open(prog)
53+
if err != nil {
54+
log.Fatal(err)
55+
}
56+
defer f.Close()
57+
obj, err := marshal.ReadPyc(f)
58+
if err != nil {
59+
log.Fatal(err)
60+
}
61+
fmt.Println(obj)
62+
63+
}

0 commit comments

Comments
 (0)