Beispiel #1
0
        private static int CheckDependencyVersion(StringBuilder errors, Sharpen.Tuple <RuleDependencyAttribute, ICustomAttributeProvider> dependency, string[] ruleNames, int[] ruleVersions, int relatedRule, string relation)
        {
            string ruleName = ruleNames[dependency.Item1.Rule];
            string path;

            if (relation == null)
            {
                path = ruleName;
            }
            else
            {
                string mismatchedRuleName = ruleNames[relatedRule];
                path = string.Format("rule {0} ({1} of {2})", mismatchedRuleName, relation, ruleName);
            }
            int declaredVersion = dependency.Item1.Version;
            int actualVersion   = ruleVersions[relatedRule];

            if (actualVersion > declaredVersion)
            {
                string message = string.Format("Rule dependency version mismatch: {0} has version {1} (expected <= {2}) in {3}", path, actualVersion, declaredVersion, dependency.Item1.Recognizer.ToString());
                errors.AppendLine(dependency.Item2.ToString());
                errors.AppendLine(message);
            }
            return(actualVersion);
        }
Beispiel #2
0
        private static void ReportUnimplementedDependents(StringBuilder errors, Sharpen.Tuple <RuleDependencyAttribute, ICustomAttributeProvider> dependency, Dependents dependents)
        {
            Dependents unimplemented = dependents;

            unimplemented &= ~ImplementedDependents;
            if (unimplemented != Dependents.None)
            {
                string message = string.Format("Cannot validate the following dependents of rule {0}: {1}", dependency.Item1.Rule, unimplemented);
                errors.AppendLine(message);
            }
        }
Beispiel #3
0
 protected internal override Sharpen.Tuple <DFAState, ParserRuleContext> ComputeTargetState(DFA dfa, DFAState s, ParserRuleContext remainingGlobalContext, int t, bool useContext, PredictionContextCache contextCache)
 {
     Sharpen.Tuple <DFAState, ParserRuleContext> targetState = base.ComputeTargetState(dfa, s, remainingGlobalContext, t, useContext, contextCache);
     if (useContext)
     {
         decisions[currentDecision].LL_ATNTransitions++;
     }
     else
     {
         decisions[currentDecision].SLL_ATNTransitions++;
     }
     return(targetState);
 }