博客 > 硬件&操作系统&网络&DevOps > 编译原理
# 文法的定义 ![6b89b814580e58ed7c7bd91e388a0ad8.png](/resources/9a7224e97061439da8ad3c3bc01315fc) ![1ca36d7fa28ac4982e54df077f8035b5.png](/resources/09e2eaf16e0d4e1e9eb646b120b3dd60) ![a5798eb59f5320ba7dc95d199de1e96f.png](/resources/b5212f3ca5fe405290eca7f7233ea9f3) ![7478023729a75b8ffc7183c3af0124d5.png](/resources/8104475cd5d94206aab1aec5dc0b3b14) ![20e816730a8711d548cf846849de2303.png](/resources/06921cd20880444c97e671ef8e307779) # 文法的分类 ![2c3f57a3de9f05eb687164dc90ccf872.png](/resources/6688dfa4bf664457bc0650eea5714341) ## 0型文法 - 必须要有由非终结符开始的推导 ## 1型文法(上下文敏感文法,CSG) ![cc4e7b62a1745c8dec2b1844b6f28a0d.png](/resources/512eb0fcebf541b3ad5b5c93b44c7ec5) - 推导过程进行中,句型内符号个数只能扩展或不变,不能收缩 - 左部和右部都可以有前缀或后缀(当然也可以没有) - 右部不能是空产生式($\epsilon$) ## 2型文法(上下文自由文法,CFG) ![75f95945ec25b83fbdd09b4608b0a909.png](/resources/d961f92a95a54b86961dabe8333a4da9) - 左部只能是单个非终结符 - 右部可以是任意内容,包括空产生式 ## 3型文法(正则文法,RG) ![ced6fcc38fb95a70f7eabffa64476a2a.png](/resources/55c22655d28449c3be06e457df841e25)