package grammar
type Root struct {
MagicNumber string `json:"magic_number"`
MajorVersion int `json:"major_version"`
MinorVersion int `json:"minor_version"`
Revision int `json:"revision"`
Instructions []Instruction `json:"instructions"`
OperandKinds []OperandKind `json:"operand_kinds"`
}
type Instruction struct {
Opname string `json:"opname"`
Class string `json:"class"`
Opcode int `json:"opcode"`
Operands []Operand `json:"operands"`
}
type Operand struct {
Kind string `json:"kind"`
Name string `json:"name"`
Quantifier Quantifier `json:"quantifier"`
}
type OperandKind struct {
Category string `json:"category"`
Kind string `json:"kind"`
Enumerants []Enumerant `json:"enumerants"`
Bases []string `json:"bases"`
}
type Enumerant struct {
Enumerant string `json:"enumerant"`
Value interface{} `json:"value"`
Capabilities []string `json:"capabilities"`
Parameters []Parameter `json:"parameters"`
Version string `json:"version"`
}
type Parameter struct {
Kind string `json:"kind"`
Name string `json:"name"`
}
type Quantifier string
const (
Once Quantifier = ""
ZeroOrOnce Quantifier = "?"
ZeroOrMany Quantifier = "*"
)