Создание регулярных выражений с партерами пакетов в Scala - PullRequest
1 голос
/ 02 декабря 2010

У меня есть два синтаксических анализатора пакета в scala:

val symbols : PackratParser[String] =
    "{" | "}" | ">"

val keywords : PackratParser[String] =
    "BOOL" | "INT"

Я хочу создать синтаксический анализатор, который может распознавать, состоит ли оператор из одного или нескольких из этих двух анализаторов.Обычно я делаю это так:

val statement : PackratParser[String] =
    regex( "[symbols | keywords]+".r )

Но это не сработает, потому что они думают, что мне нужны настоящие токены "символов" или "ключевых слов" ... Кто-нибудь может помочь?

1 Ответ

4 голосов
/ 02 декабря 2010

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

val statement : PackratParser[List[String]] =
    rep1(symbols | keywords)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...