Понедельник, 23.12.2024, 06:56Приветствую Вас Гость | RSS
Школьный двор
Меню сайта
Праздники Украины
Категории раздела
Мои статьи [11]
Математика [50]
Литература [24]
География [66]
История [76]
Химия [21]
Русский язык [61]
Биология [31]
Пословицы скороговорки [39]
Загадки для школьников [68]
Биография русских поэтов и писателей [83]
Биография украинских поэтов и писателей [40]
Биография зарубежных поэтов и писателей [56]
Школьные сочинения [325]
Задачи [15]
Открытки [6]
Рисунки из символов [14]
Шкільні твори на українській мові [174]
Характеристики литературных персонажей (героев) [41]
Физика [14]
Сопромат(Труд) [5]
Астономия [7]
Мифология [22]
Физминутка [5]
Класні виховні заходи [128]
Cценарії свят та виховних годин, інформаційні хвилинки
Поделки для детей [140]
Новогодние костюмы [16]
Песни для школьников [37]
Стихи для школьников [325]
Все на українській мові [321]
Коллекция СМС [25]
Детские игры [39]
Азбука природы [19]
Кредитка
Поиск

Каталог статей


Главная » Статьи » Мои статьи

СИНТАКСИЧЕСКИЙ РАЗБОР

СИНТАКСИЧЕСКИЙ РАЗБОР 

 Напомним, что существует целый ряд методов синтаксического
разбора и вычисления выражений. Для целей данной статьи предполо-
жим, что выражения являются рекурсивными структурными данными,
которые определяются в терминах самих себя. Если вы ограничитесь
использованием в выражениях только операторов +, -, *, / и ско-
бок, то сможете сказать, что все выражения могут быть определены
в терминах следующих правил:
выражение=>терм[+терм][-терм]
терм=>множитель[*множитель][/множитель]
множитель=>переменная, число или (выражение)
где любая часть может быть пустой. Квадратные скобки обозначают
необязательность, а => - порождение. Фактически правила являются
правилами порождения выражений. Предшествование операторов подра-
зумевается способом порождения выражений.
Выражение
10+5*В
состоит из двух термов: 10 и 5*В. Однако, включает три множителя:
10, 5 и В. Этими множителями являются два числа и одна перемен-
ная.
С другой стороны выражение
14*(7-С)
имеет два терма 10 и (7-С), один из которых является числом, а
другая дочерним выражением. Дочернее выражение распадается на од-
но число и одну переменную.
Данный процесс формирует основу для рекурсивного нисходящего
синтаксического разбора, который представляет собой набор общих
рекурсивных процедур, носящих цепочный характер. На каждом соот-
ветствующем шаге синтаксический разбор может выполнять заданные
операции в алгебраически правильной последовательности. Для при-
мера рассмотрим синтаксический разбор входного выражения 9/3-(100
+56) и выполнение операций по шагам.

Шаг 1. Взять первую лексему: 9/3
Шаг 2. Взять оба множителя и выполнить операцию деления.
В результате получается 3.
Шаг 3. Взять вторую лексему: (100+56). В данной точке вы
должны рекурсивно проанализировать второе выражение.
Шаг 4. Взять оба числа и сложить. В результате получается
156.
Шаг 5. Возвратиться из рекурсивного вызова и вычесть 156 из
3, что дает ответ - 153.

Если вы немного запутались, не беспокойтесь. Это сложная концеп-
ция. Нужно усвоить два момента о данном рекурсивном взгляде на
выражения: во-первых, предшествование операторов является неявным
при заданных правилах порождения выражений; во-вторых, данный ме-
тод синтаксического разбора и вычисления выражений очень похож на
то, как это делается вручную.


Источник: http://borlpasc.narod.ru/inzik/glav8/sintac.htm
Категория: Мои статьи | Добавил: ZZolotko (28.10.2009)
Просмотров: 1482 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
SiteHeart
загрузка...
загрузка...
Друзья сайта













   















Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0