2013-08-17 6 views
0

Следующая простая pegjs грамматика работает отлично:Почему pegjs не обрабатывать пробельные правила "«*

start 
    = sentence 

sentence 
    = word ws sentence 
/word 

word 
    = [a-z]* 

ws 
    = " " 

Он доступен в http://jsfiddle.net/4V3Zt/. График может быть также вставлен в http://pegjs.majda.cz/online.

Если изменить WS правило, чтобы позволить пробельные произвольным пространства:

ws 
    = " "* // add an asterisk to allow " ", " ", " ", ... 

разбора терпит неудачу с максимальным исключением стеки вызовов брошенным. (Если вы используете jsfiddle, вы видите исключение в инструментах браузера. Исключение возникает и в среде node.js, поэтому оно, безусловно, связано с pegjs).

Что не так с * в этом правиле ws?

ответ

1

Использовать + вместо * (для word).

* может соответствовать пустой строке; + требует хотя бы одного экземпляра.

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

  • Нет связанных вопросов^_^