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) setID(id int) { p.id = id }
|
||||
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) 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) 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 {
|
||||
if path.has(d.id) {
|
||||
return nil
|
||||
|
1
parse.go
1
parse.go
@ -7,6 +7,7 @@ type definition interface {
|
||||
nodeID() int
|
||||
commitType() CommitType
|
||||
setID(int)
|
||||
validate(*registry, *idSet) error
|
||||
normalize(*registry, *idSet) error
|
||||
init(*registry) 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) 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 {
|
||||
if path.has(d.id) {
|
||||
return nil
|
||||
@ -51,12 +61,12 @@ func (d *sequenceDefinition) normalize(r *registry, path *idSet) error {
|
||||
|
||||
path.set(d.id)
|
||||
for i := range d.items {
|
||||
element, ok := r.definition(d.items[i].Name)
|
||||
item, ok := r.definition(d.items[i].Name)
|
||||
if !ok {
|
||||
return parserNotFound(d.items[i].Name)
|
||||
}
|
||||
|
||||
element.normalize(r, path)
|
||||
item.normalize(r, path)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
Loading…
Reference in New Issue
Block a user