PegJS: Как сопоставить фразу в окружающем тексте

Я пытаюсь сделать парсер с PegJS

Я пытаюсь разобрать что-то вроде этого..

I would like to email john@gmail.com today or tomorrow.

Как бы вы сделали парсер, который соответствует определенным фразам, например email john@gmail.com и выбросить окружающие символы и пространство (если они существуют).

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

Кроме того, кто-то может сломаться negative look aheads? (механика и там синтаксис)
Кажется, они и есть ответ, но мне трудно найти информацию о них.

Спасибо,
Geo.

1 ответ

Хорошо, я понял это. Эта работа.

find_tokens = 
 (!tokens .)* 
 result: (token: tokens { return token; })
 (!tokens .)*
 { return result; }
Другие вопросы по тегам