javascript - 如何从具有逻辑表达式结构的字符串制作多级对象?
问题描述
作为初学者,我不知道我可以从什么开始。我需要实现将字符串转换为具有特定结构的对象的函数,如下所示(原始字符串可能具有其他数量的级别、条件等):
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'
}
]
}
]
}
解决方案
您提到的结构称为抽象语法树(AST)。这是一种常用的数据结构,可以表示属于一种语言的词的抽象结构。
您的字符串似乎是按中缀顺序编写的:您可以尝试实现分流场算法以从字符串构建 AST。
正如评论中所说,这不是初学者的问题。如果你在实现调车场算法之前有一些数据结构、算法、语言/自动机理论和计算机编程方面的经验会更好。
推荐阅读
- react-native - 获取 API 调用在反应原生 android 中失败以获取自签名证书
- php - 使用已经打开的 PHP 套接字
- java - Java Spring Boot Hibernate 原生查询
- python - 如何在同一图表上绘制包含日期和整数的列表(相关性)?
- php - wordpress 插件激活/停用功能未触发
- spring - 如何让 JNDI 在 Spring 中查找可选
- c# - 使用 Nest DSL 语法过滤多个术语的 ElasticSearch 嵌套查询未按预期工作
- r - 如何合并子文件夹中的 .txt 文件并以与使用 R 的主文件夹相同的方式命名它们?
- php - 使用带有一些过滤条件的 DB::table
- sql - 如何在 SQL 的一个 UPDATE 语句中进行多项操作