【发布时间】:2021-03-16 18:54:00
【问题描述】:
我正在寻找算法来帮助我预测给定字符串/前缀和上下文无关语法的下一个标记。
第一个问题是代表 CFG 的确切结构是什么。看起来它是一棵树,但是什么类型的树呢?我问是因为叶子总是有序的,是否有有序树? 可能如果我知道正确的结构,我可以找到自下而上 search 的算法!
如果它不完全是 搜索 问题,那么下一个最接近的事情就是 Parsing 前缀字符串,然后 Generating下一个令牌?我该怎么做?
任何想法
我当前生成的语法很简单,它没有 OR 规则(除非我决定将语法重用于新序列,否则我会这样做)。它由 Sequitur 算法生成,被称为 SLG(单行语法).. 但如果我使用许多 seq 生成它,则 TOP 规则将是 Ex:>
S : S1 z S3 | u S2 .. S5 S1 | S4 S2 .. |... | Sn
S1 : a b
S2 : h u y
...
..即头重脚轻的 SLG,除了 top 规则,其他所有规则都没有 OR |
作为旁注,我正在考虑将其转换为 Prolog 和/或 DCG 程序的方法,哪里可能有更简单的方法来轻松地做我想做的事?!你觉得呢?
【问题讨论】:
-
您需要多准确的预测?您只是想要一个可能的下一个令牌还是想要完整的集合?
-
我也不确定“代表 CFG 的确切结构是什么”是什么意思。 CFG 是一组无序的产生式,每个产生式都将一个非终结符映射到一个有序的可能为空的语法符号序列上。那不是很像树。例如,具有有序子级的树状结构显示为解析的表示。
-
我想要的可能是几个结果... 2-3
-
是的.. 作品是无序的,但每个作品的主体(如果不是 | )都是有序的.. 我忽略了 OR 案例 ..... 因为到目前为止,它们总是只有并且,除了 TOP 制作 ..sorry
标签: parsing search code-generation prediction context-free-grammar