合肥工业大学编译原理实验报告(完整代码版)
计算机与信息学院
编译原理
实验报告 专
业
班
级
信息安全 131 班
学生姓名及学号
马骏 20xx
课 程 教 学 班 号
任
课
教
师
李宏芒
实 验 指 导 教 师
李宏芒
实 验 地 点
实验楼机房
20xx
~20xx
学年第 二 学期 验 实验 1
词法分析设计 一、
实验目得
通过本实验得编程实践,使学生了解词法分析得任务,掌握词法分析程序设 计得原理与构造方法,使学生对编译得基本概念、原理与方法有完整得与清楚得 理解,并能正确地、熟练地运用 二、 实验要求
1、编程时注意编程风格:空行得使用、注释得使用、缩进得使用等。
2、将标识符填写得相应符号表须提供给编译程序得以后各阶段使用。
3、根据测试数据进行测试。测试实例应包括以下三个部分:
全部合法得输入。
各种组合得非法输入。
由记号组成得句子。
4、词法分析程序设计要求输出形式:
例:输入 VC++语言得实例程序:
If i=0 then
n++;
a﹤= 3b %);
输出形式为:
单词
二元序列
类
型
位置(行,列)
(单词种别,单词属性)
for
(1,for )
关键字
(1,1)
i
( 6,i )
标识符
(1,2)
=
( 4,= )
关系运算符
(1,3)
12
0
( 5,0 )
常数
(1,4)
then
( 1,then)
关键字
(1,5)
n
(6,n )
标识符
(1,6)
++
Error
Error
(1,7)
;
( 2, ; )
分界符
(1,8)
a
(6,a )
标识符
(2,1)
﹤=
(4, #include #include #include using namespace std; const char* salaryfile="salary"; const int max=40; string id={"do","end","for","if","printf","scanf","then","while"};// 关键字表 string s={",",";","(",")","","+","","*","/","",">=",""};// 分界符表 算数运算符表
关系运算符表 string k;// 标识符 string ci;// 常数 int fjfpoint=5;// 分界符表尾 int mathpoint=9;// 算数运算符表尾 int cipointer=0;// 常数表尾 int idpointer=0;// 关键字表尾 int kpointer=0;// 标识符表尾 int fjf;//0 不就是分界符 1 就是
int rowy=1;// 识别输入行位置 int rowx=1;// 识别输入列位置 int outkey=0;// 打印控制 0 为数字后有字母 其她可以 void searcht(int i,string m)// 根据已识别得首字母识别字符串 { // cout5&&x9&&x=48&&t64&&t96&&t64&&s96&&s=48&&s0&&s==46&&sign==1))// 判断数字后跟字母还就是字母后有数字
{
if(i==0)
{
if(s>=48&&s=48&&s0)
{
//
cout0&&(s>64&&s96&&s=48&&s0)
{
//
cout64&&s96&&s=48&&s64&&s96&&s=48&&s0)
{
sn=s 、substr(xi,i);
// cout=48&&t64&&t96&&t>noskipws;
if(!inputfile)
{
cout>ppword)// 按照空格分割字符串
{
split(ppword);
} /*
int begin = 0;// 去掉字符串得所有空格
begin = pp 、find(" ",begin);
// 查找空格在 str 中第一次出现得位置
while(begi
合肥工业大学编译原理实验报告(完整代码版) 来自淘豆网www.taodocs.com转载请标明出处.