首页 > 解决方案 > 如何从具有逻辑表达式结构的字符串制作多级对象?

问题描述

作为初学者,我不知道我可以从什么开始。我需要实现将字符串转换为具有特定结构的对象的函数,如下所示(原始字符串可能具有其他数量的级别、条件等):

const str = `time !== 10 && (state === 'Ready' || state === 'Pending')`;

const result = {
  and: [
    {
      field: 'time',
      expression: '!==',
      value: 10
    },
    {
      or: [
        {
          field: 'state',
          expression: '===',
          value: 'Ready'
        },
        {
          field: 'state',
          expression: '===',
          value: 'Pending'
        }
      ]
    }
  ]
}

标签: javascripttypescriptalgorithm

解决方案


您提到的结构称为抽象语法树(AST)。这是一种常用的数据结构,可以表示属于一种语言的词的抽象结构。

您的字符串似乎是按中缀顺序编写的:您可以尝试实现分流场算法以从字符串构建 AST。

正如评论中所说,这不是初学者的问题。如果你在实现调车场算法之前有一些数据结构、算法、语言/自动机理论和计算机编程方面的经验会更好。


推荐阅读