перевод английского описания переменной c в объявление переменной в стиле c, используя синтаксис BNF

#c #grammar #bnf

#c #грамматика #bnf

Вопрос:

Здравствуйте, я пытаюсь написать грамматику, которая переводит английское объявление c в объявление переменной в стиле c, например: «x — это массив из 10 указателей на int», «x — указатель на указатель на char», «x — указатель на struct типа type-struct» <-> int *x[10], char **x, тип структуры-struct *x .

Моя попытка: «{означает, что существует 0 или более элементов}»

 description ::= id declaration type
declaration ::= declarator
declarator  ::= pointer|function|array
pointer     ::= pointer-to {pointer-to} function|array
array       ::= array-of-n {pointer-to}
function    ::= function-that-return {pointer-to}
type        ::= int|char|short|float...|spec-struct
spec-struct ::= struct type-struct
  

Я хочу знать, подходит ли эта грамматика для создания синтаксического анализатора рекурсивного спуска.
Спасибо.

Комментарии:

1. У вас есть конкретный вопрос?

2. Есть ли причина, по которой вы просто не вызываете cdecl ? Если да, то в чем ваша конкретная проблема?

3. Я хочу знать, подходит ли эта грамматика для создания синтаксического анализатора рекурсивного спуска. Спасибо

Ответ №1:

Может быть, этого достаточно. Но я бы посоветовал вам проверить, подходит ли ваша грамматика с помощью инструмента LEX и YACC.