Skip to content

the design and implementation of the dsl language

Notifications You must be signed in to change notification settings

MrPluto0/dslBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DSL 解释器的设计与实现

引子

领域特定语言(Domain Specific Language,DSL)可以提供一种相对简单的文法,用于特定领域的业务流程定制。

定义一个领域特定脚本语言,这个语言能够描述在线客服机器人(机器人客服是目前提升客服效率的重要技术,在银行、通信和商务等领域的复杂信息系统中有广泛的应用)的自动应答逻辑,并设计实现一个解释器解释执行这个脚本,可以根据用户的不同输入,根据脚本的逻辑设计给出相应的应答。

本程序将模拟如下一个客服机器人场景:

某家餐厅在长久的经营下,营造了良好的口碑,每天三个时间段均门庭若市,为了区别其它订餐方式,商家决定不使用普通的订餐软件,而增设自己的订餐机器人,能够使得客户提前预约与订购事物,在此基础上的长远发展是,机器人可以为其自动排号,通知客户烹饪时间,就餐时间等,如此一来,节约了众多人力成本,也方便了客户。

要点

注:同目录下的**report.pdf**为实验报告

注:同目录下的**/server/doc/doc-page/index.html**中包含着对服务端的注释文档,属于实验报告的超集,移步其查阅详细内容。

本程序开发的解释器整体分为客户端与服务端,以 NodeJs 为核心语言,对设计的 DSL 进行编译解析(Tokenize,Parse)生成 AST,再对其分析执行。

  1. 核心设计:DSL 语言的设计与解释器的实现(Token,AST...)
  2. 借助 WebSocket 完成服务端与客户端的全双工通信(TCP)。
  3. 借助 Electron + Quasar 框架 来开发简易的客户端交互界面。
  4. 借助 Mocha/Chai 来完成单元测试。
  5. 借助 Log4js 来完成日志记录。
  6. 借助 RSA 非对称加密聊天信息。

跑起来

服务端

模块安装

// or npm install
yarn

运行服务

node app.js

单元测试

npm run unit

覆盖度测试

npm run coverage

客户端

模块安装

// or npm install
yarn

Quasar 安装

yarn global add @quasar/cli

启动服务

quasar dev -m electron

打包 (windows)

quasar build -m electron

About

the design and implementation of the dsl language

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published