Указание количества в PEG.js

Я играю с PEG.js

Как я могу разрешить вводить ровно 2 буквы?

Это мой подход:

start = word 
word = [A-Za-z]{2}

Я использовал {2} из регулярного выражения, но, к сожалению, он не работает с PEG.js.


person Evgenij Reznik    schedule 30.10.2015    source источник
comment
Что-то вроде { // function twoLetterWord(o) { // if (o.length == 2) { // return o // } // else fail; // } // } // // start = word // word "word" // = word:[A-Za-z]+ { return twoLetterWord(word); }? Однако я не смог найти способ сломать парсер вручную. :(   -  person Wiktor Stribiżew    schedule 30.10.2015
comment
Если я не ошибаюсь, чтобы выдать ошибку, которую вы используете: ошибка (сообщение об ошибке). Вы также можете передать в него поле location() (в любом случае оно будет содержать его по умолчанию).   -  person Ricardo Ferreira da Silva    schedule 04.07.2018


Ответы (2)


Вы можете указать класс букв, а затем использовать две буквы для вашего слова. Хотя синтаксис некрасивый, я не смог найти другого способа в документация.

start = word
word = letter letter
letter = [A-Za-z]
person thibpat    schedule 30.10.2015
comment
Вы можете добавить i после закрывающей квадратной скобки, чтобы не учитывать регистр. Кроме того, вы можете продублировать буквенный класс, хотя это и не очень красиво: [a-z]i [a-z]i. - person Toothbrush; 04.11.2015

Насколько я вижу, вы можете использовать два варианта. Первый вариант принимает только слово из двух букв.

start = word 
word = [A-Za-z][A-Za-z]

Этот второй вариант выполняет некоторую постобработку в javascript.

start = word 
word = word:([A-Za-z]+)
{
    if(word.length != 2) error("Word does not have two letters);
    else return word;
}
person Ricardo Ferreira da Silva    schedule 04.07.2018