Or cond else if. Тема: Синтаксический анализ
Курсовая работа. Часть 1.
Студент: Тафинцев Г.М.
Группа: 8О-208Б
Номер по списку: 18
Вариант: 38
Дата: 22.06.2015
Тема: Синтаксический анализ.
Часть
…………………………………………………………………………………………………………………………………….
Для заданного диалекта языка МИКРОЛИСП разработать синтаксически управляемый транслятор в язык С++. Работоспособность транслятора проверить на трех контрольных задачах:
Числа Фибоначчи.
Размен денег.
Решение уравнения методом Ньютона.
Тесты контрольных задач адаптировать к заданному диалекту языка. Составить дополнительные тесты для грамматических форм, не используемых в контрольных задачах.
…………………………………………………………………………………………………………………………………….
Набор отчетных документов:
Описание грамматики (файл b38.txt)
Описание особенностей грамматики (файл GrammaFeatures.txt)
Протоколы трансляции контрольных задач и дополнительных тестов.
4) Протоколы запуска контрольных задач и дополнительных тестов в системах Scheme и C++.
Распечатка файла code-gen.cpp
Диаграммы автоматов из лабораторной работы №3.
1) Описание грамматики:
# $b38
$id $idq $int $oct
$float $bool $str (
) + - *
/ < = >
<= >= and not
or cond else if
define display newline set!
#
S -> PROG #1
CALC -> E1 #2 |
BOOL #3 |
STR #4 |
DISP #5
DISP -> (display E1) #6 |
(display BOOL) #7 |
(display STR) #8 |
(newline) #9
PRED -> HPRED BOOL) #10
HPRED -> PDPAR) #11
PDPAR -> (define ($idq #12 |
PDPAR $id #13
CPROC -> HCPROC) #14
HCPROC -> ($id #15 |
HCPROC E #16
CPRED -> HCPRED) #17
HCPRED -> ($idq #18 |
HCPRED E #19
DINT -> $int #20 |
$oct #21
E -> $float #22 |
DINT #23 |
$id #24 |
ADD #25 |
SUB #26 |
DIV #27 |
MUL #28 |
COND #29 |
CPROC #30
ADD -> HADD E1) #31
HADD -> (+ #32 |
HADD E1 #33
MUL -> HMUL E1) #34
HMUL -> (* #35 |
HMUL E1 #36
SUB -> HSUB E1) #37
HSUB -> (- #38 |
HSUB E1 #39
DIV -> HDIV E1) #40
HDIV -> (/ #41 |
HDIV E1 #42
BOOL -> $bool #43 |
CPRED #44 |
REL #45 |
AND #46 |
(not BOOL) #47
REL -> HREL E1) #48
HREL -> (<= E #49
AND -> HAND BOOL) #50
HAND -> (and BOOL #51
COND -> HCOND CLAUS) #52
HCOND -> (cond #53 |
HCOND CLAUS #54
CLAUS -> HCLAUS E1) #55
HCLAUS -> (BOOL #56 |
HCLAUS DISP #57
E1 -> E #58
STR -> $str #59
SET -> HSET E1) #60
HSET -> (set! $id #61
VAR -> HVAR E1) #62
HVAR -> (define $id #63
PROC -> HPROC E1) #64
HPROC -> PCPAR) #65 |
HPROC VAR #66 |
HPROC SET #67 |
HPROC DISP #68
PCPAR -> (define ($id #69 |
PCPAR $id #70
DEF -> PRED #71 |
VAR #72 |
PROC #73
DEFS -> DEF #74 |
DEFS DEF #75
CALCS -> CALC #76 |
CALCS CALC #77
CALCS1 -> CALCS #78
PROG -> CALCS1 #79 |
DEFS #80 |
DEFS CALCS1 #81
Date: 2015-07-24; view: 372; Нарушение авторских прав Понравилась страница? Лайкни для друзей: |
|
|