18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики



Скачать 296.43 Kb.
страница4/4
Дата02.01.2013
Размер296.43 Kb.
ТипДокументы
1   2   3   4

Начальное состояние

Будем считать, что изначально CurTask указывает на первую задачу объявления для программы, или на первую задачу первого оператора программы, если никаких задач объявлений не существует.

27. Операционная семантика языка Си в формализме ASM.

Четвертый уровень определения семантики.
Четвертый уровень абстракции модифицирует третий уровень и фокусируется на определениях функций языка Cи.

Таким образом, мы также (неявно) представляем правила для запуска программы Cи, так как стартовая функция main – это обычная функция Cи (с предоставленными внешними параметрами).

(В Cи есть также объявленные функции, которые используются, для определения синтаксической информации. Так как их цель носит абсолютно синтаксический характер, мы их проигнорируем).

Моделирование Стека

Функции Си могут иметь несколько действующих ?воплощений в данный момент. Таким образом, необходимо иметь некоторые средства для того, чтобы хранить многочисленные значения функции для данной задачи.

Универсум stack содержит положительные целых числа, с выделенным элементом

StackRoot = 1.

Статические функции StackPrev: stack stack и StackNext: stack stack - функции предшественника и преемника на положительных целых числах. Динамический выделенный элемент StackTop указывает текущую вершину стека.

Для хранения информации о состояниях стека модифицируем различные функции Value: LeftValue, RightValue, OnlyValue, и TestValue, чтобы они стали бинарными функциями из tasks x stack в results. Это требует, чтобы мы переписали почти каждое правило,которое было ранее; упрощаем дело, заявляя, что каждая предыдущая ссылка на V (X) должна быть заменена V (X, StackTop), где V - одна из упомянутых выше функций Value. Точно так же мы изменяем Visited, сделав ее бинарной функцией из tasks x stack в tags, заменяя все предыдущие вхождения Visited(X) на Visited(X, StackTop).
Вызовы функции: вызывающие функции.

Синтаксическая форма:

Вызов-функции → имя-функции (список-выражений)
На втором уровне мы использовали внешнюю функцию FunctionValue, для получения значения вызова функции. Здесь мы устраняем использование этой функции.
Имя функции часто есть идентификатор, но вообще это - выражение, ссылающееся на адрес функции.

Статическая частичная функция AddrToFunc: addresses tasks по адресу функции указывает первую задачу определения функции.

Функция Parent (используемая макрокомандой ReportValue) отображает каждый аргумент в соответствующий параметр функции. Частичная функция ParamValue: tasks x stack results указывает значения передаваемых параметров.

Правило перехода для макрокоманды ReportValue:


После того, как вызываемая функция закончила работу, то для того, чтобы продолжить выполнение программы из нужной точки, необходимо хранить текущую задачу,. Динамическая функция ReturnTask: stack tasks указывает новое значение CurTask, когда выполнение текущей функции заканчивается. Будем считать, что, если CurTask = 1,то ReturnTask (CurTask) = undef,.

Для обработки вызова функции, необходимо определить имя функции и вычислить все её параметры, и затем передать управление указанной функции. В то же самое время, необходимо "поместить на стек новый фрейм"; то есть, увеличить StackTop на 1. Когда управление возвращается от функции, её значение будет "вытолкнуто" из стека (то есть, StackTop уменьшен на 1), и возвращаемое значение функции будет передано родительскому выражению.

Как и с операндами большинства арифметических операторов, стандарт ANSI [KR] не определяет порядок, в котором вычисляются параметры функции. Таким образом необходимо представить уточняющие правила для вычисления выражения, связанных с вызовом функции. Внешняя функция ChooseTask указывает в каждый момент времени, какое выражение, связанное с вызовом функции, должно быть вычислено следующим. Таким образом, наши правила перехода просто осуществляют повторные вызовы функции ChooseTask,до тех пор, пока все выражения не будут вычислены, что произойдет, когда ChooseTask возвратит undef.

Правила перехода для задачи вызова функции:

Вызовы функции: вызываемые функции.

Определение функции Cи состоит из списка объявлений параметров и составного оператора. При обработке объявления параметра для каждого параметра выделяется память и и новой области памяти назначается соответствующее значение


Правила перехода для задачи объявления параметра:


Оператор return

Синтаксическая форма:

return-statement return ;

return-statement return expression ;
Если выражение присутствует, копируем значение выражения задаче, которая вызвала текущую функцию (это указывается функциями ReturnTask и StackPrev). Независимо от того, присутствует выражение или нет, управление передается вызывающей задаче.

Правила перехода:


Даже если в конце функции отсутствует оператор return, наша алгебра всё равно содержит задачу return в качестве последней задачи функции
1   2   3   4

Похожие:

18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики iconПредмет семантики
Семантика, как и всякая научная дисциплина, имеет свой предмет. Но определить этот предмет не так просто, как это может показаться....
18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики iconВопросы по курсу ксе первый уровень освоения курса – «иметь представление о курсе»
Первый уровень освоения курса – «иметь представление о курсе», т е знать основные определения, положения и принципы
18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики iconВопросы к экзамену Примеры различных направлений, стилей и техник программирования
Операционная семантика языков программирования. Абстрактная машина и интерпретатор
18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики icon1. Синтаксис и семантика языков программирования. Алфавит языка Borland Pascal. Описание синтаксиса языка: синтаксические диаграммы
Синтаксис языка совокупность правил, определяющих допустимые конструкции (слова, предложения) языка, его форму
18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики iconКомпьютерная семантика русского языка
Существует только один способ такого разграничения, суть которого сводится к построению формального семантического языка и двухстороннему...
18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики iconЛекция Какие семантики бывают. Исчисление предикатов как прототипический пример формального языка Владимир Борщев, винити ран
Лекция Какие семантики бывают. Исчисление предикатов как прототипический пример формального языка
18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики iconЛекция Определение языков программирования Прежде чем анализировать конкретные парадигмы программирования, рассмотрим задачу определения систем программирования
Прежде чем анализировать конкретные парадигмы программирования, рассмотрим задачу определения систем программирования. Строится простейшее...
18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики iconС. Н. Селезнёва г. Красноярск, Россия Динамика семантики слова патриарх в культурно-историческом аспекте
Васильев: 1994, 157]. Наиболее ярко история духа народа может наблюдаться в судьбах слов, семантика которых включает компонент аксиологического...
18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики iconМашины абстрактных состояний. Основные идеи, мотивировки. Понятие состояния машины и связанные с ним определения. Правила перехода. Примеры применения
Предоставить средства построения т наз исполняемых спецификаций или исполняемых моделей программных систем, т е спецификации asm...
18. Операционная семантика языка Си в формализме asm. Первый уровень определения семантики iconВопросы семантики и прагматики грамматических категорий в курсе русского языка как иностранного

Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org