加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.go 745 Bytes
一键复制 编辑 原始数据 按行查看 历史
package main
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"os"
)
func main() {
if len(os.Args) != 2 {
fmt.Println("Usage: glox [InputFile]")
os.Exit(64)
}
bts, err := ioutil.ReadFile(os.Args[1])
if err != nil {
fmt.Printf("Failed to read file '%s'.\n", os.Args[1])
os.Exit(65)
}
Play(string(bts))
}
var Buf bytes.Buffer
var writer io.Writer
func init() {
Buf = bytes.Buffer{}
writer = io.MultiWriter(os.Stdout, &Buf)
}
func out(format string, a ...interface{}) {
_, _ = fmt.Fprintf(writer, format, a...)
}
// Play 可以编译成动态链接库作为插件开放给其他程序调用
func Play(code string) {
Buf.Reset()
tokens := _Lexer(code).lex()
stmts := _Parser(tokens).parse()
_Interpreter().interpret(stmts)
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化