如何使用tokenStream从语法中识别下一个可能的节点?

问题描述 投票:0回答:1

我正在创建一个像大多数IDE一样具有智能感知的textarea。我的方法是使用earley解析器算法。

我正在使用early-parser-js library

以下是语法:

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中写“她”,我的代码应该建议下一个可能的节点,如“吃”,“鱼”,“叉”等。

javascript jquery parsing context-free-grammar earley-parser
1个回答
0
投票

我使用下面的代码实现了这一点

 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;
© www.soinside.com 2019 - 2024. All rights reserved.