跪求原理实验源码 !!!!!!!!!!用LEX 、bison实现词法分析、语法分析以及生成中间代码

J5175 2011-06-17 01:15:09
词法分析
一、实验目的
设计、编制并调试一个C语言子集的LEX源程序,采用自动生成工具LEX生成该C语言子集的词法分析程序——C源代码文件,编译产生可执行程序,并运行、调试。
二、实验要求
待分析的C语言子集的词法
A、 关键字
main
if
else
int
return
void
while
B、 专用符号
= + - * /
< <= > >= ==
!= ; : , (
) [ ] { }

C、 其他标记ID和NUM
通过以下正规式定义其他标记:
IDENT ->letter (letter|digit)*
NUMBER ->digit digit*
Letter->a | … | z | A | … | Z
Digit -> 0 | … | 9
D、 空格由空白、制表符和换行符组成
空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段通常被忽略。



C子集 文法
1 概述
本项目的目的是生成一个用于教学的示例性质的C语言编译器,标准的C文法比较复杂,而本编译器采用的是经过裁剪的C子集文法,具有基本运算、循环、分支和输入、输出功能。
2 文法
<加法运算符>::= +|-
<乘法运算符>::= * |/
<关系运算符>::= <|<=|>|>=|!=|==
<字符>::= _|a|...|z|A|...|Z
<数字>::= 0|<非零数字>
<非零数字>::= 1|...|9
<字符串>::= "{<合法字符> }" //字符串中可以出现所有合法的可打印字符集中的字符
<程序>::= [<常量说明部分>][<变量说明部分>]{<子函数定义部分>}<主函数>
<常量说明部分>::= const<常量定义>{,<常量定义>};
<常量定义>::= <标识符>=<整数>
<整数>::= [+|-]<非零数字>{<数字>}|0
<标识符>::= <字符>{<字符>|<数字>}
<声明头部>::= int <标识符>
<变量说明部分>::= <声明头部>{,<标识符>};
<子函数定义部分>::= (<声明头部>|void <标识符>)<参数><复合语句>
<复合语句>::= ‘{’[<常量说明部分>][<变量说明部分>]<语句序列>‘}’
<参数>::= ‘(‘<参数表>‘)’
<参数表>::=int<标识符>{,int<标识符>} | <空>
<主函数>::=void main’(‘‘)’<复合语句>
<表达式>::=[+|-]<项>{<加法运算符><项>}
<项>::=<因子>{<乘法运算符><因子>}
<因子>::=<标识符>|’(‘<表达式>‘)’|<整数>|<子函数调用语句>
<语句>::=<条件语句>|<循环语句>|’{‘<语句序列>‘}’|<子函数调用语句>;|
<赋值语句>; | <返回语句>;|<读语句>;|<写语句>;|;
<赋值语句>::= <标识符>=<表达式>
<条件语句>::= if’(‘<条件>‘)’<语句>[else<语句>]
<条件>::= <表达式><关系运算符><表达式>|<表达式>
<循环语句>::= while’(‘<条件>‘)’<语句>
<子函数调用语句>::= <标识符>‘(‘<值参数表>‘)’
<值参数表>::= <表达式>{,<表达式>}|<空>
<语句序列>::= <语句>{<语句>}
<读语句>::= scanf’(‘<标识符>‘)’
<写语句>::= printf’(‘<字符串>,<表达式 >|<字符串>|<表达式 >‘)’
<返回语句>::= return [ ‘(‘<表达式>‘)’]
...全文
438 1 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
赵4老师 2013-05-24
想当年,偶做编译原理上机题的时候,还帮辅导老师纠正了一处隐藏很深的错误呢。
回复
wr1992z 2013-05-24
有答案了吗?求帮忙呀。帮我发一份吧529991657@qq.com
回复
hugett 2013-05-24
网上大把。。自己搜一下吧。。
回复
qingcairousi 2011-07-18
我艹,这个题目基本上最困难的部分都给你写好了,连把题目转换为代码都不会么?你编译原理怎么学的?还是自己做作业吧,学好编译原理很重要的。
回复
naturemickey 2011-06-30
我正在学习编译,不过没打算用flex和bison,打算一切都自己写。
现在刚刚写完词法分析。

http://naturemickey.blog.chinaunix.net
回复
恨天低 2011-06-17
编译原理作业帖!
网上搜索下一些例子代码!看看,改改他们的就可以了!
回复
相关推荐
发帖
其它技术问题
创建于2007-09-28

3849

社区成员

C/C++ 其它技术问题
申请成为版主
帖子事件
创建了帖子
2011-06-17 01:15
社区公告
暂无公告