internal Recogniser(Grammar grammar, ErrorHandler _errorHandler) { finalItemRule = new Rule("alpha", new List <Symbol>() { grammar.GetStartSymbol() }); errorHandler = _errorHandler; Grammar = grammar; }
internal List <TreeNode> Parse(List <EarleySet> recogniserSets) { Symbol startSymbol = _grammar.GetStartSymbol(); List <TreeNode> forest = new List <TreeNode>(); recogniserSets[recogniserSets.Count - 1].GetEarleyItemList().ForEach(item => { if (item.GetRule().GetLeftHandSideOfRule().Equals(startSymbol) && item.IsCompleted() && item.GetOrignPosition() == 0) { TreeNode root = new TreeNode(startSymbol, 0, recogniserSets.Count - 1); BuildTree(root, item); forest.Add(root); } }); return(forest); }