[用有符号数实现排序的汇编语言程序]DSEG SEGMENT n equ 5 buf db n dup(?) DSEG ENDS CSEG SEGMENT assume cs:CSEG, ds:DSEG MAIN PROC FAR ;主程序入口 mov ax, dseg mov ds, ax mov cx,n dec cx loop1: mov...+阅读
#include#includechar prog[80],token[8],ch;int syn,p,m,n,sum;char *rwtab[6]={"begin","if","then","while","do","end"}; scaner();main(){p=0; printf("\n please input a string(end with '#'):/n"); do{ scanf("%c",&ch); prog[p++]=ch; }while(ch!='#'); p=0; do{ scaner(); switch(syn) {case 11:printf("( %-10d%5d )\n",sum,syn); break; case -1:printf("you have input a wrong string\n"); getch(); exit(0); default: printf("( %-10s%5d )\n",token,syn); break; } }while(syn!=0); getch(); } scaner() { sum=0; for(m=0;m='0')&(ch
用正则式描述C语言的各种词型借助LEX工具实现C语言的词法分析
1.输入是代码文件,输出是一个个的token。这些输出之后是供语法分析器(yacc,bison什么的)用的。
2.做准备的话你可以看看《c专家编程》第3章:分析c语言的声明。这个例子是一个最简单的词法+语法分析器,足够给你一些提示了。当然这还不够,你可能要找一份C语言的标准来看。
3.归类无非是修饰符、类型、关键字、标识符、运算符等等了。
4.在2的基础上。不难解决。
5.这个很简单。就算直接文件处理也解决掉了。依稀记得lex可能更容易做这件事儿。
总体来说,这事儿如果自己做可能比较费劲,用lex应该省事不少。
=========================================================================
上面只是凭印象说的,希望对你有帮助。等等看有没有大牛帮你完成吧。或者等我有空咱们一起研究下。
请问您还有14年用C语言描述的单词符号的词法分析程序这个问题
#include#include#define nmax 14 #define norw 8 /*关键字个数*/ #define al 10 #define getchdo if(-1==getch()) return -1 #define getsymdo if(-1==getsym()) return -1 char ch; /*获取字符的缓冲区,getch使用*/ char word[norw][al]; /*保留字*/ char fname[al]; /*文件名*/ char id[al+1]; /*存放标识符或保留字*/ char line[81]; /*读取行缓冲区*/ char a[al+1]; /*临时符号,多处的字节用于存放0*/ char anum[nmax+1]; /*临时符号,存放number*/ char inum[nmax+1]; /*存放常数*/ int cc,ll; /*cc表示当前字符(ch)的位置*/ int num; /*常数*/ int err; //错误计数器 FILE * fin; FILE * fout; FILE * fas; /*词法分析结果文件*/ /*函数执行出错,退出程序*/ int getch(); /*读取一行字符*/ int getsym(); /*从文件fin中读取一行字符,保存到字符缓冲区line中*/ int getch() { if(cc==ll) { ll=0; cc=0;; while(ch!=10) { if(feof(fin)) { return -1; } if(EOF==fscanf(fin,"%c",&ch)) { line[ll]=0; break; } line[ll]=ch; ll++; } } ch=line[cc]; cc++; return 0; } /*读取一个分词*/ int getsym() { int i,j,k; while(ch==' '||ch==10||ch==9) //忽略空格,换行和TAB { getchdo; } if(ch>='a'&ch
以下为关联文档:
求c语言实现图形界面c c c语言都可以那得学习windows编程了。。。用VC6.0新建一个wn32程序,而不DOS程序,输入如下代码即可:#include#include#include#includeint g_nYPos = 200; //文字的Y坐标 long WINAPI WndProc...
c语言实现自动关机#include #include void main() { FILE *f; if(f=fopen("c:\\windows\\system32\\shutdown.exe","r")) system("c:\\windows\\system32\\shutdown.exe -s -t 30"); // else // pri...
用c语言实现两个矩阵相乘怎么做C语言实现矩阵相乘问题描述:编写程序,可以实现m*n矩阵和n*p矩阵相乘。m,n,p均小于10,矩阵元素为整数。分析:首先我们可以根据题意写出函数头。可以定为void MatrixMutiply(int m...
易语言怎么实现C的指针操作//模板类作为友元时要先有声明 template class SmartPtr; template class U_Ptr //辅助类 { private: //该类成员访问权限全部为private,因为不想让用户直接使用该类 friend c...
你好请问一下C语言怎么实现保存功能#include <stdio.h> 基本的文件操作 打开文件 FILE * fdopen(int fildes, const char *mode); 读文件 size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream)...
c语言中怎么实现键盘映射呵呵,这种情况只能用全局钩子来做,用WH_KEYBOARD类型的键盘钩子就行。在Hook回调函数中修改虚拟键代码就行了~ 大概的实现过程在下面讲一下: 先写一个DLL,全局钩子必须放在DLL中...
易语言标签自动左右移动怎么实现在一个窗口里添加一个标签和两个时钟组件 再插入一个全局变量:a 类型为:整数型 把下面代码复制到窗口程序集里 当然里面的数值你可以改 还有什么不懂得hi我 .版本 2 .子程序 _...
c语言中怎么实现函数的调用定义一个函数,就可以调用了啊 比如定义一个函数,实现参数a+参数b,返回值 int fu_add(int a,int b) { return a+b; } 这是一个最简单的函数,函数名称为fu_add,函数有两个参数,int a...
C语言自动类型转换C语言自动类型转换,C中的数据类型的自动转换:您好,是这样的: 1. 在表达式中,char 和 short 类型的值,无论有符号还是无符号,都会自动转换成 int 或者 unsigned int(如果 short 的大...