这是一个通用的文本解析器. 他的使用类似于正则表达式, 但比正则表达式更复杂, 可以用来解析更复杂的文本.
所谓"通用", 指的是只要你能用BNF按照一定的规则正确的将你要解析的内容描述出来, 那么就可以使用这个解析器来解析对应的文本.
举个例子说, 我现在想要解析MS SQL Server所使用的TSQL语言定义的查询语句, 那么比较直接的办法就是找来MSDN, 研究其中的SQL各种Statement的定义, 然后按部就班的写一个复杂的程序来解析. 显然, 要做这样一个解析器还是相当复杂和花时间的.
那我的这个BNFParser可以帮你作那些事呢?你可以这么做: 1.研究MSDN中关于TSQL的语法(这个步骤是不能省的, 要有这个知识储备); 2.将MSDN中相关的TSQL用BNF描述出来(事实上MSDN就是用类似BNF的语法来描述的, 只是细节表述不同罢了);3.将得到的BNF作为BNFParser的输入参数, 就行了.只要有了正确的BNF, 我的通用解析器就可以工作了, 你可以试着解析一些SQL语句, 然后会得到一个结果树, 这棵树的结构和你的BNF定义的结构一致, 你可以根据你的需要进行处理了.
在我的安装包中我就包含了一个这样的TSQL的解析器, 有兴趣的朋友可以试试.
要注意的是: 请勿将这个安装包作商业用途, 本软件的一切权利除明确声明外均由原作者保留.
若发现有什么问题, 可以发Email联系:bbtsoft@gmail.com
示例中的代码片段//创建Parser
GeneralBNFBasedParser bnfSyntaxParse