Как определить следующий возможный узел из грамматики, используя tokenStream?

Я создаю текстовую область, которая имеет intellisense, как и большинство IDE. Мой подход заключается в использовании алгоритма Парли Earley.

Я использую библиотеку early-parser-js.

Ниже приводится грамматика:

S -> NP VP
VP -> VP PP | V NP | V
PP -> P NP
NP -> Det N | N | Pn | Det A N | A NP
A -> Adv A | A A
Adv -> too | very | quite
Pn -> she | he
A -> fresh | tasty | silver
N -> fish | fork | apple
V -> eats 
Det -> a | an | the
P -> with

Теперь, если я напишу "она" в textarea, мой код должен предложить следующий возможный узел, такой как "ест", "рыба", "вилка" и т. Д.

1 ответ

Решение

Я получил это с помощью приведенного ниже кода

 var results = [];
        var lastColumn = this.chart.length -1 ;
        for(var j in this.chart[lastColumn])
        {
         if(!this.chart[lastColumn][j].expectedNonTerminal(grammar))
         {
        results.push(this.chart[lastColumn][j].rhs.toString());
         }
        }

        return results;
Другие вопросы по тегам