Что не так с этой грамматикой ParseKit?

Вот документ, который я пытаюсь разобрать:

Tha Dhi Thom Num ThaKaThaRiKiTaThaKa 
ThaKaThaRiKiTaThaKa = Ta Tha Chap Tha Ki Ta Tha Ka

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

@start = expr;

expr = singleExpr+ phraseDictionary*;

singleExpr = aksharaGroup;

phraseDictionary = phrase '='! aksharaGroup;

phrase = Word;

aksharaGroup = akshara+ ('/'! noteDuration)?;

akshara = tha | dhi | thom | num | ki | ta | ka | chap | phrase;

noteDuration = Number;

tha = 'Tha';
dhi = 'Dhi';
thom = 'Thom';
num = 'Num';
ki = 'Ki';
ta = 'Ta';
ka = 'Ka';
chap = 'Chap';

Часть, в которой у меня возникают проблемы, - это фразаDictionary - вторая ThaKaThaRiKiTaThaKa анализируется как фраза, akshara и aksharaGroup, как и ожидалось, но затем я получаю исключения, когда я ожидаю, что она будет соответствовать фразеDictionary.

Expected : /
Line : 2
Near : = Ta 
Found : =

Expected : Uppercase Word
Line : 2
Near : = Ta 
Found : =

Expected : «EOF»
Line : 2
Near : = Ta 
Found : =

С бесконечным просмотром вперед ParseKit не должен ли он продолжить и сопоставить грамматику фразыDictionary?

Что мне не хватает?

Спасибо, Шридхар


person sridhar_rajagopal    schedule 04.09.2013    source источник


Ответы (1)


Разработчик ParseKit здесь.

Ваша грамматика работает для меня с ParseKit head of trunk в коде Google.

Вот вывод PKAssembly из синтаксического анализа:

[Tha, Dhi, Thom, Num, ThaKaThaRiKiTaThaKa, ThaKaThaRiKiTaThaKa, Ta, Tha, Chap, Tha, Ki, Ta, Tha, Ka]Tha/Dhi/Thom/Num/ThaKaThaRiKiTaThaKa/ThaKaThaRiKiTaThaKa/=/Ta/Tha/Chap/Tha/Ki/Ta/Tha/Ka^

Стек (внутри квадратных скобок) и знак вставки в конце указывают на то, что синтаксический анализатор, созданный на основе вашей грамматики, смог успешно распознать введенные вами данные до конца.

person Todd Ditchendorf    schedule 24.10.2013
comment
Спасибо за ответ! Извините, я забросил это на некоторое время и теперь возвращаюсь к этому. Я попробую еще раз с последним кодом parsekit и вернусь. - person sridhar_rajagopal; 18.01.2017