简单的词法分析程序,适用于修读《编译原理》课程的同学下载,本程序完全正确,请放心下载!
2019-12-25 11:17:20 123KB 词法分析程序
1
定义一种程序设计语言,或者选择已有的一种高级语言(C语言),编制它的词法分析程序词法分析程序的实现可以采用任何一种编程工具。
2019-12-21 22:11:59 33KB 词法分析
1
#include #include #include #include using namespace std; int w=0; //尾数累加器 int p=0; //指数累加器 int j=0; //十进制小数位数计数器 int e=1; //用来记录十进制数的符号,当指数为正时为1,为负时为-1 int i=0; //用来标志元素位置 int d=0; //用来表示每个数值型元素对应的数值 const int N=40;//用来确定输入识别符的最大长度 char data[N];//存放输入的识别符 bool is_digit; //标志是否是数字 string CJ1;//确定是整形还是实型 double CJ2;//记数值 //函数声明 void check(char c);//检查首字母是否是数字的函数 void deal_integer(char c);//处理识别符的整数部分 void deal_point(char c);//用来处理小数部分 void deal_index(char c);//用来处理指数部分 void s_next();// 确定实型 void z_next();//确定整型 void last();// 计算 CJ2 void error();//程序中错误处理程序 void deal();//处理函数主体 int main(){ //主函数 cout<<"please input your data,and its maximum length is "<data; deal();//处理函数主体 last();// 计算 CJ2 system("pause"); return 0; } void check(char c) //判断输入的首字母是否是数字 { is_digit=isdigit(c); while(is_digit!=true){//输入的首字母不是数字时 cout<<"\nError! Try again.."<>data; check(data[0]); } } void deal_integer(char c){//处理识别符的整数部分 d=(int)c-48; w=w*10+d; i++; if(isdigit(data[i])!=0)//下一个仍是数值时,调用程序本身 deal_integer(data[i]); } void deal_point(char c){//用来处理小数部分 int temp=i; if(isdigit(c)!=0)//是数值字符时 deal_integer(c); else { error(); //错误处理程序 deal();//处理函数主体 } j=i-temp;//记录十进制小数位数 } void deal_index(char c){//用来处理指数部分 if(c=='-') {e=-1;i++;}//是'-'号时 else {if(c=='+') i++;//是'+' 号时 else { if(isdigit(c)==false) //非数值字符时 { error();//错误处理程序 deal();//处理函数主体 } else
2019-12-21 22:02:13 33KB 无符号数的词法分析程序
1
编译原理实验二源程序的预处理及词法分析程序设计,大家可以看看
2019-12-21 21:59:26 49KB 编译原理
1
一 词法分析 1 设计目的:通过完成词法分析程序,了解词法分析的过程 2、设计内容:用C或PASCAL语言实现对某语言(例如:C、PASCAL)的词法识别程序,生成单词,并分类存在符号表中。 3.源程序: (1):主函数 Main() void main() {accidence_analyse();//词法分析主程序 out=fopen("tim0n.c","r");//打开生成结果文件tim0n.c test_function();//测试函数 fclose(out); }
2019-12-21 21:58:18 54KB 词法识别 代码 编译原理 程序设计
1
一、实验任务:编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)
2019-12-21 21:58:17 6KB 词法分析
1
一个简单的词法分析器,从文件中读入源程序,分析后的结果存入文件token.txt中。不完善的地方敬请指正。。谢谢
2019-12-21 21:57:23 3KB token字 词法分析
1
扩充pl\0编译器设计之词法分析程序 内嵌函数: void clearToken(); //清空token字符数组 int isSpace(); //空格 int isNewline(); //换行符 int isTab(); //Tab int isLetter(); //字母 int isDigit(); //数字 int isColon(); //冒号 : int isComma(); //逗号 , int isSemi(); //分号 ; int isEqu(); //等号 = int isPlus(); //加号 + int isMinus(); //减号 - int isDivi(); //除号 / int isStar(); //乘号 * int isLpar(); //左括号 ( int isRpar(); //右括号 ) int isLbrack(); //左中括号 [ int isRbrack(); //右中括号 ] int isLbrace(); //左大括号 { int isRbrace(); //右大括号 } int isLss(); //小于号 int isPeriod(); //点号 . int isQmark(); //单引号 ' int isDqmark(); //双引号 " int isStringElement(); //字符串合法字符,ASCII码值为32,33,35-126的字符 void catToken(); //每次调用前把当前ch中的字符与token字符数组中的字符串联结 void retract(); //将读字符指针后退一个字符 void reserve(); //保留字 void lexical_error(); //错误处理过程
2019-12-21 21:18:08 274KB 编译原理 词法分析 pl\0
1
可以实现的功能:识别关键字,普通标识符,文件形式输入输出,过滤空格、注释等功能
1
本次资源就是针对一次编译原理实验,实验的内容就是用flex工具自动构造词法分析程序
2019-12-21 20:26:38 2KB 词法分析 flex 编译原理实验
1