Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursova_metodychka(2).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.39 Mб
Скачать

2.1.1. Приклад визначення натуральних чисел за допомогою формул бнф

<нуль> ::= 0

<ненульова цифра> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<цифра> ::= <нуль> | <ненульова цифра>

<послідовність цифр> ::= <нуль> | <ненульова цифра> | <цифра><послідовність цифр>

<натуральне число> ::= <цифра> | <ненульова цифра><послідовність цифр>

В цьому прикладі 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – термінальні символи. Решта символів – не термінальні. Запис <ненульова цифра> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 слід читати ненульова цифра визначена як 1 або 2 або 3 або 4 або 5 або 6 або 7 або 8 або 9 або 10. Запис <цифра> ::= <нуль> | <ненульова цифра> слід читати цифра визначена як нуль або ненульова цифра.

2.1.2. Формули Бекуса-Наура для мови Pascal

<програма> ::= <заголовок програми> <блок> .

<заголовок програми> ::= program <і’мя> (<і’мя файла> {,<і’мя файла>});

<і’мя файла> ::= <і’мя>

<і’мя> ::= <буква> {<буква чи цифра>}

<буква чи цифра> ::= <буква> | <цифра>

<блок> ::= <розділ міток> <розділ констант> <розділ типів> <розділ змінних>

<розділ процедур і функцій> <розділ операторів>

<розділ міток> ::= <пусто> | label <мітка> {,< мітка >};

<мітка> ::= <ціле без знаку>

<розділ констант> ::= <пусто> | const <визначення константи>

{; <визначення константи>};

<визначення константи> ::= <і’мя> = <константа>

<константа> ::= <число без знаку> | <знак> <число без знаку> | <ім’я константи> |

<знак> <ім’я константи> | <рядок>

<число без знаку> ::= <ціле без знаку> | <дійсне без знаку>

<ціле без знаку> ::= <цифра> {<цифра>}

<дійсне без знаку> ::= <ціле без знаку> . <цифра> {<цифра>} |

<ціле без знаку> . <цифра> {<цифра>} E <порядок> |

<ціле без знаку> E <порядок>

<порядок> ::= <ціле без знаку> | <знак> <ціле без знаку>

<знак> ::= + | –

<ім’я константи> ::= <ім’я>

<рядок> ::= <символ> {<символ>}

<розділ типів> ::= <пусто> | type <визначення типу> {; <визначення типу>};

<визначення типу> ::= <ім’я> = <тип>

<тип> ::= <простий тип> | <складовий тип> | <вказівний тип>

<простий тип> ::= <скалярний тип> | <обмежений тип> | <ім’я типу>

<скалярний тип> ::= ( <ім’я> {, <ім’я>} )

<обмежений тип> ::= <константа> .. <константа>

<ім’я типу> ::= <ім’я>

<складовий тип> ::= <неупакований складовий тип> |

packed <неупакований складовий тип>

<неупакований складовий тип> ::= <регулярний тип> | <комбінований тип> |

<множинний тип> | <файловий тип>

<регулярний тип>::= array[ <тип індекса> {, <тип індекса>}] of <тип компонента>

<тип індекса> ::= <простий тип>

<тип компонента> ::= <тип>

<комбінований тип> ::= record <список полів> end

<список полів> ::= <фіксована частина> | <фіксована частина>

<варіантна частина> | <варіантна частина>

<фіксована частина> ::= <секція запису> {; <секція запису>}

<секція запису> ::= <ім’я поля> {, <ім’я поля>} : <тип> | <пусто>

<варіантна частина> ::= case <дискримінант> <ім’я типу> of <варіант> {; <варіант>}

<дискримінант> ::= <ім’я поля> : | <пусто>

<варіант> ::= <список міток варіанту> : ( <список полів>) | <пусто>

<список міток варіанту> ::= <мітка варіанту> {, <мітка варіанту>}

<мітка варіанту> ::= <константа>

<множинний тип> ::= set of <базовий тип>

<базовий тип> ::= <простий тип>

<файловий тип> ::= file of <тип>

<вказівний тип> ::= ^ <ім’я типу>

<розділ змінних> ::= <пусто> | var <опис змінної> {; <опис змінної>};

<опис змінної> ::= <ім’я> {, <ім’я>} : <тип>

<розділ процедур і функцій> ::= {<опис процедури чи функції>;}

<опис процедури чи функції> ::= <опис процедури> | <опис функції>

<опис процедури> ::= <заголовок процедури> <блок>

<заголовок процедури> ::= procedure <ім’я> |

procedure <ім’я> ( <розділ формальних параметрів>

{; <розділ формальних параметрів>});

<розділ формальних параметрів> ::= <група параметрів> | var <група параметрів> |

function <група параметрів> | procedure <ім’я> {, <ім’я>}

<група параметрів> ::= <ім’я> {, <ім’я>} : <ім’я типу>

<опис функції> ::= <заголовок функції> <блок>

<заголовок функції> ::= function <ім’я> : <тип результату> |

function <ім’я> ( <розділ формальних параметрів>

{; <розділ формальних параметрів>}) : <тип результату>;

<тип результату> ::= <ім’я типу>

<розділ операторів> ::= <складовий оператор>

<оператор> ::= <непозначений оператор> | <мітка> : <непозначений оператор>

<непозначений оператор> ::= <простий оператор> | <складний оператор>

<простий оператор> ::= <оператор присвоювання> | <оператор процедури> |

<оператор переходу> | <порожній оператор>

<оператор присвоювання> ::= <змінна> := <вираз> | <ім’я функції> := <вираз>

<змінна> ::= <повна змінна> | <компонентна змінна> | <вказівна змінна>

<повна змінна> ::= <ім’я змінної>

<ім’я змінної> ::= <ім’я>

<компонентна змінна> ::= <індексована змінна> | <позначення поля> | <буфер файла>

<індексована змінна> ::= <змінна-масив> [<вираз> {, <вираз>}]

<змінна-масив> ::= <змінна>

<позначення поля> ::= <змінна-запис> . <ім’я поля>

<змінна-запис> ::= <змінна>

<ім’я поля> ::= <ім’я>

<буфер файла> ::= <змінна-файл>^

<змінна-файл> ::= <змінна>

<вказівна змінна> ::= <змінна-посилання>^

<змінна-посилання> ::= <змінна>

<вираз> ::= <простий вираз>| <простий вираз> <операція відношення> <простий вираз>

<операція відношення> ::= = | <> | < | <= | > | >= | in

<простий вираз> ::= <доданок> | <знак> <доданок> |

<простий вираз> <адитивна операція> <доданок>

<адитивна операція> ::= + || or

<доданок> ::= <множник> | <доданок> <мультиплікативна операція> <множник>

<мультиплікативна операція> ::= * | / | div | mod | and

<множник> ::= <змінна> | <константа без знаку> | (<вираз>) |

<позначення функції> | <множина> | not <множник>

<константа без знаку> ::= <число без знаку> | <рядок> | <ім’я константи> | nil

<позначення функції> ::= <ім’я функції> | <ім’я функції> (<фактичний параметр>

{, <фактичний параметр>})

<ім’я функції> ::= <ім’я>

<множина> ::= [<список елементів>]

<список елементів> ::= <елемент> {, <елемент>} | <пусто>

<елемент> ::= <вираз> | <вираз> .. <вираз>

<оператор процедури> ::= <ім’я процедури> | <ім’я процедури> (<фактичний параметр> {, <фактичний параметр>})

<ім’я процедури> ::= <ім’я>

<фактичний параметр> ::= <вираз> | <змінна> | <ім’я процедури> | <ім’я функції>

<оператор переходу> ::= goto <мітка>

<порожній оператор> ::= <пусто>

<складний оператор> ::= <складовий оператор> | < вибираючий оператор > |

<оператор циклу> | <оператор приєднання>

<складовий оператор> ::= begin <оператор> {; <оператор>} end

< вибираючий оператор > ::= <умовний оператор> | <оператор варіанту>

<умовний оператор> ::= if <вираз> then <оператор>|

if <вираз> then <оператор> else <оператор>

<оператор варіанту> ::= case <вираз> of <елемент списку варіантів>

{; <елемент списку варіантів>} end

<елемент списку варіантів> ::= <список міток варіанту> : <оператор> | <пусто>

<список міток варіанту> ::= <мітка варіанту> {, <мітка варіанту>}

<оператор циклу> ::= <цикл з передумовою>| <цикл з післяумовою> |

<цикл з параметром>

<цикл з передумовою> ::= while <вираз> do <оператор>

<цикл з післяумовою> ::= repeat <оператор> {; <оператор>} until <вираз>

<цикл з параметром> ::= for <параметр циклу> := <список циклу> do <оператор>

<список циклу> ::= <початкове значення> to <кінцеве значення>|

<початкове значення> downto <кінцеве значення>

<параметр циклу> ::= <ім’я>

<початкове значення> ::= <вираз>

<кінцеве значення> ::= <вираз>

<оператор приєднання> ::= with <список змінних-записів> do <оператор>

<список змінних-записів> ::= <змінна-запис> {, <змінна-запис>}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]