Разбор строки в пользовательский объект на основе различных критериев - PullRequest
1 голос
/ 24 декабря 2011

В рамках небольшого проекта, над которым я работаю, мне нужно иметь возможность анализировать строку в пользовательском объекте, который представляет действие, дату и несколько других свойств.Сложность в том, что входная строка может быть разных видов, и все они должны быть правильно проанализированы.

Входные строки могут иметь следующие форматы:

Перейти к работе завтра в 9 утра

  • Мойте машину в понедельник, в 15:00.
  • Позвоните врачу в следующий вторник в 10:00
  • Разбуди меня каждый день в 7:00 * 10101

И выходной объект будет выглядеть примерно так:

{
   "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 Ответ

1 голос
/ 24 декабря 2011

Я мало что знаю о разборе грамматики, но кое-что здесь может помочь.

Сначала я подумал, что синтаксис вашего предложения выглядит довольно непротиворечивым

Первые 3-4 слова - это, как правило, VERB текст NOUN, за которым следует некоторая форма времени. Если общие параметры ограничены формой предложения, вы можете жестко закодировать некоторые правила синтаксического анализа.

Я также натолкнулся на пару парсеров грамматики js, которые могут вас где-то найти:

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

Это интересная проблема, которая у вас есть. Пожалуйста, обновите это позже вашими решениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...