我想知道用于解析编程语法的解析算法是什么。任何链接,博客或任何我可以阅读有关编程语法和除IEEE研究论文以外的解析算法的内容?
答案 0 :(得分:0)
我认为它在 The power of programmed grammars with graphs from various classes 中得到了很好的解释:
无上下文语法指定为四元
G = (N, T, S, P)
,其中N
是一个有限的非空集,称为非终结字母,T
是一个有限的非空集,称为终端字母(N ∩ T = ∅), S ∈ N
是起始符号,P
是N × (N ∪ T)∗
的有限子集,称为规则集。规则也被命名 作为制作。编程语法(没有外观检查)是六元组
G = (N, T, S, Lab, P, PG)
,其中N , T and S
被指定为无上下文语法,Lab
是字母表(标签),P
是一组有限的无上下文规则 设定核心产品,PG是一组有限的三元组r = (q, p, σ)
,其中q ∈ Lab
是r, p ∈ P
的标签,是一种称为核心的无上下文生产r
的生成和σ
是Lab
的子集,称为r
的成功字段。PG
的元素称为G
的规则。由上面指定的编程语法
L(G)
生成的语言G
被定义为所有单词w ∈ T∗
的集合,以便有一个派生S = w0 =⇒r1 w1 =⇒r2 w2 =⇒r3 . . . =⇒rk wk = w,
其中k ≥ 1
和1 ≤ i ≤ k, wi−1 = wi−1 Ai wi−1
以及wi = wi−1 vi wi−1
对于某些单词wi−1 , wi−1 ∈ (N ∪ T)∗ , ri = (qi , Ai → vi , σi)
和i < k, qi+1 ∈ σi
。
请原谅缺乏LaTeX。
与Ogden's Lemma is stronger than the Pumping Lemma(由于标记)类似,由于这些标记,编程语法的概念比无语境更严格。