Ejemplo n.º 1
0
 private static void GetElementDependencies(ICustomAttributeProvider annotatedElement, IList <Sharpen.Tuple <RuleDependencyAttribute, ICustomAttributeProvider> > result)
 {
     foreach (RuleDependencyAttribute dependency in annotatedElement.GetCustomAttributes(typeof(RuleDependencyAttribute), true))
     {
         result.Add(Tuple.Create(dependency, annotatedElement));
     }
 }
Ejemplo n.º 2
0
 public override void EnterRecursionRule(ParserRuleContext localctx, int state, int ruleIndex, int precedence)
 {
     _parentContextStack.Push(Tuple.Create(RuleContext, localctx.invokingState));
     base.EnterRecursionRule(localctx, state, ruleIndex, precedence);
 }
Ejemplo n.º 3
0
        protected internal virtual void ReadStates(ATN atn)
        {
            //
            // STATES
            //
            IList <Sharpen.Tuple <LoopEndState, int> >    loopBackStateNumbers = new List <Sharpen.Tuple <LoopEndState, int> >();
            IList <Sharpen.Tuple <BlockStartState, int> > endStateNumbers      = new List <Sharpen.Tuple <BlockStartState, int> >();
            int nstates = ReadInt();

            for (int i_1 = 0; i_1 < nstates; i_1++)
            {
                StateType stype = (StateType)ReadInt();
                // ignore bad type of states
                if (stype == StateType.InvalidType)
                {
                    atn.AddState(null);
                    continue;
                }
                int ruleIndex = ReadInt();
                if (ruleIndex == char.MaxValue)
                {
                    ruleIndex = -1;
                }
                ATNState s = StateFactory(stype, ruleIndex);
                if (stype == StateType.LoopEnd)
                {
                    // special case
                    int loopBackStateNumber = ReadInt();
                    loopBackStateNumbers.Add(Tuple.Create((LoopEndState)s, loopBackStateNumber));
                }
                else
                {
                    if (s is BlockStartState)
                    {
                        int endStateNumber = ReadInt();
                        endStateNumbers.Add(Tuple.Create((BlockStartState)s, endStateNumber));
                    }
                }
                atn.AddState(s);
            }
            // delay the assignment of loop back and end states until we know all the state instances have been initialized
            foreach (Sharpen.Tuple <LoopEndState, int> pair in loopBackStateNumbers)
            {
                pair.Item1.loopBackState = atn.states[pair.Item2];
            }
            foreach (Sharpen.Tuple <BlockStartState, int> pair_1 in endStateNumbers)
            {
                pair_1.Item1.endState = (BlockEndState)atn.states[pair_1.Item2];
            }
            int numNonGreedyStates = ReadInt();

            for (int i_2 = 0; i_2 < numNonGreedyStates; i_2++)
            {
                int stateNumber = ReadInt();
                ((DecisionState)atn.states[stateNumber]).nonGreedy = true;
            }
            int numPrecedenceStates = ReadInt();

            for (int i_4 = 0; i_4 < numPrecedenceStates; i_4++)
            {
                int stateNumber = ReadInt();
                ((RuleStartState)atn.states[stateNumber]).isPrecedenceRule = true;
            }
        }