Формальные грамматики для языков программирования и других применений

Кото­вич Лео­нид Леонидович,
доцент кафед­ры Мате­ма­ти­че­ско­го обес­пе­че­ния вычислительных
систем МИРЭА, кан­ди­дат тех­ни­че­ских наук

Веро­ят­но, каж­дый язык наро­дов мира име­ет свою грам­ма­ти­ку, и в этих грам­ма­ти­ках нема­ло исклю­че­ний из пра­вил, сино­ни­мов и слов, име­ю­щих раз­лич­ное толкование.

Фор­маль­ные грам­ма­ти­ки для язы­ков про­грам­ми­ро­ва­ния гораз­до про­ще, и они не дают воз­мож­но­сти раз­лич­но­го тол­ко­ва­ния напи­сан­но­го. Соблю­де­ние пра­вил таких грам­ма­тик поз­во­ля­ет про­грам­ми­стам писать пра­виль­ные, син­так­си­че­ски вер­ные ком­пью­тер­ные программы.

Каж­дая фор­маль­ная грам­ма­ти­ка порож­да­ет после­до­ва­тель­но­сти сим­во­лов, кото­рые, вме­сте взя­тые, назы­ва­ют­ся «язы­ком».

Мы рас­смот­рим при­ме­ры грам­ма­тик, порож­да­ю­щих неболь­шие фраг­мен­ты тек­ста Вет­хо­го Заве­та, все чис­ла рим­ской систе­мы счис­ле­ния и совсем про­стые «язы­ки», состо­я­щие из несколь­ких слов.

Нако­нец, уви­дим грам­ма­ти­ку, кото­рая порож­да­ет «язык», состо­я­щий из рус­ских фраз: «Пошел ты в баню, хорек немы­тый!», «Да пошел ты, беге­мот небри­тый!», «Шел бы ты в баню!» и дру­гих подобных.