validation
This commit is contained in:
parent
74549f3576
commit
246b68b0c2
1
char.go
1
char.go
@ -27,6 +27,7 @@ func (p *charParser) nodeName() string { return p.name }
|
|||||||
func (p *charParser) nodeID() int { return p.id }
|
func (p *charParser) nodeID() int { return p.id }
|
||||||
func (p *charParser) setID(id int) { p.id = id }
|
func (p *charParser) setID(id int) { p.id = id }
|
||||||
func (p *charParser) commitType() CommitType { return Alias }
|
func (p *charParser) commitType() CommitType { return Alias }
|
||||||
|
func (p *charParser) validate(*registry, *idSet) error { return nil }
|
||||||
func (p *charParser) normalize(*registry, *idSet) error { return nil }
|
func (p *charParser) normalize(*registry, *idSet) error { return nil }
|
||||||
|
|
||||||
func (p *charParser) init(r *registry) error { return nil }
|
func (p *charParser) init(r *registry) error { return nil }
|
||||||
|
10
choice.go
10
choice.go
@ -38,6 +38,16 @@ func (d *choiceDefinition) nodeID() int { return d.id }
|
|||||||
func (d *choiceDefinition) setID(id int) { d.id = id }
|
func (d *choiceDefinition) setID(id int) { d.id = id }
|
||||||
func (d *choiceDefinition) commitType() CommitType { return d.commit }
|
func (d *choiceDefinition) commitType() CommitType { return d.commit }
|
||||||
|
|
||||||
|
func (d *choiceDefinition) validate(r *registry, path *idSet) error {
|
||||||
|
for i := range d.elements {
|
||||||
|
if _, ok := r.definition(d.elements[i]); !ok {
|
||||||
|
return parserNotFound(d.elements[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *choiceDefinition) normalize(r *registry, path *idSet) error {
|
func (d *choiceDefinition) normalize(r *registry, path *idSet) error {
|
||||||
if path.has(d.id) {
|
if path.has(d.id) {
|
||||||
return nil
|
return nil
|
||||||
|
1
parse.go
1
parse.go
@ -7,6 +7,7 @@ type definition interface {
|
|||||||
nodeID() int
|
nodeID() int
|
||||||
commitType() CommitType
|
commitType() CommitType
|
||||||
setID(int)
|
setID(int)
|
||||||
|
validate(*registry, *idSet) error
|
||||||
normalize(*registry, *idSet) error
|
normalize(*registry, *idSet) error
|
||||||
init(*registry) error
|
init(*registry) error
|
||||||
setIncludedBy(*registry, int, *idSet) error
|
setIncludedBy(*registry, int, *idSet) error
|
||||||
|
14
sequence.go
14
sequence.go
@ -44,6 +44,16 @@ func (d *sequenceDefinition) nodeID() int { return d.id }
|
|||||||
func (d *sequenceDefinition) setID(id int) { d.id = id }
|
func (d *sequenceDefinition) setID(id int) { d.id = id }
|
||||||
func (d *sequenceDefinition) commitType() CommitType { return d.commit }
|
func (d *sequenceDefinition) commitType() CommitType { return d.commit }
|
||||||
|
|
||||||
|
func (d *sequenceDefinition) validate(r *registry, path *idSet) error {
|
||||||
|
for i := range d.items {
|
||||||
|
if _, ok := r.definition(d.items[i].Name); !ok {
|
||||||
|
return parserNotFound(d.items[i].Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *sequenceDefinition) normalize(r *registry, path *idSet) error {
|
func (d *sequenceDefinition) normalize(r *registry, path *idSet) error {
|
||||||
if path.has(d.id) {
|
if path.has(d.id) {
|
||||||
return nil
|
return nil
|
||||||
@ -51,12 +61,12 @@ func (d *sequenceDefinition) normalize(r *registry, path *idSet) error {
|
|||||||
|
|
||||||
path.set(d.id)
|
path.set(d.id)
|
||||||
for i := range d.items {
|
for i := range d.items {
|
||||||
element, ok := r.definition(d.items[i].Name)
|
item, ok := r.definition(d.items[i].Name)
|
||||||
if !ok {
|
if !ok {
|
||||||
return parserNotFound(d.items[i].Name)
|
return parserNotFound(d.items[i].Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
element.normalize(r, path)
|
item.normalize(r, path)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -144,6 +144,10 @@ func (s *Syntax) Init() error {
|
|||||||
return ErrRootAlias
|
return ErrRootAlias
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := s.root.validate(s.registry, &idSet{}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if err := s.root.normalize(s.registry, &idSet{}); err != nil {
|
if err := s.root.normalize(s.registry, &idSet{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user