Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- reject
- | newRules finish toRemove changed numOfElBefore numOfElAfter|
- newRules := rules copy.
- finish := Set new.
- changed := true.
- [changed] whileTrue: [
- changed := false.
- numOfElBefore := (newRules size).
- newRules copy do: [:rule |
- toRemove := true.
- (rule value) do: [:v |
- (nonterminals includes: v)
- ifTrue: [
- (finish includes: v)
- ifFalse: [
- toRemove := false.
- ]
- ]
- ].
- toRemove
- ifTrue: [
- (rule key) == start
- ifTrue: [
- ^false
- ].
- finish add: (rule key).
- newRules remove: rule.
- ]
- ].
- numOfElAfter := (newRules size).
- numOfElBefore == numOfElAfter
- ifFalse: [changed := true]
- ].
- ^ true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement