0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 10
|
|
1 | |
Формы Бэкуса Науэра05.01.2013, 17:56. Показов 7309. Ответов 10
Метки нет (Все метки)
0
|
05.01.2013, 17:56 | |
Ответы с готовыми решениями:
10
Формы Бэкуса-Науэра Расширенные формы Бэкуса-Наура (синтаксический анализатор) Преобразовать формы к виду расширенных форм Бэкуса-Наура. Запись алгоритма сортировки выбором в виде РБНФ (расширенной формы Бэкуса - Наура) |
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
05.01.2013, 18:46 | 2 |
Не ясно что именно записать. Объявление массива, список инициализации, какое-то текстовое представление... Что именно? Приведите пример.
0
|
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 10
|
|
05.01.2013, 19:11 [ТС] | 3 |
Извиняюсь - не правильно сформулировал вопрос. Никак не могу понять как записывается грамматика, прочитал много по этой теме, но как это записать с помощью грамматики так и не понимаю. Хоть кто-нибудь объяснил бы на пальцах) Надо записать вот это:
Для языка Cи Тип данных: int, float Операторы: присвоить, for, continue, if Операции: +, *,/, >, != Одномерный массив
0
|
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
|
|
05.01.2013, 19:22 | 4 |
В правильности не уверен.
Код
<array-declaration> ::= <type> <white-space> <name> "[" <constant> "]" ";" <type> ::= "int" | "char" | "long" | "float" | "double" <name> ::= <non-digit> | <name> <digit> |<name><non-digit> <constant> ::= <digit> | <constant> <digit> <white-space> ::= " " <nondigit> ::= "_" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" | "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
1
|
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 10
|
||||||
05.01.2013, 19:47 [ТС] | 5 | |||||
Вот пример для Pascal тут все немного изменено для программы. Мне впринципе примерно тоже и надо сделать только для си:
0
|
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
|
|
05.01.2013, 20:12 | 6 |
Код
<identifier> ::= <nondigit> | <identifier> <nondigit> | <identifier> <digit> <nondigit> ::= "_" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" | "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" <constant> : <integer-constant> | <floating-constant> <integer-constant> ::= <nonzero-digit> | <decimal-constant> <digit> <nonzero-digit> : "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" <floating-constant> ::= <fractional-constant> | <fractional-constant> <exponent-part> | <digit-sequence> <exponent-part> # <fractional-constant> ::= <digit-sequence> "." <digit-sequence> | "." <digit-sequence> | <digit-sequence> "." <exponent-part> ::= "e" <sign> <digit-sequence> | "E" <sign> <digit-sequence> | "e" <digit-sequence> | "E" <digit-sequence> # <sign> ::= "+" | "-" <digit-sequence> ::= <digit> | <digit-sequence> <digit> <declaration> ::= <declaration-specifiers> <init-declarator-list> ";" <declaration-specifiers> ::= <type-specifier> <type-specifier> ::= "int" | "float" <init-declarator-list> ::= <init-declarator> <init-declarator> : <declarator> | <declarator> "=" <initializer> <declarator> ::= <direct-declarator> <direct-declarator> ::= <identifier> | <direct-declarator> "[" <assignment-expression> "]" | <direct-declarator> "[" "]" <initializer> ::= <assignment-expression> | "{" <initializer-list> "}" <initializer-list> ::= <designation> <initializer> | <initializer> | <initializer-list> "," <designation> <initializer> | <initializer-list> "," <initializer> # <designation> ::= <designator-list> "=" # <designator-list> ::= <designator> | <designator-list> <designator> # <designator> ::= "[" <constant-expression> "]" # <primary-expression> ::= <identifier> | <constant> <postfix-expression> ::= <primary-expression> | <postfix-expression> "[" <expression> "]" <multiplicative-expression> ::= <postfix-expression> | <multiplicative-expression> "*"<postfix-expression> | <multiplicative-expression> "/" <postfix-expression> <additive-expression> ::= <multiplicative-expression> | additive-expression "+" <multiplicative-expression> <shift-expression> ::= <additive-expression> <relational-expression> ::= <shift-expression> | <relational-expression> ">" <shift-expression> <equality-expression> ::= <relational-expression> | <equality-expression> "!=" <relational-expression> <conditional-expression> ::= <equality-expression> <assignment-expression> ::= <conditional-expression> | <unary-expression> <assignment-operator> <assignment-expression> <assignment-operator> ::= "=" <expression> ::= <assignment-expression> <statement> ::= <expression-statement> | <selection-statement> | <iteration-statement> | <jump-statement> <expression-statement> ::= <expression> ";" | ";" <selection-statement> ::= "if" "(" <expression> ")" <statement> <iteration-statement> ::= "for" "(" <expression> ";" <expression> ";" <expression> ")" <statement> | "for" "(" ";" <expression> ";" <expression> ")" <statement> | "for" "(" <expression> ";" ";" <expression> ")" <statement> | "for" "(" <expression> ";" <expression> ";" ")" <statement> | "for" "(" ";" ";" <expression> ")" <statement> | "for" "(" ";" <expression> ";" ")" <statement> | "for" "(" <expression> ";" ";" ")" <statement> | "for" "(" ";" ";" ")" <statement> <jump-statement> ::= "continue" ";"
1
|
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 10
|
|
05.01.2013, 20:39 [ТС] | 7 |
+1 Спасибо! Вроде оно, пойду разбираться)
0
|
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
|
|
05.01.2013, 20:44 | 8 |
Наименования взяты из стандарта
http://www.open-std.org/jtc1/s... /n1124.pdf (см. Annex A)
0
|
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 10
|
|
06.01.2013, 16:24 [ТС] | 9 |
Блин все таки это немного сложновато - в том примере на Паскале все гораздо проще, да и программа проверяющая грамматику ругается на цифры(
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
06.01.2013, 18:53 | 10 |
Конечно. У Паскаля, в отличие от Плюсов, контекстно-независимая грамматика. Она действительно гораздо проще.
0
|
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 10
|
||||||
06.01.2013, 19:37 [ТС] | 11 | |||||
А вот на си - тоже вроде бы не так:
0
|
06.01.2013, 19:37 | |
06.01.2013, 19:37 | |
Помогаю со студенческими работами здесь
11
Форма Бэкуса-Наура Форма Бэкуса—Наура Формулы Бэкуса-Наура Нотация Бэкуса-Наура? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |