From 377e20b7b8ba4d5c38400fa4af355eebc2d68c83 Mon Sep 17 00:00:00 2001 From: Martin Atkins Date: Mon, 15 May 2017 08:34:35 -0700 Subject: [PATCH] json: AST node types --- zcl/json/ast.go | 105 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 zcl/json/ast.go diff --git a/zcl/json/ast.go b/zcl/json/ast.go new file mode 100644 index 0000000..88638ea --- /dev/null +++ b/zcl/json/ast.go @@ -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 +}