编译原理课程设计词法分析器设计(java实现)
实验任务:完成下述文法所描述的单词符号的词法分析程序。<标识符>--><字母>|<标识符><字母>|<标识符><数字><无符号整数>--><数字>|<无符号整数><数字>...
实验任务:完成下述文法所描述的单词符号的词法分析程序。
<标识符>--><字母>|<标识符><字母>|<标识符><数字>
<无符号整数>--><数字>|<无符号整数><数字>
<分界符>-->+|-|*|/|;|(|)|{|}|<|<=|=|!=|>=|>|:=|<空格>
<字母>-->a|…|z|A|…|Z
<数字>-->0|…|9
<空格>-->’ ’
说明:
(1) 假定该语言对字母的大小写不敏感,由指定文件读入预分析的源程序,分析结果再写入指定文件;
(2) 假定语言的关键字为"begin","if","end","else","then","for","while","to","do","and","not","or","write";
程序的功能描述
从左至右扫描源程序的字符串,按照词法规则(正则文法规则)识别出一个个正确的单词,并转换成该单词相应的二元式(种别码、属性值)交给语法分析使用。
本程序规定输出用KeyWord代表关键字,Word代表普通标识符,Digit代表阿拉伯数字,SingleWord代表单分界符,DoubleWord代表双分界符,ERROR代表无法识别的字符。
例如读入下面一段程序:
if(i>1)
return 1;
else
return 0;
输出结果为:
KeyWord if
SingleWord (
Word i
SingleWord >
Digit 1
SingleWord )
Word return
Digit 1
SingleWord ;
KeyWord else
Word return
Digit 0
SingleWord ; 展开
<标识符>--><字母>|<标识符><字母>|<标识符><数字>
<无符号整数>--><数字>|<无符号整数><数字>
<分界符>-->+|-|*|/|;|(|)|{|}|<|<=|=|!=|>=|>|:=|<空格>
<字母>-->a|…|z|A|…|Z
<数字>-->0|…|9
<空格>-->’ ’
说明:
(1) 假定该语言对字母的大小写不敏感,由指定文件读入预分析的源程序,分析结果再写入指定文件;
(2) 假定语言的关键字为"begin","if","end","else","then","for","while","to","do","and","not","or","write";
程序的功能描述
从左至右扫描源程序的字符串,按照词法规则(正则文法规则)识别出一个个正确的单词,并转换成该单词相应的二元式(种别码、属性值)交给语法分析使用。
本程序规定输出用KeyWord代表关键字,Word代表普通标识符,Digit代表阿拉伯数字,SingleWord代表单分界符,DoubleWord代表双分界符,ERROR代表无法识别的字符。
例如读入下面一段程序:
if(i>1)
return 1;
else
return 0;
输出结果为:
KeyWord if
SingleWord (
Word i
SingleWord >
Digit 1
SingleWord )
Word return
Digit 1
SingleWord ;
KeyWord else
Word return
Digit 0
SingleWord ; 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询