1 Star 0 Fork 0

jackytse / tabtoy

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
cmd.go 957 Bytes
一键复制 编辑 原始数据 按行查看 历史
黑色灵猫 提交于 2018-04-09 16:22 . 添加: 表达式计算
package exprvm
import (
"fmt"
"strings"
)
type Command struct {
Type Opcode
Operand []interface{}
}
func (self *Command) String() string {
var sb strings.Builder
sb.WriteString(self.Type.String())
if len(self.Operand) > 0 {
sb.WriteString(" ")
for index, operand := range self.Operand {
if index > 0 {
sb.WriteString(", ")
}
sb.WriteString(fmt.Sprintf("%v", operand))
}
}
return sb.String()
}
type Chunk struct {
Commands []Command
}
func (self *Chunk) String() string {
var sb strings.Builder
for _, cmd := range self.Commands {
sb.WriteString(fmt.Sprintf("%s\n", cmd.String()))
}
return sb.String()
}
func (self *Chunk) AddCode(t Opcode) {
self.Commands = append(self.Commands, Command{Type: t})
}
func (self *Chunk) AddCodeOperand(t Opcode, operand ...interface{}) {
self.Commands = append(self.Commands, Command{
Type: t,
Operand: operand,
})
}
func newChunk() *Chunk {
return &Chunk{}
}
Go
1
https://gitee.com/jackytse/tabtoy.git
git@gitee.com:jackytse/tabtoy.git
jackytse
tabtoy
tabtoy
v0.1.0

搜索帮助