[Theory] Parsing Techniques 读书笔记(一):乔姆斯基谱系

1. Introduction

名词定义

文法推断(grammatical inference):给定一组句子,找出产生它们的语法结构。

内容总结

解析是根据给定的文法,结构化一段线性表示的过程。
其反向问题(文法推断 grammatical inference)也是人们所关心的,给定一组句子,找出产生它们的语法结构。

2. Grammars as a Generating Device

名词定义

字母表(alphabet):给定语言中,所有字符的集合
单词(word),句子(sentence):字符串
语言(language):字符串的集合
生成文法(generative grammar):由 4 部分组成,非终结符(集合),终结符(集合),推导规则(集合),开始符号。

选择(alternatives选择):文法中的“|”,表示选择。
下标 s(subscript s):有下标 s 的终结符,表示开始符号。
句型(sentential forms):文法生成最终字符串过程中的中间形式
产生式规则(production rules):文法中的推导规则

产生图(production graph),语法图(syntactic graph):描述字符串语法结构的有向图,顶点是非终结符或终结符,边表示一次推导(从非终结符指向终结符或非终结符)。

乔姆斯基谱系(Chomsky Hierarchy):将文法的刻画能力进行分类
(0)短语结构文法(phrase structure grammar)
(1)上下文相关文法(context-sensitive grammar),等价于,单调文法(monotonic grammar)
(2)上下文无关文法(context-free grammar)
(3)正则文法(regular grammar),或称,有限状态文法(finite-state grammar)
(4)有限选择文法(finite-choice grammar)

上下文相关文法(context-sensitive grammar):每条产生式,左边只有一个非终结符被替换为其他符号。
单调文法(monotonic grammar):每条产生式的左边不能比右边符号多。

上下文无关文法(context-free grammar):每条产生式,左边只能包含一个非终结符。
右递归非终结符(right-recursive non-terminal):它可以产生以自己为结尾的字符串。
左递归非终结符(left-recursive non-terminal):它可以产生以自己为开头的字符串。
自嵌入非终结符(self-embedding non-terminal):它可以生成以自己为中间部分的字符串。

正则文法((right-)regular grammar),有限状态文法(finite-state grammar):产生式右边至多包含一个非终结符,且必须以该终结符结尾。

有限选择文法(finite-choice grammar):产生式右边不能包含非终结符。

空串规则(ε-rules):可以生成空串的产生式规则。
ε-free:任何一个产生式都不产生空串。

最左推导(leftmost derivation):每次推导,将产生式最左边的非终结符替换成终结符
最右推导(rightmost derivation):每次推导,将产生式最右边的非终结符替换成终结符

收缩(shrink):在推导的过程中句型(sentential forms)变短。

原生符号(original symbol):符号的推导过程中,用到的不同的产生式的不同部分。
原生句子(original sentence):句子的推导过程中,用到了不同产生式的不同部分。

上下文无关语言的泵引理(pumping lemma for context-free languages):如果上下文相关文法生成的句子比原生句子(original sentence)更长,则这个句子总是可以拆分为 5 个部分,u, v, w,xy,且 u v^n w x^n y 仍然是符合该文法的句子(n ≥ 0)。

正则语言的泵引理(pumping lemma for regular languages):任何足够长的正则语言中的句子,可以被拆分为 3 个部分,u, vw,且 u v^n w 仍然是符合该文法的句子(n ≥ 0)。

属性文法(attribute grammars):每条产生式根据右边计算左边非终结符的属性。
语法转换(transduction grammars):每条产生式根据输入字符串,输出一个结果字符串。

内容总结

并不是所有的语言,都可以用文法来生成。
根据对角线法,我们总是可以找到(存在无穷多个)没有文法对应的语言。

短语结构文法(phrase structure grammar)的刻画能力是最强的,目前没有发现更强的刻画方式。
一个短语结构文法(phrase structure grammar)是否产生空语言(空字符串集),是不可判定的。

上下文相关文法,如果允许收缩(shrink),则等价于短语结构文法(无限制文法)。
包含 ε-rules 的单调文法,也等价于短语结构文法(无限制文法)。

上下文无关文法(context-free grammar)的语法图(production graph,syntactic graph)退化为了一棵语法树(production tree)。
任何上下文无关文法,都可以转换为 ε-free 的。

正则文法(regular grammar)的语法图,退化成了一条语法链(production chain)。

上下文无关文法,可能会包含几类无用(useless)产生式规则:包含未定义的非终结符,开始符号不可达到该产生式,不产生任何东西的产生式。
清理方法:
(1)自底向上从终结符开始,找到所有用得到的非终结符。
(2)自顶向下从开始符号开始,找到所有可达的产生式。

两个上下文无关语言的并集,仍然是上下文无关的。
但是,两个上下文无关语言的交集,却不一定是,至少是上下文相关的。
如果允许擦除符号(erase symbol),任何短语结构语言都可以由两个上下文无关语言交集得到。

上下文无关语言与正则语言的交集,仍然是上下文无关的。

正则语言的并集,交集,补集,仍然是正则语言。

有两种常见的语义分析技术:属性文法(attribute grammars),语法转换(transduction grammars)。

文法的能力指的是刻画能力。
威力更强的文法,可以刻画出更复杂的边界,用来断定哪些句子是否属于该语言。

所有词法正确的Java代码,可由正则文法生成。
所有语法正确的Java代码,可由上下文无关文法生成。
所有语义正确的Java代码,可由上下文相关文法生成。
所有总停机的Java代码,可由(无限制)短语结构文法生成。
所有Java代码,无法由任何文法生成。

乔姆斯基文法是一种采用有限的机制,生成无限句子集的方法。
上下文无关文法,其语法图是一棵树,因此某节点的语义总是可以由子节点归纳得出,这是它备受关注的原因之一。


参考

Parsing Techniques

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容

  • 欢迎Java工程师关注简书专栏Java架构技术进阶本专栏收录各种Java相关技术,面试题,以及学习感悟,心得! 一...
    Java高级架构狮阅读 1,295评论 0 1
  • 形式语言 1. 关于语言的定义 人类所特有的用来表达意思、交流思想的工具,是一种特殊的社会现象,由语音、词汇和语法...
    SHAN某人阅读 4,404评论 0 1
  • 知了在屋后林子里乱叫, 黄牛在李子树下的圈里磨牙。 门前挺拔的站着几棵古老楿树, 松鼠来回穿梭给它们挠痒, 一旁的...
    一一夕子阅读 278评论 0 0
  • 来小学支教二年,我深深地喜欢上了这里的孩子们,尤其喜欢孩子们那铜铃般的笑声,这是中学的孩子所没有的! 放学路上,欣...
    徍音_阅读 458评论 0 2