2016-01-05 4 views
0

Я использую генератор парсера pegjs для проекта, и у меня возникают трудности с созданием грамматики, которая должна соответствовать всем словам вплоть до набора слов, которые он не должны совпадать. в качестве примера в строке «дверь желтая». Я хочу, чтобы все слова совпадали до тех пор, пока не появится, скажите парсера pegjs, чтобы начать синтаксический анализ от слова. Коллекция слов, которые я хочу для анализатора, должна быть «есть», «есть» и «из».pegjs регулярное выражение соответствует словам up до тех пор, пока не будет найдено слово из коллекции слов

текущее правило грамматики выглядит следующим образом:

subject "sub" = 
s:[a-zA-Z ]+ { return s.join("").trim()} 

Как я могу создать взгляд вперед, который останавливает парсер из включая мою коллекцию на словах?

(!of|is|has) 

ответ

-1

Это будет работать

.+(?=\s+(of|is|has)) 

Это соответствует одному или более любых символов (кроме разрывов строк), пока он не встречает ни «из», «есть», или «есть» (через положительное взгляд) с пробелом перед ними.