2015-08-11 13 views
0

Я посмотрел на Google для знаю, если это было возможно создать LL анализатор с использованием грамматики BNF, но я видел на википедии, что они используют что-то вродеМожно ли создать парсер LL с использованием грамматики BNF?

S → F 
S → (S + F) 
F → a 

, которая не является грамматикой BNF. Можно ли использовать грамматику BNF для создания парсера LL, или вам нужно использовать только грамматику LL?

Thank's

+0

Да, это абсолютно возможно. BNF - это лишь один из нескольких форматов спецификаций, которые вы можете использовать - на самом деле это вопрос личного предпочтения. –

+0

У вас есть учебник, чтобы посоветовать мне создать парсер LL с использованием грамматики BNF? не нашли в google:/ Thx –

+0

Увы, я этого не делаю. Если у вас есть конкретный пример грамматики в не-BNF, который вы не можете понять, как преобразовать, отправьте вопрос об этом здесь, и кто-то, скорее всего, сможет помочь. –

ответ

0

Да, вы можете. BNF - это всего лишь обозначение для представления контекстных свободных грамматик. Ориентировочно :: = есть стрелка, <symbol>, который появляется слева является нетерминальный и «литералы» являются терминальными символами (см here)

Примите во внимание, что не все контекстно-свободные грамматики LL (1) , есть грамматики, у которых нет парсера LL.

Если вы используете генератор парсера, вы быстро узнаете, что ваша грамматика LL или нет. Но если это не так, это может быть трудно исправить (особенно если у вас нет опыта в теории языка).

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

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