词法分析器、语法分析器、语义分析器 的区别以及别人编写的程序。
来源:互联网 发布:pvg网络视频管理平台 编辑:程序博客网 时间:2024/05/21 07:07
顾名思义,词法分析器检查的是词法,语法分析器分析的是语法,什么是词法,什么是语法你弄明白就知道了。所谓词法,源代码由字符流组成,字符流中包括关键字,变量名,方法名,括号等等符号,其中变量名要满足不能包括标点符号,不能以数字开头的数字与字母的字符串这个条件,对于括号要成对出现等等,这就是词法;而语法,词法没有问题才能进入语法分析,语法就是词排列的方法,字面意义,比如一句中文:我吃萝卜,里面有三个词我 吃 萝卜,除了“我吃萝卜”外,这三个词还可以组成,“萝卜吃我”“萝卜我吃”等,显然按照中文文法,后面的两句话是不对的,语法分析器就是分析类似这样的语法的。
举报|2010-12-09 20:52传说中的小U | 分类:C/C++ | 浏览1634次
请知道的高手帮帮忙~
2010-12-09 21:09提问者采纳
以前写的 看对你有帮助没#include"stdio.h"#include"conio.h"#include"string.h"#include"stdlib.h"#define num 10#define num0 9#define num1 9char *KeyWords[num]={"int","float","char","while","if","else","switch","case","break","return" };//关键字 char ope[num0]={'+','-','*','/','|','&','=','>','<'};//操作符 char edgesign[num1]={';',',','(',')','"','{','}'};//分隔符 不含 换行,空格 int Key(char *word){ for(int i=0;i< num;i++) if(!strcmp(KeyWords[i],word)) return 1; return 0;}//确定是否为关键字 int yun(char word){ for(int i=0;i<num0;i++) if(ope[i]==word) return 1; return 0;}//确定是否为运算符 int Sign(char word){ for(int i=0;i<num1;i++) if(edgesign[i]==word) return 1; return 0;}//确定 是否为分隔符符 void out2(char word) //4为运算符,5为分隔符 { if(yun(word)) { printf("(4,\"%c\")\n",word); } if(Sign(word)) { printf("(5,\"%c\")\n",word); } }void out1(char *word,int Len) //3为字符或者数字,2为标识符,1为关键字 { int a; if(Key(word)) printf("(1,\"%s\")\n",word); else { if( word[0]=='\'' && word[Len-1]=='\'') //字符常量 printf("(3,\"%s\")\n",word); else if((a=atoi(word)))//字符串转化为数字 printf("(3,\"%d\")\n",a); else { if(word[0]!='\0') printf("(2,\"%s\")\n",word); } } }int Scan(){ FILE *fp; char temp[10],ch='1',temp1; char filename[20]; int i,j; printf("请输入文件名"); scanf("%s",filename); if((fp=fopen(filename,"r"))==NULL) { printf("文件打开失败"); return 0 ; } while(ch!=EOF){ j=0; i=0; ch=fgetc(fp); while(!Sign(ch)&&!yun(ch)&&ch!=' '&&ch!='\n'&&ch!=EOF) { temp[i]=ch; temp[i+1]='\0'; ch=fgetc(fp); i++; } out1(temp,i); temp[0]='\0';//清除字串 temp1=ch; out2(temp1); temp1='\0';//清除字符 } fclose(fp);return 1;}int main(){ Scan(); getchar(); getchar(); }
0 0
- 词法分析器、语法分析器、语义分析器 的区别以及别人编写的程序。
- 用C++语言手工编写的词法分析器,语法分析器
- C++的词法分析器
- 简单的词法分析器
- 简单的词法分析器
- 简单的词法分析器
- 我的词法分析器
- 简单的词法分析器
- 简单的词法分析器
- 词法分析器的实现
- 词法分析器的实现
- 词法分析器的实现
- 简单的词法分析器
- 语法分析器的编写!急!
- 编译原理方面:词法语法语义分析器
- Java编写的C语言词法分析器
- C语言编写简单的词法分析器
- 我的程序(3):词法分析器
- Mac OS使用技巧之九:Mission Control和DIY自己的Dashboard
- Struts简介和原理
- 将一个静态库(.a)链接/打包到动态库中。
- 《unix环境高级编程》 读书笔记 (3)
- objective c单例设计模式
- 词法分析器、语法分析器、语义分析器 的区别以及别人编写的程序。
- Why does uploadify.swf request /false URL ?
- Java开发中的23种设计模式详解
- Qt 编程开发随笔,边开发边记
- Spring 注解@Transactional
- Button实现OnClickListener事件的三种方法
- 互联网企业是时候甩掉你的测试部门啦!(How google test software读书笔记)
- ORM 和 Hibernate
- UVa11858 - Frosh Week(树状数组求逆序数)