C_minus语言词法分析报告器实验报告材料

C_minus语言词法分析报告器实验报告材料

ID:42927968

大小:283.88 KB

页数:12页

时间:2019-09-23

C_minus语言词法分析报告器实验报告材料_第1页
C_minus语言词法分析报告器实验报告材料_第2页
C_minus语言词法分析报告器实验报告材料_第3页
C_minus语言词法分析报告器实验报告材料_第4页
C_minus语言词法分析报告器实验报告材料_第5页
资源描述:

《C_minus语言词法分析报告器实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用标准文档装订线编译原理实验报告题目:C_minus语言词法分析器学院计算机科学与技术专业xxxxxxxxxxxxxxxx学号xxxxxxxxxxxx姓名xxxx指导教师xxxx20xx年xx月xx日文案大全实用标准文档C_minus语言词法分析器一、实验目的     1.理解词法分析器的设计方法:利用DFA编写相应的程序。 2.掌握手工编写词法分析程序的方法。     3.复习熟悉以前学过的编程语言     4.通过实验了解编译器词法分析的工作原理  二、实验原理       1.文法的概念,DFA的表示方法。           

2、    2.词法分析程序的输出和输入:词法分析程序的功能是读入源程序,输出单词符号。单词符号是程序设计语言的比本语法符号,程序设计语言的单词符号一般分为如下几种:关键字,标示符,常数,运算符,界符,单词的输出是二元式的形式,需要知道二元式的表示方法,把得到的二元式写入输出文件。   转化图如下:        源程序 词法分析程序 记号文件      3.熟悉单词的描述工具,如正规文法,正规式,以及知道正规文法和正规式的等价性以及他们之间的互相转化。熟悉把正规文法转化为正规式,把正规式转化为NFA以及把NFA转为相应的DFA,最后再把D

3、FA简化,DFA的状态转化为相应的子程序,最后得到词法分析器          4.C语言的基本语法。   三、实验要求  1、该个词法分析器要求至少能够识别以下几类单词: 关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写; 标识符:识别与C语言词法规定相一致的标识符,通过下列正则表达式定义:ID = letter (letter 

4、 digit)*; 常数:NUM = digit digit*(.digit digit* 

5、ε)(e(+ 

6、 - 

7、ε) digit dig

8、it* 

9、ε),letter = 文案大全实用标准文档a

10、..

11、z

12、A

13、..

14、Z

15、,digit = 0

16、..

17、9,包括整数,如123等;小数,如123.45等;科学计数法表示的常数,如1.23e3,2.3e-9等; 专用符号:+ - * / < <= > >= == != =  , ( ) [ ] { } /* */; 2、分析器的输入为由上述几类单词构成的程序,输出为该段程序的机内表示形式,即关键字、运算符、界限符变为其对应的机内符,常数使用二进制形式,标识符使用相应的标识符表指针表示。 3、词法分析器应当能够指出源程序中的词法错误,

18、如不可识别的符号、错误的词法等。四、实验结果(程序)及分析  #include #include#include #define N 100 typedef struct {  char name[30];  int code;  int addr; }token;//存储刚从文件中读取的字符typedef struct  {  char name[30];  int code; }Keyword; typedef struct {  char name[30];  int co

19、de;  int addr;}symbol; Keyword key[6]={{"else",1},{"if",2},{"int",3},{"return",4},{"void",5},{"where",6}}; char ch;//接受字符 FILE *source;//源文件 FILE *keytxt;//关键字输出文件 FILE *badgetxt;//标识符输出文件 FILE *othertxt;//其他单词输出文件 FILE *number; int error_count;//错误的个数 int addr_count;//标

20、识符表的指针 int lineof;//行号 token current;//  暂时存放读入的字符 token zancun;  symbol currentsymbol; symbol symboltable[N];//标识符表void error(int i); void main() {       void scan();  error_count=0; 文案大全实用标准文档 addr_count=0;  error_count=0;  lineof=0;  scan();} void scan() {  int i=0; v

21、oid iskeyword();//判断关键字void isOthers() //判断其他单词 void output_1();//关键字输出文件   void output_2();//标识符输出文件 v

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。