Формально-логическая составляющая информационного ресурса
Приступая к изучению какого-либо искусственного языка (например, языков программирования) важно помнить, что в данном случае предложение нужно грамотно строить синтаксически и только в этом случае оно будет иметь смысл, т.е. текст программы должен отвечать набором жестких правил, иначе он будет «непонятным» с точки зрения ЭВМ. В идеальном случае любое предложение на любом языке должно быть коррекрым и семантически, т.е. иметь разумный смысл и синтаксически, т.е. иметь правильную грамматику.
Для того, чтобы понять семантику предложения нужно понять его смысл, чтобы понять синтаксис предложения нужно рассматривать его грамматическую структуру.
Например, проведем синтаксический разбор предложения:
The man hits the dog.
Тип предложения – простое.
The man – подфраза существительного, hits – глагол, The dog – подфраза существительного.
Опишем синтаксис простого предложения с помощью форм Бэкуса Наура (Б.Н.Ф.). Основные синтаксические конструкции записываются в скобках <>; а значок ::= означает «определяется как».
<Простое предложение>::=<подфраза существительного>
<глагол>
<подфраза существительного>
<подфраза существительного>::=<артикл>
<существительное>
<существительное>::=man
<глагол>::=hits
<существительное>::=dog
<артикль>::=the.
Таким образом, используя определение простого предложения можно построить их бесконечное множество, и хотя они будут корректны синтаксически, но не всегда будут иметь смысл, т.е. не будут корректно-семантическими. (Применительно к естественным языкам).
В отношении формальных языков грамматический разбор исходного текста программы является решающим шагом.
Формальный язык – множество конечных последовательносте символов, которые описываются системами правил определенного вида. Система правил – грамматика, т.е. множество правил, которые выражают грамматические отношения между членами предложения.
Большинство современных работ, посвященных языкам программирования высокого уровня содержит раздел, в котором определяется синтаксис данного языка программирования. Например, синтаксис языка Pascal описывается набором синтаксических диаграмм. Рассмотрим одну из таких диаграмм, которая иллюстрирует понятие множитель:
Число различных путей по данной синтаксической диаграмме бесконечно и каждый из них соответствует одному из возможных определений понятия множителя. Каждому узлу синтаксической диаграммы, изображенному в виде прямоугольника соотвествует своя синтаксическая диаграмма, которая определяет понятие внутри него. Подобный узел называется нетерминальным узлом, а соответствующее ему понятие – нетерминальным символом языка.
Если же узел синтаксической диаграммы изображен в виде круга, то такой узел называется терминальным, а соотвествующее ему понятие – терминальным символом языка.
Существует другой способ определения синтаксиса языка, альтернативный синтаксическим диаграммам – способ – форма Бэкоса Наура.
При использовании Ф.Б.Н. нетерминальные символы языка заключаются в <>, скобки или \. . Определение множителя, используя Ф.Б.Н.:
<Множитель>::=<без знаковая const>
\<переменная>
\<идентификатор функции>(<список выражений>)
\(<выражение>)
<Список выражений>::=<выражение>
\<выражение>, <выражение>
Вывод: нотация Ф.Б.Н. эквивалентна синтаксическим диаграммам. Любая синтаксически-корректная программа, записанная на некотором языке программирования может быть определена в нотации Ф.Б.Н. как нетерминальный символ некоторого языка, но важно помнить, что указанные синтаксические определения не составляют полного описания языка программирования.