2009-11-18 2 views
2

Я делаю приложение, которое будет анализировать команды в Scala. Пример команды будет:Подход к анализу текста в Scala

todo get milk for friday 

Таким образом, план должны иметь довольно умный анализатор разорвать линию друг от друга и признать командную часть и тот факт, что есть ссылка на время в строке.

В общем, мне нужно сделать токенизатор в Scala. Поэтому мне интересно, какие у меня варианты для этого. Я знаком с регулярными выражениями, но я планирую сделать в SQL, как функция поиска также:

search todo for today with tags shopping 

И я чувствую, что регулярные выражения будут негибкие исполнители команды с большим количеством вариаций. Это заставляет меня думать о реализации какой-то грамматики.

Каковы мои варианты в этом отношении в Scala?

ответ

2

Вот слайды из презентации я сделал в сентябре 2009 года на Scala комбинаторов синтаксического анализа. (http://sites.google.com/site/compulsiontocode/files/lambdalounge/ImplementingExternalDSLsUsingScalaParserCombinators.ppt) Продемонстрирована реализация простого логотипа. Это может дать некоторые идеи.

1

Scala имеет библиотеку анализатора (scala.util.parsing.combinator), которая позволяет писать парсер непосредственно из его спецификации EBNF. Если у вас есть EBNF для вашего языка, должно быть легко написать парсер Scala. Если нет, лучше сначала попытаться определить свой язык формально.

Смежные вопросы