大连理工大学 软件学院 编译技术 上机代码
大连理工大学 软件学院 编译技术 上机代码
六次上机全
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-04-20 15:23 第一次上机
文件 3219 2017-04-06 20:01 第一次上机 est.cpp
文件 67953 2017-04-06 20:01 第一次上机 est.exe
文件 358782 2017-03-26 14:51 第一次上机第一次上机作业-lex实验.zip
目录 0 2017-04-20 18:28 第一次上机第一次上机作业-lex实验
目录 0 2004-08-30 17:21 第一次上机第一次上机作业-lex实验lex_实验
文件 1374 2015-04-01 18:47 第一次上机第一次上机作业-lex实验lex_实验flex 说明.txt
目录 0 2017-04-06 20:46 第一次上机第一次上机作业-lex实验lex_实验flex
文件 190 2004-08-30 16:08 第一次上机第一次上机作业-lex实验lex_实验flexexample.l
文件 207 2004-08-30 15:31 第一次上机第一次上机作业-lex实验lex_实验flexexample.l.bak
文件 167936 1998-04-07 21:12 第一次上机第一次上机作业-lex实验lex_实验flexflex.exe
文件 8628 2004-08-30 16:45 第一次上机第一次上机作业-lex实验lex_实验flexflex.GID
文件 79089 1998-01-04 13:01 第一次上机第一次上机作业-lex实验lex_实验flexflex.hlp
文件 36490 2017-04-06 20:46 第一次上机第一次上机作业-lex实验lex_实验flexlex.yy.c
文件 1108 1998-04-07 21:12 第一次上机第一次上机作业-lex实验lex_实验flexlibfl.lib
目录 0 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yy
目录 0 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yy.vs
目录 0 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yy.vslex.yy
目录 0 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yy.vslex.yyv14
文件 20480 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yy.vslex.yyv14.suo
目录 0 2017-04-20 15:50 第一次上机第一次上机作业-lex实验lex_实验lex_yyBackup
目录 0 2017-04-20 15:50 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebug
文件 51 2004-08-28 11:50 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebug12.txt
文件 163897 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebuglex.yy.exe
文件 175892 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebuglex.yy.ilk
文件 25472 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebuglex.yy.obj
目录 0 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebuglex.yy.tlog
文件 33792 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebugvc60.idb
文件 53248 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebugvc60.pdb
文件 36489 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yylex.yy.c
文件 3437 2004-08-28 11:51 第一次上机第一次上机作业-lex实验lex_实验lex_yylex.yy.dsp
............此处省略184个文件信息
#include
#include
#include
using namespace std;
char Input[100];
char token[20];//连续的词法单元
int mark=-1; //词法记号
char *Keytoken[6] = { “for““if““then““else““while““do“ };//关键字数组,用于判断
char ch;
int p = 0 n sum;
int m;//m为token下标
void Scanner()
{
sum = 0;
for (m = 0; m<20; m++)
token[m++] = NULL;
m = 0;
ch = Input[p++];
while ((ch == ‘ ‘) || (ch == ‘
‘))//跳过空格和换行
{
ch = Input[p++];
}
if (((ch <= ‘z‘) && (ch >= ‘a‘)) || ((ch <= ‘Z‘) && (ch >= ‘A‘)))
{
while (((ch <= ‘z‘) && (ch >= ‘a‘)) || ((ch >= ‘A‘) && (ch <= ‘Z‘)) || ((ch >= ‘0‘) && (ch <= ‘9‘)))
{
if (ch == ‘ ‘)
break;
token[m++] = ch;//将连续读入的字母存到token中
ch = Input[p++];
}
p--;
mark = 10;
for (n = 0; n<6; n++)
{
if (strcmp(token Keytoken[n]) == 0)//判断token存的字符串是否是关键字
{
mark = n + 1;
break;
}
}
}
else if ((ch >= ‘0‘) && (ch <= ‘9‘))
{
while ((ch >= ‘0‘) && (ch <= ‘9‘))//判断是否是数字
{
sum = sum * 10 + ch - ‘0‘;
ch = Input[p++];
}
p--;
mark = 11;
}
else switch (ch)//其他字符用switch判断之
{
case ‘<‘:
token[m++] = ch;
ch = Input[p++];
if (ch == ‘=‘)
{
mark = 22;
token[m++] = ch;
}
else if (ch == ‘>‘)
{
mark = 21;
token[m++] = ch;
}
else
{
mark = 20;
p--;
}
break;
case ‘>‘:
token[m++] = ch;
ch = Input[p++];
if (ch == ‘=‘)
{
mark = 24;
token[m++] = ch;
}
else
{
mark = 23;
p--;
}
break;
case ‘+‘:
token[m++] = ch;
ch = Input[p++];
if (ch == ‘+‘)
{
mark = 17;
token[m++] = ch;
}
else
{
mark = 13;
p--;
}
break;
case ‘-‘:
token[m++] = ch;
ch = Input[p++];
if (ch == ‘-‘)
{
mark = 29;
token[m++] = ch;
}
else
{
mark = 14;
p--;
}
break;
case ‘=‘:
mark = 25;
token[m++] = ch;
break;
case ‘*‘:
mark = 15;
token[m++] = ch;
break;
case ‘/‘:
mark = 16;
token[m++] = ch;
break;
case ‘(‘:
mark = 27;
token[m++] = ch;
break;
case ‘)‘:
mark = 28;
token[m++] = ch;
break;
case ‘;‘:
mark = 26;
token[m++] = ch;
break;
case ‘“‘:
mark = 30;
token[m++] = ch;
case‘:‘:
token[m++] = ch;
ch = Input[p++];
if (ch == ‘=‘)
{
mark = 18;
token[m++] = ch;
}
else
{
mark = 17;
p--;
}
break;
case ‘#‘:
mark = 0;
token[m++] = ch;
break;
case ‘ ‘:
mark = -2;
break;
default:
mark = -1;
break;
}
token[m++] = ‘ ‘;
}
int main()
{
int i = 0;
cout << “输入代码以‘#‘结束:“ << endl;
while ((cin>>noskipws>>ch)&&ch != ‘#‘)//输入代码
{
Input[i++] = ch;
}
while (mark != 0)
{
Scanner();//扫描代码
switch (mark)
{
case 11:
cout << “(“ << mark << ““ << sum << “)“ << endl;//定义变量
break;
case -1:
cout << “InputError“ << endl;//词法记号为-1,输入有误
exit(0);
case -2:
ex
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-04-20 15:23 第一次上机
文件 3219 2017-04-06 20:01 第一次上机 est.cpp
文件 67953 2017-04-06 20:01 第一次上机 est.exe
文件 358782 2017-03-26 14:51 第一次上机第一次上机作业-lex实验.zip
目录 0 2017-04-20 18:28 第一次上机第一次上机作业-lex实验
目录 0 2004-08-30 17:21 第一次上机第一次上机作业-lex实验lex_实验
文件 1374 2015-04-01 18:47 第一次上机第一次上机作业-lex实验lex_实验flex 说明.txt
目录 0 2017-04-06 20:46 第一次上机第一次上机作业-lex实验lex_实验flex
文件 190 2004-08-30 16:08 第一次上机第一次上机作业-lex实验lex_实验flexexample.l
文件 207 2004-08-30 15:31 第一次上机第一次上机作业-lex实验lex_实验flexexample.l.bak
文件 167936 1998-04-07 21:12 第一次上机第一次上机作业-lex实验lex_实验flexflex.exe
文件 8628 2004-08-30 16:45 第一次上机第一次上机作业-lex实验lex_实验flexflex.GID
文件 79089 1998-01-04 13:01 第一次上机第一次上机作业-lex实验lex_实验flexflex.hlp
文件 36490 2017-04-06 20:46 第一次上机第一次上机作业-lex实验lex_实验flexlex.yy.c
文件 1108 1998-04-07 21:12 第一次上机第一次上机作业-lex实验lex_实验flexlibfl.lib
目录 0 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yy
目录 0 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yy.vs
目录 0 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yy.vslex.yy
目录 0 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yy.vslex.yyv14
文件 20480 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yy.vslex.yyv14.suo
目录 0 2017-04-20 15:50 第一次上机第一次上机作业-lex实验lex_实验lex_yyBackup
目录 0 2017-04-20 15:50 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebug
文件 51 2004-08-28 11:50 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebug12.txt
文件 163897 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebuglex.yy.exe
文件 175892 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebuglex.yy.ilk
文件 25472 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebuglex.yy.obj
目录 0 2017-04-20 15:51 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebuglex.yy.tlog
文件 33792 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebugvc60.idb
文件 53248 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yyDebugvc60.pdb
文件 36489 2004-08-30 16:09 第一次上机第一次上机作业-lex实验lex_实验lex_yylex.yy.c
文件 3437 2004-08-28 11:51 第一次上机第一次上机作业-lex实验lex_实验lex_yylex.yy.dsp
............此处省略184个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)