Esempio n. 1
0
 internal Recogniser(Grammar grammar, ErrorHandler _errorHandler)
 {
     finalItemRule = new Rule("alpha", new List <Symbol>()
     {
         grammar.GetStartSymbol()
     });
     errorHandler = _errorHandler;
     Grammar      = grammar;
 }
Esempio n. 2
0
        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);
        }