js有没有好的语法解析实现

项目里的需求是, 在输入框输入快捷命令执行一些动作, 比如:
image.png

当选择完了动作后是这样的:
image.png

  1. 输入框里的sendMessage是一个动作名, 代码逻辑里其实映射了一个id.
  2. 后面的receiver和content也是动态选出来的参数.
  3. test1是执行的服务器名, 前面加!是为了标记这是一个执行资源.

以上就是输入框里展示出来的含义, 背后映射的是动作id, 参数列表,和执行资源id. 这些都是用正则匹配完成的, 感觉不是很好.
有没有做过类似需求的, 请教下有啥好的实现思路.

阅读 2k
3 个回答

感觉完全可以直接用JSON啊

{
  "method": "sendMessage",
  "params": {
    "receiver": "aaa",
    "content": 123
  },
  "server": "test1"
}

键名要是缩减下没有多几个字符,直观不是一点半点,扩展也简单,还是原生解析。

如果全文本的匹配让你觉得写匹配机制繁琐

能不能用阶梯型指令式的书写方法

把各个指令变成块,显示的就做区分

有!
借助 jison ,可以实现任何外部 DSL ,甚至可以实现任何编程语言的语法解析。但这是利器,也是重器,这种场景用,还不如正则。


开发快捷命令给普通用户使用是两头不讨好的行为,开发困难,用户学习起来也很麻烦。
这种操作完全可以用按钮、表单来完成,最多再加一个导出命令的功能,导出的命令可读性要求不高,JSON完全可以胜任,大不了就加一段文字注释。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题