• 回答数

    4

  • 浏览数

    142

~Miss.Q~
首页 > 学术论文 > 词法分析器毕业论文

4个回答 默认排序
  • 默认排序
  • 按时间排序

瑾年凉薄

已采纳

既然是C语言词法分析器,那就是用C/C++对一段C语言文本进行词法分析,C语言中的for语句、while语句、switch语句、if语句等等的进行分析并将其提取出来的一个设计和实现过程而矣这是大学专门有一门《编译原理》的课程而矣

108 评论

达宝利姜广丛

the search to 语法分析 which is the centre part of the 语法分析(应该是专业词汇),is veryuseful.

282 评论

流云归晚

定义:词法分析器的功能输入源程序,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等(1) 关键字 是由程序语言定义的具有固定意义的标识符。例如,Pascal 中的begin,end,if,while都是保留字。这些字通常不用作一般标识符。(2) 标识符 用来表示各种名字,如变量名,数组名,过程名等等。(3) 常数 常数的类型一般有整型、实型、布尔型、文字型等。(4) 运算符 如+、-、*、/等等。(5) 界符 如逗号、分号、括号、等等。输出:词法分析器所输出单词符号常常表示成如下的二元式: (单词种别,单词符号的属性值)单词种别通常用整数编码。标识符一般统归为一种。常数则宜按类型(整、实、布尔等)分种。关键字可将其全体视为一种。运算符可采用一符一种的方法。界符一般用一符一种的方法。对于每个单词符号,除了给出了种别编码之外,还应给出有关单词符号的属性信息。单词符号的属性是指单词符号的特性或特征。示例:比如如下的代码段:while(i>=j) i--经词法分析器处理后,它将被转为如下的单词符号序列: <(, _> <>=, _> <), _> <--, _> <;, _> 词法分析分析器作为一个独立子程序词法分析是编译过程中的一个阶段,在语法分析前进行。词法分析作为一遍,可以简化设计,改进编译效率,增加编译系统的可移植性。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。

236 评论

水乡的风光

#include ""                  /*定义I/O库所用的某些宏和变量*/

#include ""                 /*定义字符串库函数*/

#include ""                  /*提供有关屏幕窗口操作函数*/

#include ""                  /*分类函数*/

char prog[80]={'\0'},

token[8];                     /*存放构成单词符号的字符串*/

char ch;

int syn,                           /*存放单词字符的种别码*/

n,

sum,                           /*存放整数型单词*/

m,p;                           /*p是缓冲区prog的指针,m是token的指针*/

char *rwtab[6]={"begin","if","then","while","do","end"};

void scaner(){

m=0;

sum=0;

for(n=0;n<8;n++)

token[n]='\0';

ch=prog[p++];

while(ch==' ')

ch=prog[p++];

if(isalpha(ch))    /*ch为字母字符*/{

while(isalpha(ch)||isdigit(ch))    /*ch 为字母字符或者数字字符*/{

token[m++]=ch;

ch=prog[p++];}

token[m++]='\0';

ch=prog[p--];

syn=10;

for(n=0;n<6;n++)

if(strcmp(token,rwtab[n])==0)    /*字符串的比较*/{

syn=n+1;

break;}}

else

if(isdigit(ch))    /*ch是数字字符*/{

while(isdigit(ch))    /*ch是数字字符*/{

sum=sum*10+ch-'0';

ch=prog[p++];}

ch=prog[p--];

syn=11;}

else

switch(ch){

case'<':m=0;token[m++]=ch;ch=prog[p++];

if(ch=='>'){

syn=21;

token[m++]=ch;}

else if(ch=='='){

syn=22;

token[m++]=ch;}

else{

syn=20;

ch=prog[p--];}

break;

case'>':m=0;token[m++]=ch;ch=prog[p++];

if(ch=='='){

syn=24;

token[m++]=ch;}

else{

syn=23;

ch=prog[p--];}

break;

case':':m=0;token[m++]=ch;ch=prog[p++];

if(ch=='='){

syn=18;

token[m++]=ch;}

else{

syn=17;

ch=prog[p--];}

break;

case'+':syn=13;token[0]=ch;break;

case'-':syn=14;token[0]=ch;break;

case'*':syn=15;token[0]=ch;break;

case'/':syn=16;token[0]=ch;break;

case'=':syn=25;token[0]=ch;break;

case';':syn=26;token[0]=ch;break;

case'(':syn=27;token[0]=ch;break;

case')':syn=28;token[0]=ch;break;

case'#':syn=0;token[0]=ch;break;

default:syn=-1;}}

main()

{

printf("\n\nThe significance of the figures:\n"

" 1 to 6 said Keyword\n"

" 10 and 11 said Other indicators\n"

" 13 to 28 said Operators\n");

p=0;

printf("\nplease input string:\n");

do {

ch=getchar();

prog[p++]=ch;

}while(ch!='#');

p=0;

do{

scaner();

switch(syn){

case 11: printf("(%d,%d)\n",syn,sum);break;

case -1: printf("\n ERROR;\n");break;

default: printf("(%d,%s)\n",syn,token);

}

}while(syn!=0);

getch();

}

程序测试结果

对源程序begin x:=9: if x>9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下图5-1所示:

具体的你在修改修改吧

356 评论

相关问答

  • 数据分析法毕业论文

    基本信息描述

    黎明前的静谧 4人参与回答 2023-12-09
  • 词法分析器毕业论文

    既然是C语言词法分析器,那就是用C/C++对一段C语言文本进行词法分析,C语言中的for语句、while语句、switch语句、if语句等等的进行分析并将其提取

    ~Miss.Q~ 4人参与回答 2023-12-06
  • 毕业论文网孔分析法

    1、选网孔电流为变量,并标出变量方向(常设为顺时针方向)2、按照规律,采用观察法分析网孔a.网孔中电流源视为开路,电压源视为短路。b.以KVL为基础,列出网孔内

    吕鹤是谁 4人参与回答 2023-12-12
  • 仪器分析论文

    随便找点文章粘粘贴贴好了 何苦啊 她又没说不许从网上搜

    猪小七ice 4人参与回答 2023-12-08
  • 低压电器行业分析毕业论文

    低压配电由配电变电所(通常是将电网的输电电压降为配电电压)、高压配电线路(即1千伏以上电压)、配电变压器、低压配电线路(1千伏以下电压)以及相应的控制保护设备组

    苏州大高中 3人参与回答 2023-12-12