第一范文网 - 专业文章范例文档资料分享平台

编译原理实验报告(词法分析器语法分析器) 

来源:用户分享 时间:2026/8/10 6:03:21 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

编 译 原 理 实 验 报 告

实验一

一、实验名称:词法分析器的设计

二、实验目的:1,词法分析器能够识别简单语言的单词符号

2,识别出并输出简单语言的基本字.标示符.无符号整数.运算符.和界符。 三、实验要求:给出一个简单语言单词符号的种别编码词法分析器 四、实验原理:

1、词法分析程序的算法思想

算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 2、程序流程图 (1)主程序

输出单词符号二元组 结束 调用扫描、分析程序 判断读入字符是否为“#” 输入要分析的语句

(2)扫描子程序

Token清Get() 当前字符= 标示符 常数 表中查找 结束 Error() 基本字 用户标示符 输出二元结束 3、各种单词符号对应的种别码 单词符号 while if else switch case 标识符 种别码 1 2 3 4 5 6 助记符 while if else switch case id 内码值 - - - - - id在符号表中的位置 常数 7 num num在常数表中的位置 + - * <= < == = ; 8 9 10 11 11 11 12 13 + - * relop relop relop = ; - - - LE LT EQ - - 五、实验内容:

1、实验分析

编写程序时,先定义几个全局变量a[]、token[](均为字符串数组),c,s( char型),i,j,k(int型),a[]用来存放输入的字符串,token[]另一个则用来帮助识别单词符号,s用来表示正在分析的字符。字符串输入之后,逐个分析输入字符,判断其是否‘#’,若是表示字符串输入分析完毕,结束分析程序,若否则通过int digit(char c)、int letter(char c)判断其是数字,字符还是算术符,分别为用以判断数字或字符的情况,算术符的判断可以在switch语句中进行,还要通过函数int lookup(char token[])来判断标识符和保留字。

2 实验词法分析器源程序: #include <> #include <> #include <> int i,j,k;

char c,s,a[20],token[20]={'0'}; int letter(char s){ if((s>=97)&&(s<=122)) return(1); else return(0); }

int digit(char s){ if((s>=48)&&(s<=57)) return(1); else return(0); }

void get(){ s=a[i]; i=i+1; }

void retract(){ i=i-1; }

int lookup(char token[20]){ if(strcmp(token,\ else if(strcmp(token,\ else if(strcmp(token,\ else if(strcmp(token,\ else if(strcmp(token,\ else return(0); }

void main() { printf(\ :\\n\ i=0; do{i=i+1;

scanf(\ }while(a[i]!='#'); i=1;

j=0; get();

while(s!='#'){ memset(token,0,20); switch(s) { case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': while(letter(s)||digit(s)) {token[j]=s; j=j+1; get(); } retract();k=lookup(token); if(k==0) printf(\ else printf(\

编译原理实验报告(词法分析器语法分析器) .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9kaw26gpvc5s23r4b01m9s4tl8lgrm00e1y_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top