语法分离-构建可进化的语言解析项目

能接受某种语言做为扩展的项目,一般都会内置一个代码解析器。算法

代码解析器比较复杂,一般是把语法解析和语法树解析放在一块儿:边解析代码,边构建数据结构。数据结构

若是把语法做为一种配置文件分离出来,那么就能够设计通用的语法解析算法,让语言解析的复杂度下降。架构

新的架构须要新的抽象:语法抽象。设计

语法组合方式一般分为:顺序结构,分支结构,嵌套结构。而基本语法包括:字符串,字符类,无关紧要,重复和没有。字符串

顺序结构: a b c 分支结构: [a b c] 嵌套结构: [a [a b] ] 字符串是连续的字符:abc 字符类是某类字符的集合:[:alpha] 无关紧要: a? 重复: a+ 没有: !a 能扩展的应用程序大部分都接受某种形式的语法文本做为配置文件,从而构建定制较为复杂的同类产品。产品

随着用户需求的变化,这种形式化的语言也变得复杂。大部分产品中解析这种形式语言的代码是一个总体,并无将语言分离出来,而是将语言规则和生成可处理的数据结构合成一体。扩展

这一般很快,并且也不太复杂。但随着语法需求的变化,这段代码成为最为频繁的改动部分,并且愈来愈复杂。配置

这种状况致使语言解析类产品的升级很是缓慢,由于牵一发而动全身,某个部分的修改可能致使相关的许多代码发生变化。语法

但这部分代码复杂到必定程度,即便最聪明的人也会感到沮丧。也许新的语言类产品诞生,也许这个产品成为历史。程序

相关文章
相关标签/搜索