Мова та метамова, Детальна інформація
Мова та метамова
Дужки {} називаються ітераційними. З їх використанням поняття ідентифікатора з останнього прикладу можна задати так:
<Ід> ::=<Б> { <Б> | <Ц> }
<Б> ::= 'A' | 'B' | 'C'
<Ц> ::= '0' | '1'
або навіть так:
<Ід> ::=( 'A' | 'B' | 'C' ){ 'A' | 'B' | 'C' | '0' | '1' }.
Приклад 4. У мовах програмування широко використовується поняття "список імен, розділених комами". Структуру таких списків можна задати РБНФ
<список імен> ::= <ім'я>{','<ім'я>}.
Означення змінних у Паскаль-програмі складається з довільного числа списків змінних, за якими після двокрапки записано ім'я типу та ';'. Списків з іменами типів може взагалі не бути. Будь-якому зі списків може передувати слово var (перед першим воно обов'язкове). Це слово відокремлюється від імені хоча б одним пропуском. Якщо обмежитися типами integer та real, то синтаксис означення змінних можна задати РБНФ
<означення змінних> ::= [ 'var '<список імен> ':' <ім'я типу> ';'
{ ['var ']<список імен>':'<ім'я типу>';' }
]
<ім'я типу> ::= 'integer' | 'boolean'
Оператори мови Паскаль, на відміну від означень, не закінчуються роздільником ';', і синтаксис непорожньої послідовності операторів задається РБНФ
<послід. операторів> ::= <оператор> {';' <оператор>}\xF0E7
Приклад 5. Розглянемо вирази з цілими сталими, в яких можуть бути виклики одномісної функції odd. Виразом є ціла стала, а також:
вираз у дужках,
два вирази й знак бінарної операції між ними,
вираз із знаком унарної операції на початку,
виклик функції odd із виразом у дужках.
Ці неформальні, але однозначні правила легко перекладаються на мову БНФ. Нехай позначає вираз (англійське Expression), – сталу (Constant), – знак бінарної (двомісної) операції (Binary Operation Sign), – знак унарної (одномісної) операції (Unary Operation Sign), – ім'я функції (Function Name). Тоді
::= | '('')' | |
|'('')'
::= <Ц>{<Ц>}
(уточнення інших нетерміналів залишається читачеві, див. підр. 2.2 ). \xF0E7
4. Синтаксичні діаграми
Мова форм Бекуса-Наура – не єдина метамова для описання структури конструкцій мов програмування. Досить поширеною є також метамова синтаксичних діаграм.
В основі цієї метамови також лежать нетермінальні й термінальні символи. Але тут вони записуються у прямокутниках та колах (овалах) відповідно. Наприклад, нетермінали та <оператор> позначаються так:
Відповідно термінальні символи '(' та else мають вигляд
<Ід> ::=<Б> { <Б> | <Ц> }
<Б> ::= 'A' | 'B' | 'C'
<Ц> ::= '0' | '1'
або навіть так:
<Ід> ::=( 'A' | 'B' | 'C' ){ 'A' | 'B' | 'C' | '0' | '1' }.
Приклад 4. У мовах програмування широко використовується поняття "список імен, розділених комами". Структуру таких списків можна задати РБНФ
<список імен> ::= <ім'я>{','<ім'я>}.
Означення змінних у Паскаль-програмі складається з довільного числа списків змінних, за якими після двокрапки записано ім'я типу та ';'. Списків з іменами типів може взагалі не бути. Будь-якому зі списків може передувати слово var (перед першим воно обов'язкове). Це слово відокремлюється від імені хоча б одним пропуском. Якщо обмежитися типами integer та real, то синтаксис означення змінних можна задати РБНФ
<означення змінних> ::= [ 'var '<список імен> ':' <ім'я типу> ';'
{ ['var ']<список імен>':'<ім'я типу>';' }
]
<ім'я типу> ::= 'integer' | 'boolean'
Оператори мови Паскаль, на відміну від означень, не закінчуються роздільником ';', і синтаксис непорожньої послідовності операторів задається РБНФ
<послід. операторів> ::= <оператор> {';' <оператор>}\xF0E7
Приклад 5. Розглянемо вирази з цілими сталими, в яких можуть бути виклики одномісної функції odd. Виразом є ціла стала, а також:
вираз у дужках,
два вирази й знак бінарної операції між ними,
вираз із знаком унарної операції на початку,
виклик функції odd із виразом у дужках.
Ці неформальні, але однозначні правила легко перекладаються на мову БНФ. Нехай
|
(уточнення інших нетерміналів залишається читачеві, див. підр. 2.2 ). \xF0E7
4. Синтаксичні діаграми
Мова форм Бекуса-Наура – не єдина метамова для описання структури конструкцій мов програмування. Досить поширеною є також метамова синтаксичних діаграм.
В основі цієї метамови також лежать нетермінальні й термінальні символи. Але тут вони записуються у прямокутниках та колах (овалах) відповідно. Наприклад, нетермінали та <оператор> позначаються так:
Відповідно термінальні символи '(' та else мають вигляд
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021