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

时间:2011-12-24 01:30:59

标签: javascript json parsing string-parsing

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

输入字符串可以采用以下格式:

明天上午9点去上班

  • 周一下午3点洗车。
  • 下周二上午10点致电医生
  • 在下午2:30(下午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背景,但在语言设计,解析等方面没有什么超越学校课程。有没有更好的方法来解决这个问题?非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

我对语法分析知之甚少,但这里的内容可能有所帮助。

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

第一个3-4个单词一般是VERB文本NOUN,其次是某种形式的时间。如果总选项仅限于句子可以采用的形式,则可以对某些解析规则进行硬编码。

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

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

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