根据不同的标准将字符串解析为自定义对象

Parsing a string into a custom object based on different criteria

本文关键字:自定义 对象 字符串 标准      更新时间:2023-09-26

作为我正在进行的一个小项目的一部分,我需要能够将字符串解析为一个自定义对象,该对象表示操作、日期和其他一些属性。棘手的部分是输入字符串可以有各种形式,都需要正确解析。

输入字符串可以是以下格式:

明天早上9点上班

  • 周一下午3点给我洗车
  • 下周二上午10点打电话给医生
  • 3天内下午2:30填写退税单
  • 每天早上7点叫醒我

输出对象看起来像这样:

{
   "Action":"Wash my car",
   "DateTime":"2011-12-26 3:00PM", // Format is irrelevant at this point
   "Recurring":False,
   "RecurranceType":""
}

起初,我想构造某种树来表示不同的状态(On, In, Every等),这些状态有不同的结果和进一步的状态(候选状态机,对吧?)然而,我越想这个问题,它就越像一个语法解析问题。由于形成句子的方法(数量有限),看起来需要实现某种语法解析算法。

另外,我在前端做这个,所以JavaScript是这里选择的语言。后端将用Python编写,如果有必要,可以通过调用AJAX方法来使用,但我更愿意将其全部保留在JavaScript中。(老实说,我不认为语言是一个大问题)。

那么,我是不是有点不自量力了?我有很强的JavaScript背景,但在语言设计、解析等方面,除了学校课程之外什么都没有。有更好的方法来解决这个问题吗?

我不太懂语法解析,但这里有些东西可能会有所帮助。

我的第一个想法是你的句子语法似乎很一致

前3-4个词一般是动词文本名词,后面跟着某种形式的时间。如果所有选项仅限于句子可以采用的形式,则可以硬编码一些解析规则。

我还遇到了几个js语法解析器,可能会让你的地方:

http://jscc.jmksf.com/http://pegjs.majda.cz/http://www.corion.net/perl-dev/Javascript-Grammar.html

这是一个有趣的问题。请稍后将此更新为您的解决方案