MFC作品: Tiny语言词法、语法分析器展示
本学期编译原理课上实现的tiny语言的简易编译器,实现了词法及语法分析…语义分析和出错处理做的还是不到位
可执行程序下载: tiny_exe.rar
源文件下载: tiny_src.rar
=================================
相关说明:
一.实验名称
词法分析器
语法分析器
开发环境: VS2005(由于特别的树形控件原因,本程序无法被VC6编译通过)
二.实验目的
通过对TINY的文本分析,实现对TINY语言的词法分析和语法分析
三.程序功能
语法分析:将TINY语言的文本文件,翻译为独立的有意义的字符串 (CData),再输出
词法分析:将语法分析的结果,生成相应的语法树
四.模块说明(数据结构说明)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//表示具有独立字符串的类(比如一个变量,一个数字串,一个有意义的符号….) 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
其实本身就是树型控件,把原来的输出格式变了,本来是这样子的:
Trackback from your site.
(1)条评论
小龙
| #
太强大啦,现阶段是暂时没法达到这种水平的。
先借鉴先,谢谢分享···
回复