【编译原理】词法分析总结

文章目录

  • 概要
  • 流程
    • 1. 分析单词成分
    • 2. 写出各单词类型的正则表达式
    • 3. 根据正则表达式得出DFA
    • 4. 将DFA转化为程序

概要

  • 这里主要总结词法分析器的设计流程,而不是具体的词法分析的知识

流程

1. 分析单词成分

  • 第一步是分析被分析语言的单词成分。按照一般的编程语言来看,单词可分为保留字、运算符、界符、标识符、常量等部分

2. 写出各单词类型的正则表达式

  • 根据第一步得到的单词成分,要用正则表达式来描述。正则表达式是单词文法的静态描述,为后面的动态过程设计提供依据。
  • 要注意对单词成分进行包含性判断。因有些类型的单词不必采用正则表达式描述。如保留字是特殊的标识符,因为保留字数量有限,一般是识别出标识符后采用遍历匹配的方式来判断是否为保留字。

3. 根据正则表达式得出DFA

  • 在得出每个单词成分的正则表达式后,就要根据每个正则表达式来设计识别它们的有穷自动机。要注意的是这时的设计不考虑正则表达式以外的字母成分
  • 之后将各个DFA进行整合,得到完整的DFA,此时要想清楚每个终止状态的正确终止条件和错误终止条件。例如界符,空格等作为正确终止条件。此时要考虑正则表达式以外的字母成分。

4. 将DFA转化为程序

  • 每个单词以标识码和值构成token,需要一个列表来存储所有token
  • 一般利用switch来进行当前状态和下一个状态的判断,而之后再根据结果状态进行对应的处理

你可能感兴趣的:(编译原理,经验分享)