领域特定语言(Domain Specific Language,DSL)可以提供一种相对简单的文法,用于特定领域的业务流程定制。
定义一个领域特定脚本语言,这个语言能够描述在线客服机器人(机器人客服是目前提升客服效率的重要技术,在银行、通信和商务等领域的复杂信息系统中有广泛的应用)的自动应答逻辑,并设计实现一个解释器解释执行这个脚本,可以根据用户的不同输入,根据脚本的逻辑设计给出相应的应答。
本程序将模拟如下一个客服机器人场景:
某家餐厅在长久的经营下,营造了良好的口碑,每天三个时间段均门庭若市,为了区别其它订餐方式,商家决定不使用普通的订餐软件,而增设自己的订餐机器人,能够使得客户提前预约与订购事物,在此基础上的长远发展是,机器人可以为其自动排号,通知客户烹饪时间,就餐时间等,如此一来,节约了众多人力成本,也方便了客户。
注:同目录下的**
report.pdf
**为实验报告注:同目录下的**
/server/doc/doc-page/index.html
**中包含着对服务端的注释文档,属于实验报告的超集,移步其查阅详细内容。
本程序开发的解释器整体分为客户端与服务端,以 NodeJs 为核心语言,对设计的 DSL 进行编译解析(Tokenize,Parse)生成 AST,再对其分析执行。
- 核心设计:DSL 语言的设计与解释器的实现(Token,AST...)
- 借助 WebSocket 完成服务端与客户端的全双工通信(TCP)。
- 借助 Electron + Quasar 框架 来开发简易的客户端交互界面。
- 借助 Mocha/Chai 来完成单元测试。
- 借助 Log4js 来完成日志记录。
- 借助 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