解析器模式

定义

给定一个语言,定义它的语法的一种表达式,并且定义一个解析器,该解析器使用该表达式来解析语言中的句子;

文法

“我是软件工程师”
“我”是主语,“是”表示谓语,“软件工程师”表示宾语,形成了“主谓宾”结果,这样的结构称之为文法。
那么可以根据文法造出更多复合文法的语句;
这种文法只是其中一种,还有其他的各种类别。

应用场景

  • 如果某个简单的语言需要解析执行,而且可以将该语言中的语句表示为一个抽象语法树时,可以使用该模式。
    例如:a + b + c - d表达式,其中“a、b、c、d”表示参数符号,不能够再推导,称之为终结符号。而“+、-”是算数运算符,运算符的左边和右边都是有意义的计算参数,称之为非终结符;
  • 在某些特定的领域出现不断重复的问题时,可以将该领域的问题转换为一种语法规则下的语句,然后构建解析器来解释该语句。
    例如:大小写转换、数字转字符串、字符串转数字、阿拉伯数字转中文等等。。这个转换过程就是一个不断重复的问题。这其中所有的阿拉伯数字、大小写字母、中文数字都是固定的,也称之为终结符号。但具体的内容不同,所以可以使用该模式来解决。

角色划分

  • 角色一:抽象表达式
  • 角色二:终结符表达式
  • 角色三:非终结符表达式
  • 角色四:解析器上下文

案例

  • 原理案例:demo

你可能感兴趣的:(解析器模式)