Ejemplo n.º 1
0
    public LR_SyntaxTree ParseAll(SyntaxTreeBuilder pSyntaxTreeBuilder)
    {
        if (!pSyntaxTreeBuilder.TokenScanner.MoveNext())
        {
            return(null);
        }

        var kSyntaxTree = new LR_SyntaxTree();
        var rootId      = new ParseNode_Id(Rule_Start.NtName);

        m_dicIdName2RuleOrToken[Rule_Start.NtName] = Rule_Start;
        rootId.Init_PreCheckSet(this);
        Rule_Start.parent = rootId;
        pSyntaxTreeBuilder.SyntaxRule_Cur = kSyntaxTree.root = new SyntaxTreeNode_Rule(rootId);
        pSyntaxTreeBuilder.ParseNode_Cur  = Rule_Start.Parse(pSyntaxTreeBuilder);

        pSyntaxTreeBuilder.SyntaxRule_Err = pSyntaxTreeBuilder.SyntaxRule_Cur;
        pSyntaxTreeBuilder.ParseNode_Err  = pSyntaxTreeBuilder.ParseNode_Cur;

        while (pSyntaxTreeBuilder.ParseNode_Cur != null)
        {
            if (!ParseStep(pSyntaxTreeBuilder))
            {
                break;
            }
        }

        return(kSyntaxTree);
    }
Ejemplo n.º 2
0
 public void Init()
 {
     RootID = new ParseNode_Id(Rule_Start.NtName);
     m_dicIdName2RuleOrToken[Rule_Start.NtName] = Rule_Start;
     RootID.Init_PreCheckSet(this);
     Rule_Start.parent = RootID;
 }