#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.