编译原理与技术(第二版)个人总结1

   编译的每个阶段都有可能检测出源程序中存在的错误,比如:词法分析程序检测非法字符,语法分析程序能够发现不合语法规则的错误(如括号不匹配,缺少运算符对象),语义分析程序针对的是语法正确但所涉及的运算毫无意义(比如运算对象的类型不匹配,变量没有声明,数组下标越界,除数为0)
   字母表指的是符号的非空有限集合
   假设字符串的长度为n
   符号串a的前缀指的是从符号串a的末尾删除0个或者多个符号之后得到的符号串(n+1)
   符号串a的后缀指的是从符号串a的开头删除0个或者多个符号之后得到的符号串(n+1)
   符号串a的子串指的是删除了符号串a的前缀或/和后缀后得到的符号串(n的累和+1)
   符号串a的子序列指的是删除了符号串a的0个或者多个符号之后后得到的符号串(2 的n次方)
   符号串ab(是将b连接在a之后得到的符号串)
   语言指的是在某个确定字母表上的符号串集合(空串也是语言)
   语言L的n次幂是其与自身(n-1)次的连接。
   语言与其0次以上的连接成为闭包。
   语言与其1次以上的连接成为正闭包。
   文法的定义G=(VT,VN,S,产生式的字母代替FAI(暂时没有找出这个符号的打出方法))书本21页有
   VT是终结符,VN是非终结符,S是文法开始符号
   两种重要的文法:
   上下文无关文和正规文法(书本22页)
   终结符推出符号串就是上下文无关文法
   A->a或者A->aB右线性文法
   A->a或者A->Ba左线性文法
   判断是什么线性就看右侧表达式非终结符的位置(在那边就是那个)
   推导过程中E代表表达式,F代表因子,T代表项
   子树与短语的定义在书本26页(太多,看了很多题目好像设计很少,而且语法分析表好像用的比较多)
   左递归的消除
   通俗点讲就是见到A->Aa1|Aa2|Aa3|......B这种样子的直接替换成
   A->BA撇
   A撇->a1A撇|a2A撇|a3A撇| ......空串
发布了26 篇原创文章 · 获赞 0 · 访问量 838

猜你喜欢

转载自blog.csdn.net/GodGump/article/details/103649686
今日推荐