您的位置:首页 > 其它

编译原理之文法一

2012-10-04 14:39 3627 查看
   
介绍文法之前,先介绍形式形式语言的一些基础知识。

形式语言基础知识
字母表:符号的非空有限集合称为字母表
符号串:由字母表中的符号组成的有限符号序列称为该字母表的符号串
符号长度:|a|,即a中出现的符号个数
前缀:符号串a末尾删除零个或多个符号后得到的符号串
后缀:符号串a开头删除零个或多个符号后得到的符号串
子串:符号串a删除前缀和后缀之后的符号串
子序列:符号串a删除0或多个符号(可以不连续)得到的符号串。
语言:某个确定的字母表上符号串的任何集合。
终结符:不可再分的元素,一般用小写字母代替
非终结符:可以再次拆分的元素,一般用大写字母代替
非形式化语言运算

语言L和M的合并,LUM={s|s∈L或 s∈M}
语言L和M的连接,LM={st|s∈L,t∈M}
语言L的Kleene闭包,L*=


语言L的正闭包,L+=

  
    第3条表示0个到无穷多个L元素的集合,第4条表示1个到无穷多个L元素的集合,例如

    L1 ={a,b,…y,z} M1 ={1,2…8,9 } (L1UM1)={a,b,… y,z,1,2…8,9 }

   (L1UM1)*={a,b,… y,z,1,2…8,9 ,aa,1a,…xyz,6789st..}

    L1(L1UM1)*={所有字母打头的字母和数字符号串}

    

    好了,文法的前续工作已经准备完毕,然后咱们再说说文法的用途,文法是一种形式化语言,知其作用:文法是通过生成方式描述语言的:语言中的每个句子可以用严格定义的规则来构造。

    我的理解是,每种语言都有自己的规则,比如说汉语,最常见的规则是:主语+谓语+宾语,每种编程语言也都有其自己的语法规则,文法就是对源代码中的单词串进行约束的一种规则。
文法

    文法是一个四元组:G={VT,VN,S,P}

    VT:非空有限符号集合,它的每个元素为终结符号,如abc

    VN:非空有限符号集合,它的每个元素为非终结符号,如ABED

    S:属于非终结符集合,是文法G的开始符号

    P:是一个非空有限集合,它的元素为称为产生式
文法约束

    VN和VT不含公共的元素,即VN ∩ VT = φ(大写和小写不会有交集)

    用V表示VN ∪ VT ,称为文法G的字母表。

    规则,也称产生式或生成式,是形如α→β,α称为规则的左部,β称作规则的右部,开始符S必须出现在某一个产生式的左部一次。

    下篇博客详细介绍四种文法类型:编译原理之文法二
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: