public SymParserWorkerConditionalExpression(SymParserWorkerContext aContext)
            : base(aContext)
        {
            SymNode node = new SymNodeConditionalExpression(aContext.CurrentToken);

            aContext.Document.CurrentNode.Add(node);

            // Make this child node the new parent
            aContext.Document.CurrentNode = node;
        }
        public SymParserWorkerCondition(SymParserWorkerContext aContext, SymNodeCondition aNodeCondition)
            : base(aContext, SymToken.TClass.EClassNewLine)
        {
            System.Diagnostics.Debug.Assert(aContext.Document.CurrentNode is SymNodeConditionalExpression);

            // Make a new child node for the conditions.
            iConditionNode = aNodeCondition;
            aContext.Document.CurrentNode.Add(iConditionNode);
            aContext.Document.CurrentNode = iConditionNode;

            // Set up the token balancer event handler
            iTokenBalancer.EventLevelFinished    += new SymBuildParsingLib.Token.SymTokenBalancer.LevelChangeEventHandler(TokenBalancer_EventLevelFinished);
            iTokenBalancer.EventLevelsImbalanced += new SymBuildParsingLib.Token.SymTokenBalancer.LevelsImbalancedEventHandler(TokenBalancer_EventLevelsImbalanced);

            // If we're handling an ifdef or ifndef expression, we can tell
            // the token balancer to discard all brackets, irrespective of their level.
            // For normal if statements, we want the brackets.
            bool emitLevelZeroBrackets = !(iConditionNode.Type == SymNodeCondition.TType.ETypeIfdef || iConditionNode.Type == SymNodeCondition.TType.ETypeIfndef);

            iTokenBalancer.RegisterBalancerTokens(emitLevelZeroBrackets);
        }
Beispiel #3
0
 public SymParserWorkerConsumer(SymParserWorkerContext aContext, SymToken.TClass aTerminatingClassType, TDyingAction aDyingAction)
     : base(aContext)
 {
     iTerminatingClassType = aTerminatingClassType;
     iDyingAction          = aDyingAction;
 }
Beispiel #4
0
 public SymParserWorkerConsumer(SymParserWorkerContext aContext, SymToken.TClass aTerminatingClassType)
     : this(aContext, aTerminatingClassType, TDyingAction.EWhenDyingTakeNoAction)
 {
 }
 public SymParserWorkerCondition(SymParserWorkerContext aContext)
     : this(aContext, new SymNodeCondition(aContext.CurrentToken.Value))
 {
 }
 public SymParserWorker(SymParserWorkerContext aContext, int aPriority)
 {
     iWorkerContext = aContext;
     iPriority      = aPriority;
 }
 public SymParserWorker(SymParserWorkerContext aContext)
     : this(aContext, 0)
 {
 }