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; }