资源简介
一、实验任务:编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)
代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
ifstream infile(“Test.txt“ios::in);
ofstream outfile(“Answear.txt“ios::out);
char cbuffer;
char *key[13]={“var““const““begin““end““while““do““read““write““if““then““procedure““call““odd“};
char *border[5]={ ““ “;“ “(“ “)“ “.“}; //分界符
char *arithmetic[4]={“+“ “-“ “*“ “/“ }; //运算符
char *relation[7]={“<“ “=“ “>“ “#“ “<=“ “>=“ “:=“}; //关系运算符
int search(char searchchar[]int wordtype)
{
int i=0t=0;
switch (wordtype)
{
case 1:
{
for (i=0;i<=12;i++) //关键字
{
if (strcmp(key[i]searchchar)==0)
return(i+1);
}
return(0);
}
case 2:
{
for (i=0;i<=4;i++) //分界符
{
if (strcmp(border[i]searchchar)==0)
return(i+1);
}
return(0);
}
case 3:
{
for (i=0;i<=3;i++) //运算符
{
if (strcmp(arithmetic[i]searchchar)==0)
return(i+1);
}
return(0);
}
case 4:
{
for (i=0;i<=6;i++) //关系运算符
{
if (strcmp(relation[i]searchchar)==0)
return(i+1);
}
return(0);
}
case 5: //空格
return (1);
}
}
char alphaprocess(char buffer) //字符处理过程
{
int atype;
int i=-1;
char alphatp[20];
while ((isalpha(buffer))||(isdigit(buffer))) //这两个函数分别是判字符和判数字函数位于ctype.h中
{
alphatp[++i]=buffer;
infile.get(buffer);
}
alphatp[i+1]=‘\0‘;//在末尾添加字符串结束标志
if (atype=search(alphatp1))
outfile< else
{
atype=search(alphatp6); //标识符
outfile<<“ident \““< }
return(buffer);
}
char digitprocess(char buffer) //数字处理过程
{
int i=-1;
char digittp[20];
int dtype;
while ((isdigit(buffer)))
{
digittp[++i]=buffer;
infile.get(buffer);
}
digittp[i+1]=‘\0‘;
dtype=search(digittp5);
outfile<<“number \““< return(buffer);
}
char otherprocess(char buffer) //分界符、运算符、逻辑运算符、等
{
int i=-1;
char othertp[20];
int otypeotypetp;
othertp[0]=buffer;
othertp[1]=‘\0‘;
if (otype=search(othertp3)) //运算符
{
infile.get(buffer);
switch(otype-1){
case 0: outfile<<“plus \“ “< case 1: outfile<<“subtract \“ “<
- 上一篇:西电软工所有课件含代码大全3.rar
- 下一篇:编译原理实验语法分析器
相关资源
- 编译原理实验-词法分析(c语言代码)
- 北邮-编译原理-词法分析
- 词法分析器有去除注释功能
- 自定义词法规则的词法分析器
- C语言词法分析程序
- 简易词法分析器——基于C语言
- 词法分析C++源码
- 词法分析代码内有报告
- 编译原理词法分析实验
- 编译原理课程设计----语法分析器(
- 编译原理课程实验报告词法分析器及
- PL0编译器词法检查与语法分析器
- 编译原理课程设计词法语法分析器
- LEX实现一个C语言子集的词法分析器
- 编译原理词法分析器实验报告含源代
- 编译原理词法分析器C++版源代码
- 无符号数的词法分析程序 C++版
- LEX与YACC实现C语言词法分析和语法分析
- 编译原理 词法分析器
- 简易C语言编译器的设计与实现
- 编译原理综合性实验 选择部分C语言的
- 编译器前两步
- PL/0语法分析程序
- 词法分析器(c语言实现)246881
- 编译原理 词法分析 源代码
- 词法分析C++程序
- 编译原理——词法分析器设计与实现
- 编译原理 C语言实现词法分析
- 不同进制数的识别程序设计
- 编制一个读单词过程,从输入的源程
评论
共有 条评论