コード例 #1
0
ファイル: Builder.cs プロジェクト: five-x/siprevo
		private void BuildRuleExpressions(ParseTreeNode node)
		{
			var ruleName = node.FindTokenAndGetText();
			var rule = rules.ContainsKey(ruleName) ? rules[ruleName] : rules[ruleName] = new AlternationExpression();

			ParseTreeNode elements = null;
			foreach (var child in node.ChildNodes)
				if (child.Term.Name == "elements")
					elements = child;

			rule.Add(
				BuildAlternationExpression(elements.ChildNodes[0]));
		}
コード例 #2
0
ファイル: Builder.cs プロジェクト: mtm9999/siprevo
        private void BuildRuleExpressions(ParseTreeNode node)
        {
            var ruleName = node.FindTokenAndGetText();
            var rule     = rules.ContainsKey(ruleName) ? rules[ruleName] : rules[ruleName] = new AlternationExpression();

            ParseTreeNode elements = null;

            foreach (var child in node.ChildNodes)
            {
                if (child.Term.Name == "elements")
                {
                    elements = child;
                }
            }

            rule.Add(
                BuildAlternationExpression(elements.ChildNodes[0]));
        }
コード例 #3
0
ファイル: Builder.cs プロジェクト: five-x/siprevo
		private IExpression BuildAlternationExpression(ParseTreeNode node)
		{
			int count = node.ChildNodes.Count;

			if (count <= 0)
			{
				throw new BuilderException(node, @"Invalid alternation expression, no child nodes");
			}
			else if (count == 1)
			{
				return BuildSubtractionExpression(node.ChildNodes[0]);
			}
			else
			{
				var alternation = new AlternationExpression();

				foreach (var child in node.ChildNodes)
					alternation.Add(BuildSubtractionExpression(child));

				return alternation;
			}
		}
コード例 #4
0
ファイル: Builder.cs プロジェクト: mtm9999/siprevo
        private IExpression BuildAlternationExpression(ParseTreeNode node)
        {
            int count = node.ChildNodes.Count;

            if (count <= 0)
            {
                throw new BuilderException(node, @"Invalid alternation expression, no child nodes");
            }
            else if (count == 1)
            {
                return(BuildSubtractionExpression(node.ChildNodes[0]));
            }
            else
            {
                var alternation = new AlternationExpression();

                foreach (var child in node.ChildNodes)
                {
                    alternation.Add(BuildSubtractionExpression(child));
                }

                return(alternation);
            }
        }