json: AST node types
This commit is contained in:
parent
838a0332e6
commit
377e20b7b8
105
zcl/json/ast.go
Normal file
105
zcl/json/ast.go
Normal file
@ -0,0 +1,105 @@
|
||||
package json
|
||||
|
||||
import (
|
||||
"math/big"
|
||||
|
||||
"github.com/apparentlymart/go-zcl/zcl"
|
||||
)
|
||||
|
||||
type node interface {
|
||||
Range() zcl.Range
|
||||
StartRange() zcl.Range
|
||||
}
|
||||
|
||||
type objectVal struct {
|
||||
Attrs map[string]*objectAttr
|
||||
SrcRange zcl.Range // range of the entire object, brace-to-brace
|
||||
OpenRange zcl.Range // range of the opening brace
|
||||
}
|
||||
|
||||
func (n *objectVal) Range() zcl.Range {
|
||||
return n.SrcRange
|
||||
}
|
||||
|
||||
func (n *objectVal) StartRange() zcl.Range {
|
||||
return n.OpenRange
|
||||
}
|
||||
|
||||
type objectAttr struct {
|
||||
Name string
|
||||
Value node
|
||||
NameRange zcl.Range // range of the name string
|
||||
}
|
||||
|
||||
func (n *objectAttr) Range() zcl.Range {
|
||||
return n.NameRange
|
||||
}
|
||||
|
||||
func (n *objectAttr) StartRange() zcl.Range {
|
||||
return n.NameRange
|
||||
}
|
||||
|
||||
type arrayVal struct {
|
||||
Values []node
|
||||
SrcRange zcl.Range // range of the entire object, bracket-to-bracket
|
||||
OpenRange zcl.Range // range of the opening bracket
|
||||
}
|
||||
|
||||
func (n *arrayVal) Range() zcl.Range {
|
||||
return n.SrcRange
|
||||
}
|
||||
|
||||
func (n *arrayVal) StartRange() zcl.Range {
|
||||
return n.OpenRange
|
||||
}
|
||||
|
||||
type booleanVal struct {
|
||||
Value bool
|
||||
SrcRange zcl.Range
|
||||
}
|
||||
|
||||
func (n *booleanVal) Range() zcl.Range {
|
||||
return n.SrcRange
|
||||
}
|
||||
|
||||
func (n *booleanVal) StartRange() zcl.Range {
|
||||
return n.SrcRange
|
||||
}
|
||||
|
||||
type numberVal struct {
|
||||
Value *big.Float
|
||||
SrcRange zcl.Range
|
||||
}
|
||||
|
||||
func (n *numberVal) Range() zcl.Range {
|
||||
return n.SrcRange
|
||||
}
|
||||
|
||||
func (n *numberVal) StartRange() zcl.Range {
|
||||
return n.SrcRange
|
||||
}
|
||||
|
||||
type stringVal struct {
|
||||
Value string
|
||||
SrcRange zcl.Range
|
||||
}
|
||||
|
||||
func (n *stringVal) Range() zcl.Range {
|
||||
return n.SrcRange
|
||||
}
|
||||
|
||||
func (n *stringVal) StartRange() zcl.Range {
|
||||
return n.SrcRange
|
||||
}
|
||||
|
||||
type nullVal struct {
|
||||
SrcRange zcl.Range
|
||||
}
|
||||
|
||||
func (n *nullVal) Range() zcl.Range {
|
||||
return n.SrcRange
|
||||
}
|
||||
|
||||
func (n *nullVal) StartRange() zcl.Range {
|
||||
return n.SrcRange
|
||||
}
|
Loading…
Reference in New Issue
Block a user