领域特定语言
1、简介:
领域特定语言(Domain-Specific Language,DSL)是一种专注于某个应用程序领域的计算机语言。它与通用编程语言(General Purpose Language,GPL)不同,通用编程语言可以用来解决各种领域的问题,而领域特定语言则专注于解决特定领域的问题。
例如,HTML 是一种用于描述 Web 页面的标记语言,它是一种领域特定语言;CSS 是一种用于描述页面样式的语言,也是一种领域特定语言;SQL 是一种用于创建和检索关系型数据库的语言,也是一种领域特定语言。
领域特定语言的优点在于它能够提供更简洁、更易于理解和使用的语法来解决特定领域的问题。它能够提高开发效率,并且能够让非程序员更容易地参与到软件开发过程中来。
当然,领域特定语言也有其局限性。由于它只专注于特定领埴,因此在其他领域可能不太适用。此外,学习和使用领域特定语言可能需要一定的学习成本。
2、什么是领域特定语言
3、lexer
Lexer,也称为词法分析器,是一种软件组件,它将字符串分解为更小的单元,这些单元可以被语言理解。这些更小的单元被称为词法记号或词素。
词法分析器的作用是将源代码中的字符序列转换为记号序列。它通过扫描源代码,识别出各种记号,如关键字、标识符、常量、运算符等。这些记号将被传递给语法分析器进行进一步的处理。
SQL Token分类
- 注释
- 关键字
- 操作符
- 空格
- 字符串
- 变量
4、parser语法规则
上下文无关语法规则
- 推导式:表示非终结符到(非终结符或终结符)的关系。
- 终结符:构成句子的实际内容。可以简单理解为词法分析中的token.
- 非终结符:符号或变量的有限集合。它们表示在句子中不同类型的短语或子句。
5、Parser_LL
LL解析是一种自顶向下的解析方法,用于语法分析阶段的编译器设计。需要输入字符串、堆栈、给定语法的解析表和解析器。
LL解析表的构造需要满足一些条件,如语法必须没有左递归,不含二义性,并且必须是左因子化的,以便语法是确定性语法。这些条件是必要但不充分的。
LL:从左到右检查,从左到右构建语法树
6、Parser_LR
LR解析器是一种自底向上的解析器,用于解析上下文无关语法。
LR:从左到右检查,从右到左构建语法树
LL(K) > LR(1) > LL(1),括号里的内容构建语法树需要向下看的数量
7、Tools
进行语法分析
形成语法树
课程总结: