Beispiel #1
0
        public virtual object VisitCaseLabel(CaseNode caseLabel, object data)
        {
            stackMap.Push(caseLabel);
            caseLabel.Ranges.AcceptVisitor(this, data);

            caseLabel.Statements.AcceptVisitor(this, data);

            stackMap.Pop();
            return(null);
        }
Beispiel #2
0
        private CaseNode ParseCase()
        {
            CaseNode node = new CaseNode(curtok);
            bool isDefault = (curtok.ID == TokenID.Default);
            Advance(); // advance over CASE or DEFAULT

            if (!isDefault)
            {
                node.Ranges.Add(ParseExpression());
            }
            else
            {
                node.IsDefaultCase = true;
            }
            AssertAndAdvance(TokenID.Colon);

            // may be multiple cases, but must be at least one
            while (curtok.ID == TokenID.Case || curtok.ID == TokenID.Default)
            {
                isDefault = (curtok.ID == TokenID.Default);
                Advance(); // advance over CASE or DEFAULT
                if (!isDefault)
                {
                    node.Ranges.Add(ParseExpression());
                }
                else
                {
                    node.IsDefaultCase = true;
                }
                AssertAndAdvance(TokenID.Colon);
            }

            do
            {
                node.Statements.Add(ParseStatement());
            }
            while (curtok.ID != TokenID.Eof && curtok.ID != TokenID.Case && curtok.ID != TokenID.Default && curtok.ID != TokenID.RCurly);

            return node;
        }
Beispiel #3
0
		private CaseNode ParseCase()										
		{
            CaseNode node = new CaseNode(curtok);
			bool isDefault = (curtok.ID == TokenID.Default);
			Advance(); // advance over CASE or DEFAULT

			if (!isDefault)
			{
				node.Ranges.Add(ParseExpression());
			}
			else
			{
				node.IsDefaultCase = true;
			}
			AssertAndAdvance(TokenID.Colon);

			// may be multiple cases, but must be at least one
			while (curtok.ID == TokenID.Case || curtok.ID == TokenID.Default)
			{
				isDefault = (curtok.ID == TokenID.Default);
				Advance(); // advance over CASE or DEFAULT
				if (!isDefault)
				{
					node.Ranges.Add(ParseExpression());
				}
				else
				{
					node.IsDefaultCase = true;
				}
				AssertAndAdvance(TokenID.Colon);
			}
			if (curtok.ID != TokenID.LCurly)
			{
				node.StatementBlock.HasBraces = false;
			}
			ParseBlock(node.StatementBlock, true);
			return node;
		}
        public virtual object VisitCaseLabel(CaseNode caseLabel, object data)
        {
            stackMap.Push(caseLabel);
            caseLabel.Ranges.AcceptVisitor(this, data);

             caseLabel.StatementBlock.AcceptVisitor(this, data);

             stackMap.Pop();
             return null;

        }