编译原理之词法分析程序的设计与实现
一、程序要求(以python为例)。 1.词法分析程序( Lexical Analyzer )要求: - 从左至右扫描构成源程序的字符流 - 识别出有词法意义的单词( Lexemes ) - 返回单词记录(单词类别,单词本身) - 滤掉空格 - 跳过注释 - 发现词法错误 2.程序结构: 输入:字符流(什么输入方式,什么数据结构保存) 处理: –遍历(什么遍历方式) –词法规则 输出:单词流(什么输出形式) –二元组 3.单词类别: 1.标识符(10) 2.无符号数(11) 3.保留字(一词一码) 4.运算符(一词一码) 5.界符(一词一码) 单词符号 种别码 单词符号 种别码 begin 1 : 17 if 2 := 18 then 3 < 20 while 4 <= 21 do 5 <> 22 end 6 > 23 l(l|d)* 10 >= 24 dd* 11 = 25 + 13 ; 26 - 14 ( 27 * 15 ) 28 / 16 # 0 二、代码实现(以python为例)。 1.词法分析程序。 1 import re 2 3 strs = "if sum >= 1000 then x : x - 1;#"+" " 4 5 types = {'begin':1, 6 'if':2, 7 'then':3, 8 'while':4, 9 'do':5, 10