目录
欢迎进入乱码IT的精神世界,请多指教~
词法分析
-
词法分析是编译过程的一个阶段:从左到右逐个字符的读入源程序,并对源程序字符流进行扫描和分解,识别出一个个单词。(对源程序的结构进行分析)
-
PL/0编译程序将词法分析器作为子程序来调用,以语法分析器为主,语法分析器工作,需要词法分析器的输出作为输入,语法分析器需要分析时,发出请求调用词法分析器,词法分析器以二元式形式输出分析得到的单词符号,然后输入到语法分析器作为回应。(词法分析与语法分析在同一遍里,省掉了中间文件或储存区)
-
单词符号一般分类:
1.关键字(例:If、while)
2.标识符(例:常量名、变量名)
3.常数(例、25、3.14、TRUE、ABC)
4.运算符(例:+ - )
5.界符(例:逗号、括号) -
二元式表示单词符号:(单词种别,单词自身的值)<例:(3,‘while’),‘3’表示单词种别为‘关键字’,该单词种别的值为‘while’>
-
词法分析器其他任务: 滤掉空格和注释、将行号与错误信息关联编译定位、完成编译预处理等
-
词法规则描述工具(即单词描述工具,分为两类:形式化、半形式化):状态转换图、有穷自动机、正则表达式、正则文法等
正则文法与正则表达式的等价性
即两者之间的相互转换
转换规则如下:
例:
Z
有穷自动机FA
分两类:
- 不确定的有穷自动机NFA
- 确定的有穷自动机DFA
FA的表示(五元式):
(状态结点集,输入符号表,转换函数,初态集,终态集)
注:
- 转换函数反映的是‘状态结点+输入符号→下一状态结点’的一种映射关系&