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‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
11
*~
2+
gpython
3+
hello.py
4+
hello.pyc
5+
__pycache__

‎main.go‎

Lines changed: 63 additions & 0 deletions
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+
funcsyntaxError(){
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+
funcfatal(messagestring, 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+
funcmain(){
43+
flag.Usage=syntaxError
44+
flag.Parse()
45+
args:=flag.Args()
46+
iflen(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+
iferr!=nil{
54+
log.Fatal(err)
55+
}
56+
deferf.Close()
57+
obj, err:=marshal.ReadPyc(f)
58+
iferr!=nil{
59+
log.Fatal(err)
60+
}
61+
fmt.Println(obj)
62+
63+
}

0 commit comments

Comments
(0)