Пояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции»




НазваниеПояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции»
страница6/15
Дата публикации08.05.2013
Размер1.12 Mb.
ТипПояснительная записка
www.vbibl.ru > Информатика > Пояснительная записка
1   2   3   4   5   6   7   8   9   ...   15
^

4 Описание этапа синтаксического анализа


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


^

4.1 Исходная порождающая КС-грамматика


P – начальный нетерминальный символ.
P → void main() { DeclarVar DeclarVector CompositeOperator }
DeclarVar → TypeBase Ident DeclarVar;

DeclarVar →
DeclarVector → vector Ident [Dimension] DeclarVector

DeclarVector →

CompositeOperator →{ SeqOperator}

SeqOperator → Operator ; SeqOperator

SeqOperator →
Operator → [Label]: NonMarkedOperator

Operator → NonMarkedOperator
NonMarkedOperator → CompositeOperator

NonMarkedOperator → AssignOperator

NonMarkedOperator → ConAssignOperator

NonMarkedOperator → ConditionOperator

NonMarkedOperator → LoopOperator

NonMarkedOperator → GotoOperator

NonMarkedOperator → InputOperator

NonMarkedOperator → OutputOperator
ConAssignOperator → ( Logical Expr ) ? Expr : Expr

AssignOperator → Var AssignRel Expr
ConditionOperator → if ( LogicalExpr ) CompositeOperator

ConditionOperator → if ( LogicalExpr ) CompositeOperator else CompositeOperator
LoopOperator → for( AssignOperator ; LogicalExpr; AssignOperator) CompositeOperator

GotoOperator → goto Label

InputOperator → cin>>Var

OutputOperator → cout<< Var
Expr → Expr AddOperation Item

Expr → Item

Expr → Item UnaryOperation

Expr → ~ Vector
Item → Item MultOoperation Factor

Item →Factor
Factor → Var

Factor → ( Expr )
LogicalExpr → Con or Con

LogicalExpr → Relation

Con → LogicalFactor and LogicalFactor

LogicalFactor → ( LogicalExpr )

LogicalFactor → (Relation)

LogicalFactor →not LogicalFactor
Relation →Expr RelOperation Expr
Var → Ident

Var → Vector

Label → Ident
Number →0

Number → NatNumber
NNumber → Number NNumber

NNumber →
Dimension → NatNumber

Dimension → NatNumber NNumber
Index → 0

Index → NatNumber Index

Vector → Ident

Vector → [ VectorElem NVectorElem ]
NVectorElem → , VectorElem

NVectorElem →
VectorElem →Ident [ Index]

VectorElem → Ident

VectorElem → FloatNumber
FloatNumber → NatNumber NNumber . NNumber
^

4.2 Разбиение исходной грамматики на подграмматики


  • Подграмматика для переменной

  • Подграмматика для выражения

  • Подграмматика для логического выражения

  • Подграмматика для операторов

  • Подграмматика для типов

  • Основная грамматика


Подграмматика для переменной
Таблица нетерминалов

Имя нетерминала

Описание

VAR

Переменная

IDENT

Идентификатор

VEC

Вектор

EL

Элемент вектора

SELEM

Последовательность элементов вектора

SEND

^ Запись индекса элемента, если он есть

INDEX

Значение индекса элемента

CI

Целое число

CF

Вещественное число

VAR → IDENT (1)

VAR → [ ELEM SELEM] (2)

SELEM → , ELEM SELEM (3)

SELEM → (4)

ELEM → IDENT SEND (5)

SEND → [ INDEX ] (6)

SEND → (7)

ELEM → CF (8)

INDEX → CI (9)

VAR →CI ( 10 )

^ Подграмматика для выражения

Таблица нетерминалов

Имя нетерминала

Описание

EXP

Выражение

SAE

Последовательность слагаемых

AE

Слагаемое

ME

Множитель

SME

Последовательность множителей

VEC

Вектор

VAR

Переменная


EXP -> EXPS SAE (1)

SAE -> + AE SAE (2)

SAE -> - AE SAE (3)

SAE -> (4)

EXPS ->++ AE (5)

EXPS -> -- AE (6)

EXPS -> AE (7)

EXPS -> ~ VEC (8)

AE -> ME SME (9)

SME -> * ME SME (10)

SME -> / ME SME (11)

SME -> (12)

ME -> ( EXP ) (13)

ME -> VAR (14)
^ Подграмматика для логического выражения
Таблица нетерминалов:

Имя нетерминала

Описание

LEX

Логическое выражеие

EXP

Выражение

С

Конъюнкция

SC

Последовательность конъюнкций

REL

Отношение

LM

Логический множитель

SLM

Последовательность логических множителей

REO

^ Операция отношения


LEX →C SC (1) REL→EXP REO (10)

SC→or C SC (2) REO→ < EXP (11)

SC→ (3) REO→ > EXP (12)

LEX→REL (4) REO→ == EXP (13)

C→LM SLM (5) REO→ <= EXP (14)

SLM→and LM SLM (6) REO→ >= EXP (15)

SLM→ (7) REO→ != EXP (16)

LM→( LEX ) (8)

LM→not LM (9)

Подграмматика для операторов
Таблица нетерминалов

Имя нетерминала

Описание

COP

Составной оператор

OP

Оператор

ULO

Непомеченный оператор

LPR

Оператор цикла с параметром

SOP

Последовательность операторов

EQO

^ Оператор присваивания

JMP

Оператор безусловного перехода

IFO

^ Условный оператор

CAO

Условный оператор присваивания

IOP

^ Оператор ввода

OOP

Оператор вывода

LEX

Логическое выражение

VAR

Переменная

EQR

Отношение присваивания

EXP

Выражение


COP → SOP (1) EQRS → /=EXP (19)

SOP → OP; SOP (2) ULO → (LEX)? (EXP) : (EXP ) (20)

SOP → (3)

OP → LABEL: ULO (4)

OP → ULO (22)

ULO →for(EQO; LEX; EQO) COP (5)

ULO → EQO (6)

EQO →VAR EQRS (7)

ULO → goto LABEL (8)

LABEL → IDENT (9)

ULO → if(LEX) COP ELO (10)

ELO → else COP (11)

ELO → (12)

ULO → cin>>VAR (13)

ULO →cout <
EQRS → =EXP (15)

EQRS → +=EXP (16)

EQRS → -=EXP (17)

EQRS → *=EXP (18)
^ Подграмматика для типов
Таблица нетерминалов

Имя нетерминала

Описание

BASE

Базовый тип

DECVAR

Объявление переменной

LETTER

Буква

SNL

Последовательность букв или цифр

NUMBER

Число

DECVAR

Объявление вектора

DIM

Размерность вектора

NNUM

Последовательность цифр

NATNUM

Натуральное число

IDENT

Индентификатор



DECVAR -> BASE VAR (1)

BASE -> int (2)

BASE -> float (3)

BASE -> bool (4)

DECVEC -> vector VAR [ DIM] ; DECVEC (5)

DECVEC -> (6)

DIM -> CI (7)
^ Основная грамматика
Таблица нетерминалов

Имя нетерминала

Описание

P

Программа

DVAR

^ Объявления переменных

DVEC

Объявления векторов

COP

Составной оператор



P → void main() { DVAR } (1)

DVAR → DECVAR; DVAR (2)

DVAR → DVEC (3)

DVAR → COP (4)

DVEC → DEVEC; DVEC (5)

DVEC →COP (6)

1   2   3   4   5   6   7   8   9   ...   15

Похожие:

Пояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции» iconПояснительная записка к курсовой работе по курсу «Теория языков программирования...
Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет...

Пояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции» iconПояснительная записка к курсовой работе по курсу «Теория языков программирования...
В тоже время ни одна программа написанная на яп не может быть непосредственно выполнена машиной – перед этим необходимо выполнить...

Пояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции» iconПояснительная записка к курсовой работе по дисциплине «Интеллектуальные подсистемы сапр»
Пояснительная записка к курсовой работе 10 страниц, 2 рисунка, 1 таблица, 3 источника

Пояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции» iconПояснительная записка к курсовой работе по дисциплине «технологии программирования»
Государственного образовательного учреждения высшего профессионального образования Российский химико-технологический университет

Пояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции» iconПояснительная записка к курсовой работе по дисциплине «Алгоритмизация...
Сеть книжных магазинов. – Челябинск: юурГУ, ЭиП-208, 2012. – 50 с., 13 ил., 1 прил

Пояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции» iconПояснительная записка к курсовой работе по дисциплине «Теория электрической связи»
Целью курсовой работы является получение навыков по вычислению параметров системы связи, анализу полученных результатов, а также...

Пояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции» iconМетодические указания к курсовой работе по дисциплине " системы программирования " Киев -2002
Целью курсовой работы по дисциплине "Системы программирования" является закрепление теоретического материала и приобретение практических...

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

Пояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции» iconПояснительная записка к курсовой работе по дисциплине «Теория автоматов»
Ученик может исправить полученную оценку. Завуч может добавить информацию о новом учителе или ученике, а также удалить о выбывших....

Пояснительная записка к курсовой работе по дисциплине «Теория языков программирования и методов трансляции» iconПояснительная записка к курсовой работе по дисциплине «Автоматические...
Расчет допускаемой тормозной силы из условия безъюзного торможения подвижного состава

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
www.vbibl.ru
Главная страница