寒假在家,做下个学期要学的C#和Java的实验,虽然这些实验题目是去年的,不过还是认真做了下。这几天就做了一个非常有意思的C#实验——Polymorphic Query Language,《C# Primer》Chapter 3.2里有具体描述,下面概括地介绍一下到底什么是Polymorphic Query Language。
Polymorphic Query Language直译过来就是多态查询语言,这次实验就是叫做一个支持这种语言的查询系统,让用户可以像这样查询一个指定的文本文件:
·xx :查找的含有字串为xx的行
·!xx:查找不含有字串xx的行
·xx && yy:查找同时含有字串xx和yy的行
·xx || yy:查找含有字串xx或yy的行
·!(xx && yy):查找不同时包含字串xx和yy的行
看了这个简单的需求之后,突然觉得这个东西不是很简单的,呵呵。看看这个程序要涉及的知识吧:
1. 文件操作
2. 用户查询字串的解析(重点之一)
3. 整个系统的体系层次设计(重点之一)
4. 异常处理(这个是下一次实验的内容)
下面先讲一下第2点,关于查询字串的解析。
看到这些逻辑运算的时候我总会把它们和算术运算联系在一起,&& -> *,|| -> +,
! -> -。当对应好的想到的就是算术运算式的处理,然后自然就会想到后缀表达式(逆波兰式)的运用^_^!不好以前数据结构学得不错,也写过一个后缀表达式的计算器。不过如果你不熟悉的话一起来复习一下:
比如处理表达式(a + b * c)* d:
好了,大概理论讲完了。下面先实现一个这个表达式分析器吧!