Формально-логическая составляющая информационного ресурса

Приступая к изучению какого-либо искусственного языка (например, языков программирования) важно помнить, что в данном случае предложение нужно грамотно строить синтаксически и только в этом случае оно будет иметь смысл, т.е. текст программы должен отвечать набором жестких правил, иначе он будет «непонятным» с точки зрения ЭВМ. В идеальном случае любое предложение на любом языке должно быть коррекрым и семантически, т.е. иметь разумный смысл и синтаксически, т.е. иметь правильную грамматику.

Для того, чтобы понять семантику предложения нужно понять его смысл, чтобы понять синтаксис предложения нужно рассматривать его грамматическую структуру.

Например, проведем синтаксический разбор предложения:

The man hits the dog.

Тип предложения – простое.

The man – подфраза существительного, hits – глагол, The dog – подфраза существительного.

Опишем синтаксис простого предложения с помощью форм Бэкуса Наура (Б.Н.Ф.). Основные синтаксические конструкции записываются в скобках <>; а значок ::= означает «определяется как».

<Простое предложение>::=<подфраза существительного>

<глагол>

<подфраза существительного>

<подфраза существительного>::=<артикл>

<существительное>

<существительное>::=man

<глагол>::=hits

<существительное>::=dog

<артикль>::=the.

Таким образом, используя определение простого предложения можно построить их бесконечное множество, и хотя они будут корректны синтаксически, но не всегда будут иметь смысл, т.е. не будут корректно-семантическими. (Применительно к естественным языкам).

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

Формальный язык – множество конечных последовательносте символов, которые описываются системами правил определенного вида. Система правил – грамматика, т.е. множество правил, которые выражают грамматические отношения между членами предложения.

Большинство современных работ, посвященных языкам программирования высокого уровня содержит раздел, в котором определяется синтаксис данного языка программирования. Например, синтаксис языка Pascal описывается набором синтаксических диаграмм. Рассмотрим одну из таких диаграмм, которая иллюстрирует понятие множитель:

 
 

 

 


Число различных путей по данной синтаксической диаграмме бесконечно и каждый из них соответствует одному из возможных определений понятия множителя. Каждому узлу синтаксической диаграммы, изображенному в виде прямоугольника соотвествует своя синтаксическая диаграмма, которая определяет понятие внутри него. Подобный узел называется нетерминальным узлом, а соответствующее ему понятие – нетерминальным символом языка.

Если же узел синтаксической диаграммы изображен в виде круга, то такой узел называется терминальным, а соотвествующее ему понятие – терминальным символом языка.

Существует другой способ определения синтаксиса языка, альтернативный синтаксическим диаграммам – способ – форма Бэкоса Наура.

При использовании Ф.Б.Н. нетерминальные символы языка заключаются в <>, скобки или \. . Определение множителя, используя Ф.Б.Н.:

<Множитель>::=<без знаковая const>

\<переменная>

\<идентификатор функции>(<список выражений>)

\(<выражение>)

<Список выражений>::=<выражение>

\<выражение>, <выражение>

Вывод: нотация Ф.Б.Н. эквивалентна синтаксическим диаграммам. Любая синтаксически-корректная программа, записанная на некотором языке программирования может быть определена в нотации Ф.Б.Н. как нетерминальный символ некоторого языка, но важно помнить, что указанные синтаксические определения не составляют полного описания языка программирования.