simplify generated output

This commit is contained in:
Arpad Ryszka 2018-01-06 20:30:00 +01:00
parent 68ce88cc6f
commit eb8250c311
5 changed files with 701 additions and 654 deletions

View File

@ -89,21 +89,30 @@ func (p *charParser) generate(w io.Writer, done map[string]bool) error {
} }
fprintf("var p%d = charParser{", p.id) fprintf("var p%d = charParser{", p.id)
fprintf("id: %d, not: %t,", p.id, p.not) fprintf("id: %d,", p.id)
if p.not {
fprintf("not: true,")
}
if len(p.chars) > 0 {
fprintf("chars: []rune{") fprintf("chars: []rune{")
for i := range p.chars { for i := range p.chars {
fprintf("%d,", p.chars[i]) fprintf("%d,", p.chars[i])
} }
fprintf("},") fprintf("},")
}
if len(p.ranges) > 0 {
fprintf("ranges: [][]rune{") fprintf("ranges: [][]rune{")
for i := range p.ranges { for i := range p.ranges {
fprintf("{%d, %d},", p.ranges[i][0], p.ranges[i][1]) fprintf("{%d, %d},", p.ranges[i][0], p.ranges[i][1])
} }
fprintf("}};") fprintf("},")
}
fprintf("};")
return err return err
} }

View File

@ -157,17 +157,23 @@ func (p *choiceParser) generate(w io.Writer, done map[string]bool) error {
fprintf("var p%d = choiceParser{", p.id) fprintf("var p%d = choiceParser{", p.id)
fprintf("id: %d, commit: %d,", p.id, p.commit) fprintf("id: %d, commit: %d,", p.id, p.commit)
if p.commitType()&userDefined != 0 { if p.commitType()&userDefined != 0 {
fprintf("name: \"%s\",", p.name) fprintf("name: \"%s\",", p.name)
} }
if len(p.generalizations) > 0 {
fprintf("generalizations: []int{") fprintf("generalizations: []int{")
for i := range p.generalizations { for i := range p.generalizations {
fprintf("%d,", p.generalizations[i]) fprintf("%d,", p.generalizations[i])
} }
fprintf("}};") fprintf("},")
}
fprintf("};")
if len(p.options) > 0 {
for i := range p.options { for i := range p.options {
if err := p.options[i].(generator).generate(w, done); err != nil { if err := p.options[i].(generator).generate(w, done); err != nil {
return err return err
@ -180,6 +186,8 @@ func (p *choiceParser) generate(w io.Writer, done map[string]bool) error {
} }
fprintf("};") fprintf("};")
}
return err return err
} }
@ -201,12 +209,14 @@ func (b *choiceBuilder) generate(w io.Writer, done map[string]bool) error {
fprintf("var b%d = choiceBuilder{", b.id) fprintf("var b%d = choiceBuilder{", b.id)
fprintf("id: %d, commit: %d,", b.id, b.commit) fprintf("id: %d, commit: %d,", b.id, b.commit)
if b.commit&Alias == 0 { if b.commit&Alias == 0 {
fprintf("name: \"%s\",", b.name) fprintf("name: \"%s\",", b.name)
} }
fprintf("};") fprintf("};")
if len(b.options) > 0 {
for i := range b.options { for i := range b.options {
if err := b.options[i].(generator).generate(w, done); err != nil { if err := b.options[i].(generator).generate(w, done); err != nil {
return err return err
@ -219,5 +229,7 @@ func (b *choiceBuilder) generate(w io.Writer, done map[string]bool) error {
} }
fprintf("};") fprintf("};")
}
return err return err
} }

View File

@ -4,7 +4,7 @@ package treerack
// only to the source code generated with treerack. // only to the source code generated with treerack.
const gendoc = ` const gendoc = `
/* /*
This file was generated by treerack (https://github.com/aryszka/treerack). This file was generated with treerack (https://github.com/aryszka/treerack).
The contents of this file fall under different licenses. The contents of this file fall under different licenses.

File diff suppressed because it is too large Load Diff

View File

@ -296,25 +296,37 @@ func (p *sequenceParser) generate(w io.Writer, done map[string]bool) error {
} }
fprintf("var p%d = sequenceParser{", p.id) fprintf("var p%d = sequenceParser{", p.id)
fprintf("id: %d, commit: %d, allChars: %t,", p.id, p.commit, p.allChars) fprintf("id: %d, commit: %d,", p.id, p.commit)
if p.commit&userDefined != 0 { if p.commit&userDefined != 0 {
fprintf("name: \"%s\",", p.name) fprintf("name: \"%s\",", p.name)
} }
if p.allChars {
fprintf("allChars: true,")
}
if len(p.ranges) > 0 {
fprintf("ranges: [][]int{") fprintf("ranges: [][]int{")
for i := range p.ranges { for i := range p.ranges {
fprintf("{%d, %d},", p.ranges[i][0], p.ranges[i][1]) fprintf("{%d, %d},", p.ranges[i][0], p.ranges[i][1])
} }
fprintf("},") fprintf("},")
}
if len(p.generalizations) > 0 {
fprintf("generalizations: []int{") fprintf("generalizations: []int{")
for i := range p.generalizations { for i := range p.generalizations {
fprintf("%d,", p.generalizations[i]) fprintf("%d,", p.generalizations[i])
} }
fprintf("}};") fprintf("},")
}
fprintf("};")
if len(p.items) > 0 {
for i := range p.items { for i := range p.items {
if err := p.items[i].(generator).generate(w, done); err != nil { if err := p.items[i].(generator).generate(w, done); err != nil {
return err return err
@ -327,6 +339,8 @@ func (p *sequenceParser) generate(w io.Writer, done map[string]bool) error {
} }
fprintf("};") fprintf("};")
}
return err return err
} }
@ -347,18 +361,28 @@ func (b *sequenceBuilder) generate(w io.Writer, done map[string]bool) error {
} }
fprintf("var b%d = sequenceBuilder{", b.id) fprintf("var b%d = sequenceBuilder{", b.id)
fprintf("id: %d, commit: %d, allChars: %t,", b.id, b.commit, b.allChars) fprintf("id: %d, commit: %d,", b.id, b.commit)
if b.commit&Alias == 0 { if b.commit&Alias == 0 {
fprintf("name: \"%s\",", b.name) fprintf("name: \"%s\",", b.name)
} }
if b.allChars {
fprintf("allChars: true,")
}
if len(b.ranges) > 0 {
fprintf("ranges: [][]int{") fprintf("ranges: [][]int{")
for i := range b.ranges { for i := range b.ranges {
fprintf("{%d, %d},", b.ranges[i][0], b.ranges[i][1]) fprintf("{%d, %d},", b.ranges[i][0], b.ranges[i][1])
} }
fprintf("}};") fprintf("},")
}
fprintf("};")
if len(b.items) > 0 {
for i := range b.items { for i := range b.items {
if err := b.items[i].(generator).generate(w, done); err != nil { if err := b.items[i].(generator).generate(w, done); err != nil {
return err return err
@ -371,5 +395,7 @@ func (b *sequenceBuilder) generate(w io.Writer, done map[string]bool) error {
} }
fprintf("};") fprintf("};")
}
return err return err
} }