编程语法的解析算法是什么?

时间:2012-10-21 06:09:57

标签: parsing grammar context-free-grammar regular-language context-sensitive-grammar

我想知道用于解析编程语法的解析算法是什么。任何链接,博客或任何我可以阅读有关编程语法和除IEEE研究论文以外的解析算法的内容?

1 个答案:

答案 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 ∈ Labr, p ∈ P的标签,是一种称为核心的无上下文生产   r的生成和σLab的子集,称为r的成功字段。   PG的元素称为G的规则。

     

由上面指定的编程语法L(G)生成的语言G   被定义为所有单词w ∈ T∗的集合,以便有一个派生   S = w0 =⇒r1 w1 =⇒r2 w2 =⇒r3 . . . =⇒rk wk = w,   其中k ≥ 11 ≤ 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(由于标记)类似,由于这些标记,编程语法的概念比无语境更严格。