fix: all keywords need to be generated

This commit is contained in:
Arpad Ryszka 2019-02-02 21:27:01 +01:00
parent 7b2eaa5c7a
commit a96580b2fd
2 changed files with 17 additions and 9 deletions

View File

@ -809,6 +809,7 @@ func parseInput(r io.Reader, p parser, b builder, kw []parser) (*Node, error) {
}
func Parse(r io.Reader) (*Node, error) {
var p196 = sequenceParser{id: 196, commit: 128, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}}
var p194 = choiceParser{id: 194, commit: 2}
var p193 = choiceParser{id: 193, commit: 262, name: "wsc", generalizations: []int{194}}

View File

@ -344,6 +344,15 @@ func (s *Syntax) Init() error {
return nil
}
func (s *Syntax) keywordParsers() []parser {
var p []parser
for _, kw := range s.keywords {
p = append(p, kw.parser())
}
return p
}
func (s *Syntax) Generate(o GeneratorOptions, w io.Writer) error {
if err := s.Init(); err != nil {
return err
@ -396,6 +405,13 @@ func (s *Syntax) Generate(o GeneratorOptions, w io.Writer) error {
fprintln()
done := make(map[string]bool)
for _, p := range s.keywordParsers() {
if err := p.(generator).generate(w, done); err != nil {
return err
}
}
fprintln()
if err := s.root.parser().(generator).generate(w, done); err != nil {
return err
}
@ -423,15 +439,6 @@ func (s *Syntax) Generate(o GeneratorOptions, w io.Writer) error {
return nil
}
func (s *Syntax) keywordParsers() []parser {
var p []parser
for _, kw := range s.keywords {
p = append(p, kw.parser())
}
return p
}
func (s *Syntax) Parse(r io.Reader) (*Node, error) {
if err := s.Init(); err != nil {
return nil, err