Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Синтаксис логических выражений.






 

Синтаксические правила, рассмотренные в разделе 3.3, не покрывают случай, когда логические выражения могут включать переменные и константы. Эти правила не задают структуру всех возможных допустимых строк, которые могут образовывать логические выражения. Новые правила для логических выражений приведены ниже:

 

< выражение>:: = < простое выражение>

| < простое выражение> < оператор сравнения> < простое выражение>

 

< простое выражение>:: = < простое выражение> OR < терм> | < терм>

< терм>:: = < терм> AND < множитель> | < множитель>

< множитель>:: = < переменная> | < константа> | (< выражение>) | NOT < множитель>

 

Синтаксически некорректно записывать:

X < = Y < = Z

Для того, чтобы определить, что Y имеет значение, находящееся между значениями X и Z. Вместо этого требуется записать

(X < = Y) AND (Y < = Z)

чтобы выполнить такую проверку.

 

Скобки в выражениях – часть синтаксиса Паскаля. Попытка построить синтаксическое дерево для первого выражения терпит неудачу:

 
 

 


Невозможно вывести строку X < = Y из первого < простого выражения> без введения дополнительных символов в строку (например скобок). Для второго выражения может быть построено корректное синтаксическое дерево:

 

 
 

 


Последовательные лево-ассоциативные операторы с одинаковым приоритетом применяются к их операндам в порядке слева-на-право. Таким образом, в выражении

X OR Y OR Z

подвыражение

X OR Y

будет вычислено первым. Синтаксическое дерево для этого выражения будет следующим:

 

 


Операнды для каждого OR в строке могут быть найдены поиском строк, выведенных из соотвествующего < простого выражения> и < терма>. Операндами левого OR являются X и Y, тогда как операндами правого OR являются X OR Y (строка выведенная из первого < простоего выражения>) и Z. Таким образом, левый OR применяется к операндам раньше правого. (Конечно, приоритет операторов в выражении может быть изменен с помощью скобок)

Правило синтаксиса является леворекурсивным, если определяемая величина (то, что размещается слева от:: =) также появляется на первом месте справа от:: =.

Правило для < term> леворекурсивоное:

< терм>:: = < терм> AND < множитель>

Когда оператор определяется с использованием левой рекурсии, он будет левоассоциативным, как показано на синтаксических деревьях приведенных выше.

Относительный приоритет операторов также определен синтаксическими правилами. Синтаксическое дерево для

X OR Y AND Z

иллюстрирует приоритет операторов:

 

 


Несмотря на то, что AND расположен правее OR в строке, он применяется к его операндам, Y и Z до того как OR будет применен к своим операндам, X и Y AND Z. Таким образом, AND имеет более высокий приоритет в логических выражениях, чем OR.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.