首页 > 解决方案 > 如何将 js 字符串转换为类似于 AST 树的东西?

问题描述

我需要转换看起来像这样的字符串表达式:

"SALARY('@JohnSmith') = {USER.workingHours} * {USER.hourlyRate}"

类似于 AST 的东西。例如:

const result = [
  {type: 'function', name: 'SALARY', params: ['@JohnSmith']},
  {type: 'entity', name: 'USER', fields: ['workingHours']},
  {type: 'mathOperation', operator: 'mutliply'},
  {type: 'entity', name: 'USER', fields: ['hourlyRate']} 
]

我需要一些关于图书馆的建议,它能够:

  1. 根据我的自定义规则执行一些标记化
  2. 根据我的规则为每个实体提供自定义回调函数

就像是:

tokenizer.register(someValiedRegexp, async callback(name, param) => ...)

提前致谢

标签: javascripttokenizeabstract-syntax-tree

解决方案


mmoo.js 可以完成这项工作。我只需要为标记化设置规则


推荐阅读