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); }
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; }