#P1256. 编译原理实验一:词法分析程序

编译原理实验一:词法分析程序

题目描述

  1. 编制一个源程序的输入过程,从键盘、文件或文本框输入若干行语句,依次存入输入缓冲区(字符型数据)。
  2. 编制一个扫描子程序,该扫描程序能删除无用的空白字符、回车字符以及其他与输入介质相关的非实质性字符,用“#”分隔单词流。
  3. 删除注释信息{}内的信息为注释信息。

从测试文件(test1source.txt)中读入所需的输入文本。

PROGRAM source; 
{this little source program is used to 
illustrate compiling procedure.} 
VAR x,y,z: integer; 
a: integer; 
BEGIN 
{this program has only four statements.} 
x∶=23+5; 
z∶=x DIV -3; 
y∶=z+18*3; 
a∶=x+(y-2) DIV 4; 
END. 

设计程序对此文本进行处理后,逐个识别每个单词,并用一个特定的标志符号“#”将相邻的两个单词加以分隔,程序中的非实质性符号已被全部删除。

# 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 # . # 

输入格式

多行初始语句,语句不超过100条,每条语句不超过100个字符。且所有语句语法跟样例类似

输出格式

输出结果

样例

PROGRAM source; 
{this little source program is used to 
illustrate compiling procedure.} 
VAR x,y,z: integer; 
a: integer; 
BEGIN 
{this program has only four statements.} 
x:=23+5; 
z:=x DIV -3; 
y:=z+18*3; 
a:=x+(y-2) DIV 4; 
END.
# 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 # . # 
PROGRAM Hints; 
{Please notice the following sentence.} 
c: integer; 
BEGIN 
c:=-5+c 
END.
# PROGRAM # Hints # ; # c # : # integer # ; # BEGIN # c # := # - # 5 # + # c # END # . #