aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/ast/format.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-08-26 21:36:08 +0200
committerDmitry Vyukov <dvyukov@google.com>2017-08-27 11:51:40 +0200
commita3857c4e90fa4a3fbe78bd4b53cdc77aa91533cf (patch)
tree8bc28379a29112de7bc11c57f3d91d0baba84594 /pkg/ast/format.go
parent9ec49e082f811482ecdccc837c27961d68247d25 (diff)
pkg/compiler, sys/syz-sysgen: move const handling to pkg/compiler
Now pkg/compiler deals with consts.
Diffstat (limited to 'pkg/ast/format.go')
-rw-r--r--pkg/ast/format.go48
1 files changed, 25 insertions, 23 deletions
diff --git a/pkg/ast/format.go b/pkg/ast/format.go
index 0eb9aa957..e7e21dcdd 100644
--- a/pkg/ast/format.go
+++ b/pkg/ast/format.go
@@ -9,47 +9,47 @@ import (
"io"
)
-func Format(top []interface{}) []byte {
+func Format(desc *Description) []byte {
buf := new(bytes.Buffer)
- FormatWriter(buf, top)
+ FormatWriter(buf, desc)
return buf.Bytes()
}
-func FormatWriter(w io.Writer, top []interface{}) {
- for _, decl := range top {
- s, ok := decl.(serializer)
+func FormatWriter(w io.Writer, desc *Description) {
+ for _, n := range desc.Nodes {
+ s, ok := n.(serializer)
if !ok {
- panic(fmt.Sprintf("unknown top level decl: %#v", decl))
+ panic(fmt.Sprintf("unknown top level decl: %#v", n))
}
- s.Serialize(w)
+ s.serialize(w)
}
}
type serializer interface {
- Serialize(w io.Writer)
+ serialize(w io.Writer)
}
-func (incl *NewLine) Serialize(w io.Writer) {
+func (nl *NewLine) serialize(w io.Writer) {
fmt.Fprintf(w, "\n")
}
-func (com *Comment) Serialize(w io.Writer) {
+func (com *Comment) serialize(w io.Writer) {
fmt.Fprintf(w, "#%v\n", com.Text)
}
-func (incl *Include) Serialize(w io.Writer) {
+func (incl *Include) serialize(w io.Writer) {
fmt.Fprintf(w, "include <%v>\n", incl.File.Value)
}
-func (inc *Incdir) Serialize(w io.Writer) {
+func (inc *Incdir) serialize(w io.Writer) {
fmt.Fprintf(w, "incdir <%v>\n", inc.Dir.Value)
}
-func (def *Define) Serialize(w io.Writer) {
+func (def *Define) serialize(w io.Writer) {
fmt.Fprintf(w, "define %v\t%v\n", def.Name.Name, fmtInt(def.Value))
}
-func (res *Resource) Serialize(w io.Writer) {
+func (res *Resource) serialize(w io.Writer) {
fmt.Fprintf(w, "resource %v[%v]", res.Name.Name, res.Base.Name)
for i, v := range res.Values {
if i == 0 {
@@ -62,7 +62,7 @@ func (res *Resource) Serialize(w io.Writer) {
fmt.Fprintf(w, "\n")
}
-func (c *Call) Serialize(w io.Writer) {
+func (c *Call) serialize(w io.Writer) {
fmt.Fprintf(w, "%v(", c.Name.Name)
for i, a := range c.Args {
if i != 0 {
@@ -77,7 +77,7 @@ func (c *Call) Serialize(w io.Writer) {
fmt.Fprintf(w, "\n")
}
-func (str *Struct) Serialize(w io.Writer) {
+func (str *Struct) serialize(w io.Writer) {
opening, closing := '{', '}'
if str.IsUnion {
opening, closing = '[', ']'
@@ -119,7 +119,7 @@ func (str *Struct) Serialize(w io.Writer) {
fmt.Fprintf(w, "\n")
}
-func (flags *IntFlags) Serialize(w io.Writer) {
+func (flags *IntFlags) serialize(w io.Writer) {
fmt.Fprintf(w, "%v = ", flags.Name.Name)
for i, v := range flags.Values {
if i != 0 {
@@ -130,7 +130,7 @@ func (flags *IntFlags) Serialize(w io.Writer) {
fmt.Fprintf(w, "\n")
}
-func (flags *StrFlags) Serialize(w io.Writer) {
+func (flags *StrFlags) serialize(w io.Writer) {
fmt.Fprintf(w, "%v = ", flags.Name.Name)
for i, v := range flags.Values {
if i != 0 {
@@ -155,11 +155,13 @@ func fmtType(t *Type) string {
default:
v = fmtIntValue(t.Value, t.ValueHex)
}
- switch {
- case t.Ident2 != "":
- v += fmt.Sprintf(":%v", t.Ident2)
- case t.Value2 != 0:
- v += fmt.Sprintf(":%v", fmtIntValue(t.Value2, t.Value2Hex))
+ if t.HasColon {
+ switch {
+ case t.Ident2 != "":
+ v += fmt.Sprintf(":%v", t.Ident2)
+ default:
+ v += fmt.Sprintf(":%v", fmtIntValue(t.Value2, t.Value2Hex))
+ }
}
v += fmtTypeList(t.Args)
return v