dsl是什么意思啊(DSL代表什么)
dsl是什么意思啊
转换步骤接收AST并对其进行遍历,在此过程中对节点进行添加、更新及移除等操作。Babel通过babel-traverse对其进行深度优先遍历,维护AST树的整体状态,并且可完成对其的替换,删除或者增加节点,这个方法的参数为原始AST和自定义的转换规则,返回结果为转换后的AST。
它继续向下找发现了一个字母'company'(因为找到的上一个值是"var"这个时候如果它发现下一个字符不是字母可能直接就会报错返回)并且后面是空格,生成
generator将更新后的AST转化成代码这里我们使用escodegen去生成,安装相关依赖
)实现的。解析过程有两个阶段:词法分析和语法分析,词法分析阶段把字符串形式的代码转换为令牌(tokens)流,令牌类似于AST中节点;而语法分析阶段则会把一个令牌流转换成AST的形式,同时这个阶段会把令牌中的信息转换成AST的表述结构。
DSL(DomainSpecifiedLanguage)领域专用语言。要理解什么是领域专用语言,需要先了解其创建背景。即为什么会诞生这样一种事物,其发明的目的是为了解决什么问题。
DSL代表什么
AST的作用不仅仅是用来在JavaScript引擎的编译上,我们在实际的开发过程中也是经常使用的,比如我们常用的babel插件将ES6转化成ES5、使用UglifyJS来压缩代码、css预处理器、开发WebPack插件、Vue-cli前端自动化工具等等,这些底层原理都是基于AST来实现的,AST能力十分强大,能够帮助开发者理解JavaScript这门语言的精髓。
分词/词法分析这个过程会将由字符组成的字符串分解成有意义的代码块,这些代码块统称为词法单元(token)。
如果是字母会继续往下看如果还是字母或者数字,会继续这一过程直到不是为止,这个时候发现找到的这个字符串是一个"var",是一个Keyword,并且下一个字符是一个"空格",就会生成
要理解DSL分类需要先理解一个概念。“元语言抽象”。它是指通过一种语言来构建另一种语言。比如Java就是构建在C上的语言。其中,从什么语言构建而来,这种构建来源的语言称为“宿主语言”。
我们可以看到,一个标准的AST结构可以理解为一个json对象,那我们就可以通过一些方法去解析和操作它,这里我们先提供一个*检测工具,大家可以自行去体验:
网络用语dsl
从上图中我们可以看到,JavaScript引擎做的第一件事情就是把JavaScript代码编译成抽象语法树。
我们会通过条件判断语句判断这个字符是字母,"/","数字",空格,"(",")",";"等等。
共同语言称为解决方案模型构建者用来表达解决方案中的词汇的基础。构建者将这些共同语言对应到模型中,在程序中就是模块名、在数据模型中就是实体名、在测试用例中就是对象。
如果能够让领域专家通过简单的编程方式描述领域中的所有活动和规则,那么就能在一定程度上保证描述的完整性。