Class SymbolChecks


  • public class SymbolChecks
    extends Object
    Check for symbol problems; no side-effects. Inefficient to walk rules and such multiple times, but I like isolating all error checking outside of code that actually defines symbols etc... Side-effect: strip away redef'd rules.
    • Method Detail

      • process

        public void process()
      • checkActionRedefinitions

        public void checkActionRedefinitions​(List<GrammarAST> actions)
      • checkForTokenConflicts

        public void checkForTokenConflicts​(List<GrammarAST> tokenIDRefs)
      • checkForLabelConflicts

        public void checkForLabelConflicts​(Collection<Rule> rules)
        Make sure a label doesn't conflict with another symbol. Labels must not conflict with: rules, tokens, scope names, return values, parameters, and rule-scope dynamic attributes defined in surrounding rule. Also they must have same type for repeated defs.
      • checkForLabelConflict

        public void checkForLabelConflict​(Rule r,
                                          GrammarAST labelID)
      • checkForAttributeConflicts

        public void checkForAttributeConflicts​(Rule r)
      • checkReservedNames

        protected void checkReservedNames​(Collection<Rule> rules)
      • checkForModeConflicts

        public void checkForModeConflicts​(Grammar g)
      • checkForQualifiedRuleIssues

        public void checkForQualifiedRuleIssues​(Grammar g,
                                                List<GrammarAST> qualifiedRuleRefs)