分析四则运算表达式结构的小程序
前段时间下载了一个正则表达式的测试工具Expresso,使用它的时候发现它可以动态解析正则表达式结构,非常直观方便。本来以为.net里面提供了解析正则表达式的类,搜了搜msdn,发现是作者自己写的一个解析的类。
本来想反编译RegDecoder.dll看看它的实现过程的,后来一想,正则表达式的语法并不复杂,想当年我也用lex和yacc写过分析这样的一些表达式的程序,写这样的解析程序应该不是什么难题。这种纯算法的东西看起来很是头痛的,与其看它的还不如自己写一个。可自从大学毕业后就没有用过编译原理的知识了,好像差不多都还给老师了,实在惭愧呀。确实应该复习一下。
去网上下了一本《编译原理及实践》看了看,写了个分析四则运算的小程序练练手。这个程序只是为了复习编译原理的概念,词法分析和语法分析的算法都是自己写的,虽然有一定的通用性,但并没有考虑效率,想到什么样的就写的什么样的,语法分析也不想搞的太复杂,采用的是类似LALR(1)的一种算法,分析四则运算倒也没有什么问题。
该程序以比较直观的方式分析了四则运算表达式的结构,有兴趣的朋友可以下载玩一下(需要.net 3.5运行环境)。由于程序是即兴之作,那天马行空般的代码就不贴出来丢人了^_^。什么时候有空写个分析sql语句的程序玩玩。如果对编译原理有兴趣的朋友欢迎一起学习。 程序下载