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

作者:Wupei  |  发表时间:  |  所属分类:我的作品

本学期编译原理课上实现的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 m_DataArray;	//数据数组

	CTreeNode* TranslateTinyGrammar();	//语法分析,输出语法树

	CArray m_ErrorArray;	//错误数据数组
};

//语法节点结构
class CTreeNode  
{
public:
	CString data;			//当前节点数据

	//节点连接
	CTreeNode* m_pChild[3];	//子节点
	CTreeNode* m_pSibling;	//兄弟节点
};


五.程序输入与运行结果

词法分析输入与运行结果

tiny语法分析器展示图

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

tiny语言语法分析器展示


说明:

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

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

Trackback from your site.

(1)条评论

  • 小龙

    |

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

    回复

请在这里留言: