1.2.1词法分析程序(扫描器) 词法分析程序的任务是: 3) 下一个单词的首字符: 识别出源程序的各个基本语法单位 4)正识别的单词中的一个字符: (单词或语法符号) 5)不合法的字符。 2)删除无用的空白字符及其它与输入介 扫描器输出以单词为单位的单词流 质相关的非实质性字符(空格、回车 等) 例如,以特殊符号“#”分隔的单词流: 3)删除注释 #PROGRAM#source#;#VAR# 4)进行词法检查,报告所发现的错误 x#,#y#,##integer ;a 扫描器依次查看缓冲区中源程序的各 #:integer#BEGIN#x#:=# 字符,根据当前正查看的字符之种类, 23#+#5#;#Z#=#X#DV#。 并参考扫描过程中已得到的信息,就 #3#;#y#:=#Z#+#18#*#3 能判断出该字符在源程序中所处地位。 #;#a#=#X#+#(#y#-#2#)) 般它是下述几种情况之一: #DV#4#;#END#.# 正处理的注释中的一个字符; 2) 无用字符: 1.2.1 词法分析程序(扫描器) 词法分析程序的任务是: 1)识别出源程序的各个基本语法单位 (单词或语法符号) 2)删除无用的空白字符及其它与输入介 质相关的非实质性字符(空格、回车 等) 3)删除注释 4)进行词法检查,报告所发现的错误 扫描器依次查看缓冲区中源程序的各 字符,根据当前正查看的字符之种类, 并参考扫描过程中已得到的信息,就 能判断出该字符在源程序中所处地位。 一般它是下述几种情况之一: 1)正处理的注释中的一个字符; 2)无用字符; 3)下一个单词的首字符; 4)正识别的单词中的一个字符; 5)不合法的字符。 扫描器输出以单词为单位的单词流 例如,以特殊符号“#”分隔的单词流: # PROGRAM # source # ; # VAR # x # , # y # , # z # : # integer # ; # a # : # integer # ; # BEGIN # x # := # 23 # + # 5 # ; # z # := # x # DIV # - # 3 # ; # y # := # z # + # 18 # * # 3 # ; # a # := # x # + # ( # y # - # 2 # ) # DIV # 4 # ; # END # . #