예제 #1
0
        public override ail.net.parser.AstNode Start(object xi_item)
        {
            ail.net.parser.AstNode result = null;

            if (((ail.net.parser.EarleyParser.Item)xi_item).CoreItem.Rule.Id == (int)ail.net.test.SssGrammar.EGrammar.eSSS)
            {
                result       = new ail.net.test.SssAstNode((int)ail.net.test.SssAstNode.EType.eSSpS);
                result.Token = (ail.net.test.SssToken)((ail.net.parser.EarleyParser.Item)xi_item).MasterChart.Token.Clone();
            }
            else if (((ail.net.parser.EarleyParser.Item)xi_item).CoreItem.Rule.Id == (int)ail.net.test.SssGrammar.EGrammar.eSS)
            {
//??				result = new ail.net.test.SssAstNode((int)ail.net.test.SssAstNode.EType.eSS);
            }

            return(result);
        }
예제 #2
0
        public override ail.net.parser.AstNode HandleNonTerminalBefore(ail.net.parser.AstNode xi_node, object xi_item)
        {
            ail.net.parser.AstNode result = null;

            if (((ail.net.parser.EarleyParser.Item)xi_item).CoreItem.Rule.Id == (int)ail.net.test.SssGrammar.EGrammar.eSSS)
            {
                result = new ail.net.test.SssAstNode((int)ail.net.test.SssAstNode.EType.eSn);
                xi_node.AddNode(result);
            }
            else if (((ail.net.parser.EarleyParser.Item)xi_item).CoreItem.Rule.Id == (int)ail.net.test.SssGrammar.EGrammar.eSS)
            {
                result = xi_node;
            }
            else if (((ail.net.parser.EarleyParser.Item)xi_item).CoreItem.Rule.Id == (int)ail.net.test.SssGrammar.EGrammar.eSn)
            {
                result = new ail.net.test.SssAstNode((int)ail.net.test.SssAstNode.EType.eSn);
                xi_node.AddNode(result);
            }

            return(result);
        }