Programming Technology

MFC作品: Tiny语言词法、语法分析器展示

本学期编译原理课上实现的tiny语言的简易编译器,实现了词法及语法分析...语义分析和出错处理做的还是不到位

可执行程序下载: tiny_exe.rar

源文件下载: tiny_src.rar

=================================

相关说明:

一.实验名称

词法分析器
语法分析器

开发环境: VS2005(由于特别的树形控件原因,本程序无法被VC6编译通过)

二.实验目的

通过对TINY的文本分析,实现对TINY语言的词法分析和语法分析

三.程序功能

语法分析:将TINY语言的文本文件,翻译为独立的有意义的字符串 (CData),再输出
词法分析:将语法分析的结果,生成相应的语法树

四.模块说明(数据结构说明)

  1. //表示具有独立字符串的类(比如一个变量,一个数字串,一个有意义的符号….)
  2. class Data
  3. {
  4. public:
  5.         int m_Kind;             //类别
  6.         int m_Row;              //行数(出错指示用)
  7.         CString m_Str;          //内容
  8.         CString m_Other;        //备注(行数,)
  9. };
  10.  
  11. //输入与输出封装
  12. class CMyTiny
  13. {
  14.         void TranslateTinyStr(CString EditStr, int rowNum);     //转换tiny字符串,生成数据数组
  15.         CArray<Data> m_DataArray;       //数据数组
  16.  
  17.         CTreeNode* TranslateTinyGrammar();      //语法分析,输出语法树
  18.  
  19.         CArray<CString> m_ErrorArray;   //错误数据数组
  20. };
  21.  
  22. //语法节点结构
  23. class CTreeNode  
  24. {
  25. public:
  26.         CString data;                   //当前节点数据
  27.  
  28.         //节点连接
  29.         CTreeNode* m_pChild[3]//子节点
  30.         CTreeNode* m_pSibling;  //兄弟节点
  31. };


五.程序输入与运行结果


词法分析输入与运行结果

tiny语法分析器展示图


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

tiny语言语法分析器展示


说明:

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

tiny语言词法分析器展示图2


太强大啦,现阶段是暂时没法达到这种水平的。
先借鉴先,谢谢分享···

Comment by 小龙 (2010/06/16 03:59)

发表评论 ( 如果您刚刚提交过评论,但是还没有被显示出来,请点击这里刷新一下: 刷新评论 )

标题

内容*

昵称*

电子邮件

个人网页


 authimage