解析器模式

定义

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

文法

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

应用场景

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

角色划分

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

案例

  • 原理案例:demo
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容