MFC作品: Tiny语言词法、语法分析器展示
本学期编译原理课上实现的tiny语言的简易编译器,实现了词法及语法分析...语义分析和出错处理做的还是不到位
可执行程序下载: tiny_exe.rar
源文件下载: tiny_src.rar
=================================
相关说明:
一.实验名称
词法分析器
语法分析器
开发环境: VS2005(由于特别的树形控件原因,本程序无法被VC6编译通过)
二.实验目的
通过对TINY的文本分析,实现对TINY语言的词法分析和语法分析
三.程序功能
语法分析:将TINY语言的文本文件,翻译为独立的有意义的字符串 (CData),再输出
词法分析:将语法分析的结果,生成相应的语法树
四.模块说明(数据结构说明)
- //表示具有独立字符串的类(比如一个变量,一个数字串,一个有意义的符号….)
- class Data
- {
- public:
- int m_Kind; //类别
- int m_Row; //行数(出错指示用)
- CString m_Str; //内容
- CString m_Other; //备注(行数,)
- };
- //输入与输出封装
- class CMyTiny
- {
- void TranslateTinyStr(CString EditStr, int rowNum); //转换tiny字符串,生成数据数组
- CArray<Data> m_DataArray; //数据数组
- CTreeNode* TranslateTinyGrammar(); //语法分析,输出语法树
- CArray<CString> m_ErrorArray; //错误数据数组
- };
- //语法节点结构
- class CTreeNode
- {
- public:
- CString data; //当前节点数据
- //节点连接
- CTreeNode* m_pChild[3]; //子节点
- CTreeNode* m_pSibling; //兄弟节点
- };
五.程序输入与运行结果
词法分析输入与运行结果

语法分析输入与运行结果(因为图片太大缩小了)

说明:
这个分析器的错误处理做的个人感觉很不好,还有就是暂时还不支持连加连减的分析.......以后学脚本的时候再改进的
要输出为这样的树型控件用到一个codeproject上的一个类,以后会把相关技术写在博客当中
详见: http://www.codeproject.com/KB/tree/vertical_treeV1.aspx
其实本身就是树型控件,把原来的输出格式变了,本来是这样子的:

太强大啦,现阶段是暂时没法达到这种水平的。
先借鉴先,谢谢分享···
Comment by
小龙
(2010/06/16 03:59)





