Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа2 / Docs / KursovikOtchet00_.doc
Скачиваний:
27
Добавлен:
01.05.2014
Размер:
791.55 Кб
Скачать

Выводы по результатам выполнения курсовой работы

В результате выполнения курсовой работы по дисциплине “Разработка языковых процессоров” был получен компилятор входного языка типа ПАСКАЛЬ в код языка ассемблера TASM. Внешний вид готового приложения приведён ниже:

Данный компилятор функционально состоит из четырёх модулей (лексический анализатор, менеджер таблиц, синтаксический анализатор, генератор кода) и выполняет следующие действия:

  • разбор текста входной программы на лексемы;

  • заполнение таблиц лексем;

  • формирование потока токенов;

  • разбор цепочки токенов;

  • формирование внутреннего представления программы;

  • генерация кода ассемблера;

  • локализация лексических, синтаксических и семантических ошибок.

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

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

Приложения

Приложение 1

<?xml version="1.0" encoding="WINDOWS-1251" standalone="yes"?>

<FORMALGRAMMAR>

<TERMINALS>

<SYMBOL NAME = "TKN_AND" TYPE = "term" />

<SYMBOL NAME = "TKN_ASSIGN" TYPE = "term" />

<SYMBOL NAME = "TKN_BEGIN" TYPE = "term" />

<SYMBOL NAME = "TKN_BOOLEAN" TYPE = "term" />

<SYMBOL NAME = "TKN_BRACKET_CLOSE" TYPE = "term" />

<SYMBOL NAME = "TKN_BRACKET_OPEN" TYPE = "term" />

<SYMBOL NAME = "TKN_CHAR" TYPE = "term" />

<SYMBOL NAME = "TKN_COLON" TYPE = "term" />

<SYMBOL NAME = "TKN_ZPT" TYPE = "term" />

<SYMBOL NAME = "TKN_CONST" TYPE = "term" />

<SYMBOL NAME = "TKN_DO" TYPE = "term" />

<SYMBOL NAME = "TKN_ELSE" TYPE = "term" />

<SYMBOL NAME = "TKN_END" TYPE = "term" />

<SYMBOL NAME = "TKN_FALSE" TYPE = "term" />

<SYMBOL NAME = "TKN_FOR" TYPE = "term" />

<SYMBOL NAME = "TKN_ID" TYPE = "term" />

<SYMBOL NAME = "TKN_IF" TYPE = "term" />

<SYMBOL NAME = "TKN_INTEGER" TYPE = "term" />

<SYMBOL NAME = "TKN_LITER_CHAR" TYPE = "term" />

<SYMBOL NAME = "TKN_LITER_INT" TYPE = "term" />

<SYMBOL NAME = "TKN_LITER_REAL" TYPE = "term" />

<SYMBOL NAME = "TKN_LITER_STRING" TYPE = "term" />

<SYMBOL NAME = "TKN_MULT" TYPE = "term" />

<SYMBOL NAME = "TKN_NOT" TYPE = "term" />

<SYMBOL NAME = "TKN_OR" TYPE = "term" />

<SYMBOL NAME = "TKN_TOCHKA" TYPE = "term" />

<SYMBOL NAME = "TKN_PLUS" TYPE = "term" />

<SYMBOL NAME = "TKN_POP" TYPE = "term" />

<SYMBOL NAME = "TKN_PROGRAM" TYPE = "term" />

<SYMBOL NAME = "TKN_PUSH" TYPE = "term" />

<SYMBOL NAME = "TKN_READ" TYPE = "term" />

<SYMBOL NAME = "TKN_REAL" TYPE = "term" />

<SYMBOL NAME = "TKN_REL_EQUAL" TYPE = "term" />

<SYMBOL NAME = "TKN_REL_NOT_EQUAL" TYPE = "term" />

<SYMBOL NAME = "TKN_TOCHKA-ZPT" TYPE = "term" />

<SYMBOL NAME = "TKN_STACK" TYPE = "term" />

<SYMBOL NAME = "TKN_STRING" TYPE = "term" />

<SYMBOL NAME = "TKN_THEN" TYPE = "term" />

<SYMBOL NAME = "TKN_TO" TYPE = "term" />

<SYMBOL NAME = "TKN_TOP" TYPE = "term" />

<SYMBOL NAME = "TKN_TRUE" TYPE = "term" />

<SYMBOL NAME = "TKN_VAR" TYPE = "term" />

<SYMBOL NAME = "TKN_WHILE" TYPE = "term" />

<SYMBOL NAME = "TKN_WRITE" TYPE = "term" />

<SYMBOL NAME = "TKN_WRITELN" TYPE = "term" />

</TERMINALS>

<NONTERMINALS>

<SYMBOL NAME = "_Program" TYPE = "nterm" />

<SYMBOL NAME = "Assignment" TYPE = "nterm" />

<SYMBOL NAME = "ConstDecs" TYPE = "nterm" />

<SYMBOL NAME = "Declarations" TYPE = "nterm" />

<SYMBOL NAME = "DeclarationsConst" TYPE = "nterm" />

<SYMBOL NAME = "DeclarationSection" TYPE = "nterm" />

<SYMBOL NAME = "DeclarationsVar" TYPE = "nterm" />

<SYMBOL NAME = "ExprAtom" TYPE = "nterm" />

<SYMBOL NAME = "ExprConjunctor" TYPE = "nterm" />

<SYMBOL NAME = "ExprConstituent" TYPE = "nterm" />

<SYMBOL NAME = "ExprDisjunctor" TYPE = "nterm" />

<SYMBOL NAME = "Expression" TYPE = "nterm" />

<SYMBOL NAME = "ExprMultiplier" TYPE = "nterm" />

<SYMBOL NAME = "ExprRelation" TYPE = "nterm" />

<SYMBOL NAME = "ExprRelator" TYPE = "nterm" />

<SYMBOL NAME = "ForInit" TYPE = "nterm" />

<SYMBOL NAME = "Function" TYPE = "nterm" />

<SYMBOL NAME = "MatchedElse" TYPE = "nterm" />

<SYMBOL NAME = "MatchedThen" TYPE = "nterm" />

<SYMBOL NAME = "PartIf" TYPE = "nterm" />

<SYMBOL NAME = "PartIfMatched" TYPE = "nterm" />

<SYMBOL NAME = "Procedure" TYPE = "nterm" />

<SYMBOL NAME = "ProgName" TYPE = "nterm" />

<SYMBOL NAME = "SingleConstDec" TYPE = "nterm" />

<SYMBOL NAME = "SingleVarDec" TYPE = "nterm" />

<SYMBOL NAME = "Statement" TYPE = "nterm" />

<SYMBOL NAME = "StatementIO" TYPE = "nterm" />

<SYMBOL NAME = "StatementListNonEmpty" TYPE = "nterm" />

<SYMBOL NAME = "StatementMatched" TYPE = "nterm" />

<SYMBOL NAME = "StatementOther" TYPE = "nterm" />

<SYMBOL NAME = "StatementUnmatched" TYPE = "nterm" />

<SYMBOL NAME = "StructStatement" TYPE = "nterm" />

<SYMBOL NAME = "Type" TYPE = "nterm" />

<SYMBOL NAME = "UnmatchedElse" TYPE = "nterm" />

<SYMBOL NAME = "UnmatchedThen" TYPE = "nterm" />

<SYMBOL NAME = "VarDecs" TYPE = "nterm" />

<SYMBOL NAME = "WhileInit" TYPE = "nterm" />

<SYMBOL NAME = "WhileKeyword" TYPE = "nterm" />

</NONTERMINALS>

<PRODUCTIONS>

<PRODUCTION START = "_Program">

<SYMBOL NAME = "ProgName" TYPE = "nterm"/>

<SYMBOL NAME = "Declarations" TYPE = "nterm"/>

<SYMBOL NAME = "StructStatement" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_TOCHKA" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ProgName">

</PRODUCTION>

<PRODUCTION START = "ProgName">

<SYMBOL NAME = "TKN_PROGRAM" TYPE = "term"/>

<SYMBOL NAME = "TKN_ID" TYPE = "term"/>

<SYMBOL NAME = "TKN_TOCHKA-ZPT" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Declarations">

</PRODUCTION>

<PRODUCTION START = "Declarations">

<SYMBOL NAME = "Declarations" TYPE = "nterm"/>

<SYMBOL NAME = "DeclarationSection" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "DeclarationSection">

<SYMBOL NAME = "DeclarationsVar" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "DeclarationSection">

<SYMBOL NAME = "DeclarationsConst" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "DeclarationsConst">

<SYMBOL NAME = "TKN_CONST" TYPE = "term"/>

<SYMBOL NAME = "ConstDecs" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ConstDecs">

<SYMBOL NAME = "SingleConstDec" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ConstDecs">

<SYMBOL NAME = "ConstDecs" TYPE = "nterm"/>

<SYMBOL NAME = "SingleConstDec" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "SingleConstDec">

<SYMBOL NAME = "TKN_ID" TYPE = "term"/>

<SYMBOL NAME = "TKN_REL_EQUAL" TYPE = "term"/>

<SYMBOL NAME = "Expression" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_TOCHKA-ZPT" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "DeclarationsVar">

<SYMBOL NAME = "TKN_VAR" TYPE = "term"/>

<SYMBOL NAME = "VarDecs" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "VarDecs">

<SYMBOL NAME = "SingleVarDec" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "VarDecs">

<SYMBOL NAME = "VarDecs" TYPE = "nterm"/>

<SYMBOL NAME = "SingleVarDec" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "SingleVarDec">

<SYMBOL NAME = "TKN_ID" TYPE = "term"/>

<SYMBOL NAME = "TKN_COLON" TYPE = "term"/>

<SYMBOL NAME = "Type" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_TOCHKA-ZPT" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Type">

<SYMBOL NAME = "TKN_BOOLEAN" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Type">

<SYMBOL NAME = "TKN_CHAR" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Type">

<SYMBOL NAME = "TKN_INTEGER" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Type">

<SYMBOL NAME = "TKN_REAL" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Type">

<SYMBOL NAME = "TKN_STACK" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Type">

<SYMBOL NAME = "TKN_STRING" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Statement">

<SYMBOL NAME = "StatementMatched" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "Statement">

<SYMBOL NAME = "StatementUnmatched" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementMatched">

<SYMBOL NAME = "PartIfMatched" TYPE = "nterm"/>

<SYMBOL NAME = "MatchedElse" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementMatched">

<SYMBOL NAME = "StatementOther" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementUnmatched">

<SYMBOL NAME = "PartIf" TYPE = "nterm"/>

<SYMBOL NAME = "UnmatchedThen" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementUnmatched">

<SYMBOL NAME = "PartIfMatched" TYPE = "nterm"/>

<SYMBOL NAME = "UnmatchedElse" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "PartIf">

<SYMBOL NAME = "TKN_IF" TYPE = "term"/>

<SYMBOL NAME = "Expression" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "MatchedThen">

<SYMBOL NAME = "TKN_THEN" TYPE = "term"/>

<SYMBOL NAME = "StatementMatched" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "MatchedElse">

<SYMBOL NAME = "TKN_ELSE" TYPE = "term"/>

<SYMBOL NAME = "StatementMatched" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "UnmatchedThen">

<SYMBOL NAME = "TKN_THEN" TYPE = "term"/>

<SYMBOL NAME = "Statement" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "UnmatchedElse">

<SYMBOL NAME = "TKN_ELSE" TYPE = "term"/>

<SYMBOL NAME = "StatementUnmatched" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "Statement">

</PRODUCTION>

<PRODUCTION START = "StatementMatched">

<SYMBOL NAME = "ForInit" TYPE = "nterm"/>

<SYMBOL NAME = "StatementMatched" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementUnmatched">

<SYMBOL NAME = "ForInit" TYPE = "nterm"/>

<SYMBOL NAME = "StatementUnmatched" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "PartIfMatched">

<SYMBOL NAME = "PartIf" TYPE = "nterm"/>

<SYMBOL NAME = "MatchedThen" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementMatched">

<SYMBOL NAME = "WhileInit" TYPE = "nterm"/>

<SYMBOL NAME = "StatementMatched" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementUnmatched">

<SYMBOL NAME = "WhileInit" TYPE = "nterm"/>

<SYMBOL NAME = "StatementUnmatched" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementOther">

<SYMBOL NAME = "StructStatement" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementOther">

<SYMBOL NAME = "Assignment" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementOther">

<SYMBOL NAME = "StatementIO" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementOther">

<SYMBOL NAME = "Procedure" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StructStatement">

<SYMBOL NAME = "TKN_BEGIN" TYPE = "term"/>

<SYMBOL NAME = "StatementListNonEmpty" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_END" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "StatementListNonEmpty">

<SYMBOL NAME = "Statement" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementListNonEmpty">

<SYMBOL NAME = "StatementListNonEmpty" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_TOCHKA-ZPT" TYPE = "term"/>

<SYMBOL NAME = "Statement" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "Assignment">

<SYMBOL NAME = "TKN_ID" TYPE = "term"/>

<SYMBOL NAME = "TKN_ASSIGN" TYPE = "term"/>

<SYMBOL NAME = "Expression" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ForInit">

<SYMBOL NAME = "TKN_FOR" TYPE = "term"/>

<SYMBOL NAME = "TKN_ID" TYPE = "term"/>

<SYMBOL NAME = "TKN_ASSIGN" TYPE = "term"/>

<SYMBOL NAME = "Expression" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_TO" TYPE = "term"/>

<SYMBOL NAME = "Expression" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_DO" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "WhileInit">

<SYMBOL NAME = "WhileKeyword" TYPE = "nterm"/>

<SYMBOL NAME = "Expression" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_DO" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "WhileKeyword">

<SYMBOL NAME = "TKN_WHILE" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Expression">

<SYMBOL NAME = "Expression" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_OR" TYPE = "term"/>

<SYMBOL NAME = "ExprDisjunctor" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "Expression">

<SYMBOL NAME = "ExprDisjunctor" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprDisjunctor">

<SYMBOL NAME = "ExprDisjunctor" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_AND" TYPE = "term"/>

<SYMBOL NAME = "ExprConjunctor" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprDisjunctor">

<SYMBOL NAME = "ExprConjunctor" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprConjunctor">

<SYMBOL NAME = "ExprConjunctor" TYPE = "nterm"/>

<SYMBOL NAME = "ExprRelation" TYPE = "nterm"/>

<SYMBOL NAME = "ExprRelator" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprConjunctor">

<SYMBOL NAME = "ExprRelator" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprRelation">

<SYMBOL NAME = "TKN_REL_EQUAL" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ExprRelation">

<SYMBOL NAME = "TKN_REL_NOT_EQUAL" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ExprRelator">

<SYMBOL NAME = "ExprRelator" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_PLUS" TYPE = "term"/>

<SYMBOL NAME = "ExprConstituent" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprRelator">

<SYMBOL NAME = "ExprConstituent" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprConstituent">

<SYMBOL NAME = "ExprConstituent" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_MULT" TYPE = "term"/>

<SYMBOL NAME = "ExprMultiplier" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprConstituent">

<SYMBOL NAME = "ExprMultiplier" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprMultiplier">

<SYMBOL NAME = "TKN_BRACKET_OPEN" TYPE = "term"/>

<SYMBOL NAME = "Expression" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_BRACKET_CLOSE" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ExprMultiplier">

<SYMBOL NAME = "TKN_NOT" TYPE = "term"/>

<SYMBOL NAME = "ExprMultiplier" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprMultiplier">

<SYMBOL NAME = "TKN_PLUS" TYPE = "term"/>

<SYMBOL NAME = "ExprMultiplier" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprMultiplier">

<SYMBOL NAME = "ExprAtom" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "ExprAtom">

<SYMBOL NAME = "TKN_ID" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ExprAtom">

<SYMBOL NAME = "TKN_LITER_CHAR" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ExprAtom">

<SYMBOL NAME = "TKN_LITER_INT" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ExprAtom">

<SYMBOL NAME = "TKN_LITER_REAL" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ExprAtom">

<SYMBOL NAME = "TKN_LITER_STRING" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ExprAtom">

<SYMBOL NAME = "TKN_TRUE" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ExprAtom">

<SYMBOL NAME = "TKN_FALSE" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "ExprAtom">

<SYMBOL NAME = "Function" TYPE = "nterm"/>

</PRODUCTION>

<PRODUCTION START = "StatementIO">

<SYMBOL NAME = "TKN_READ" TYPE = "term"/>

<SYMBOL NAME = "TKN_BRACKET_OPEN" TYPE = "term"/>

<SYMBOL NAME = "TKN_ID" TYPE = "term"/>

<SYMBOL NAME = "TKN_BRACKET_CLOSE" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "StatementIO">

<SYMBOL NAME = "TKN_WRITE" TYPE = "term"/>

<SYMBOL NAME = "TKN_BRACKET_OPEN" TYPE = "term"/>

<SYMBOL NAME = "Expression" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_BRACKET_CLOSE" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "StatementIO">

<SYMBOL NAME = "TKN_WRITELN" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Procedure">

<SYMBOL NAME = "TKN_PUSH" TYPE = "term"/>

<SYMBOL NAME = "TKN_BRACKET_OPEN" TYPE = "term"/>

<SYMBOL NAME = "TKN_ID" TYPE = "term"/>

<SYMBOL NAME = "TKN_ZPT" TYPE = "term"/>

<SYMBOL NAME = "Expression" TYPE = "nterm"/>

<SYMBOL NAME = "TKN_BRACKET_CLOSE" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Function">

<SYMBOL NAME = "TKN_TOP" TYPE = "term"/>

<SYMBOL NAME = "TKN_BRACKET_OPEN" TYPE = "term"/>

<SYMBOL NAME = "TKN_ID" TYPE = "term"/>

<SYMBOL NAME = "TKN_BRACKET_CLOSE" TYPE = "term"/>

</PRODUCTION>

<PRODUCTION START = "Procedure">

<SYMBOL NAME = "TKN_POP" TYPE = "term"/>

<SYMBOL NAME = "TKN_BRACKET_OPEN" TYPE = "term"/>

<SYMBOL NAME = "TKN_ID" TYPE = "term"/>

<SYMBOL NAME = "TKN_BRACKET_CLOSE" TYPE = "term"/>

</PRODUCTION>

</PRODUCTIONS>

</FORMALGRAMMAR>

Приложение 2

// File generated by SLR(1)-Resolver for grammar PASCAL

#include "SyntaxAn.h"

#include "Tokens.h"

#define PASCAL_RulesCount 80

#define PASCAL_FCount 766

#define PASCAL_GCount 501

// Defining symbolics for nonterminals

#define START 0

#define _Program 1

#define Assignment 2

#define ConstDecs 3

#define Declarations 4

#define DeclarationsConst 5

#define DeclarationSection 6

#define DeclarationsVar 7

#define ExprAtom 8

#define ExprConjunctor 9

#define ExprConstituent 10

#define ExprDisjunctor 11

#define Expression 12

#define ExprMultiplier 13

#define ExprRelation 14

#define ExprRelator 15

#define ForInit 16

#define Function 17

#define MatchedElse 18

#define MatchedThen 19

#define PartIf 20

#define PartIfMatched 21

#define Procedure 22

#define ProgName 23

#define SingleConstDec 24

#define SingleVarDec 25

#define Statement 26

#define StatementIO 27

#define StatementListNonEmpty 28

#define StatementMatched 29

#define StatementOther 30

#define StatementUnmatched 31

#define StructStatement 32

#define Type 33

#define UnmatchedElse 34

#define UnmatchedThen 35

#define VarDecs 36

#define WhileInit 37

#define WhileKeyword 38

// Defining symbolics for automaton states

#define STATE_0 0

#define STATE_1 1

#define STATE_2 2

#define STATE_3 3

#define STATE_4 4

#define STATE_5 5

#define STATE_6 6

#define STATE_7 7

#define STATE_8 8

#define STATE_9 9

#define STATE_10 10

#define STATE_11 11

#define STATE_12 12

#define STATE_13 13

#define STATE_14 14

#define STATE_15 15

#define STATE_16 16

#define STATE_17 17

#define STATE_18 18

#define STATE_19 19

#define STATE_20 20

#define STATE_21 21

#define STATE_22 22

#define STATE_23 23

#define STATE_24 24

#define STATE_25 25

#define STATE_26 26

#define STATE_27 27

#define STATE_28 28

#define STATE_29 29

#define STATE_30 30

#define STATE_31 31

#define STATE_32 32

#define STATE_33 33

#define STATE_34 34

#define STATE_35 35

#define STATE_36 36

#define STATE_37 37

#define STATE_38 38

#define STATE_39 39

#define STATE_40 40

#define STATE_41 41

#define STATE_42 42

#define STATE_43 43

#define STATE_44 44

#define STATE_45 45

#define STATE_46 46

#define STATE_47 47

#define STATE_48 48

#define STATE_49 49

#define STATE_50 50

#define STATE_51 51

#define STATE_52 52

#define STATE_53 53

#define STATE_54 54

#define STATE_55 55

#define STATE_56 56

#define STATE_57 57

#define STATE_58 58

#define STATE_59 59

#define STATE_60 60

#define STATE_61 61

#define STATE_62 62

#define STATE_63 63

#define STATE_64 64

#define STATE_65 65

#define STATE_66 66

#define STATE_67 67

#define STATE_68 68

#define STATE_69 69

#define STATE_70 70

#define STATE_71 71

#define STATE_72 72

#define STATE_73 73

#define STATE_74 74

#define STATE_75 75

#define STATE_76 76

#define STATE_77 77

#define STATE_78 78

#define STATE_79 79

#define STATE_80 80

#define STATE_81 81

#define STATE_82 82

#define STATE_83 83

#define STATE_84 84

#define STATE_85 85

#define STATE_86 86

#define STATE_87 87

#define STATE_88 88

#define STATE_89 89

#define STATE_90 90

#define STATE_91 91

#define STATE_92 92

#define STATE_93 93

#define STATE_94 94

#define STATE_95 95

#define STATE_96 96

#define STATE_97 97

#define STATE_98 98

#define STATE_99 99

#define STATE_100 100

#define STATE_101 101

#define STATE_102 102

#define STATE_103 103

#define STATE_104 104

#define STATE_105 105

#define STATE_106 106

#define STATE_107 107

#define STATE_108 108

#define STATE_109 109

#define STATE_110 110

#define STATE_111 111

#define STATE_112 112

#define STATE_113 113

#define STATE_114 114

#define STATE_115 115

#define STATE_116 116

#define STATE_117 117

#define STATE_118 118

#define STATE_119 119

#define STATE_120 120

#define STATE_121 121

#define STATE_122 122

#define STATE_123 123

#define STATE_124 124

#define STATE_125 125

#define STATE_126 126

#define STATE_127 127

#define STATE_128 128

#define STATE_129 129

#define STATE_130 130

#define STATE_131 131

#define STATE_132 132

#define STATE_133 133

#define STATE_134 134

#define STATE_135 135

#define STATE_136 136

// Defining symbolics for grammar productions

#define _START___Program_ 0

#define __Program__ProgName_Declarations_StructStatement_TKN_TOCHKA_ 1

#define _ProgName__ 2

#define _ProgName__TKN_PROGRAM_TKN_ID_TKN_TOCHKA-ZPT_ 3

#define _Declarations__ 4

#define _Declarations__Declarations_DeclarationSection_ 5

#define _DeclarationSection__DeclarationsVar_ 6

#define _DeclarationSection__DeclarationsConst_ 7

#define _DeclarationsConst__TKN_CONST_ConstDecs_ 8

#define _ConstDecs__SingleConstDec_ 9

#define _ConstDecs__ConstDecs_SingleConstDec_ 10

#define _SingleConstDec__TKN_ID_TKN_REL_EQUAL_Expression_TKN_TOCHKA-ZPT_ 11

#define _DeclarationsVar__TKN_VAR_VarDecs_ 12

#define _VarDecs__SingleVarDec_ 13

#define _VarDecs__VarDecs_SingleVarDec_ 14

#define _SingleVarDec__TKN_ID_TKN_COLON_Type_TKN_TOCHKA-ZPT_ 15

#define _Type__TKN_BOOLEAN_ 16

#define _Type__TKN_CHAR_ 17

#define _Type__TKN_INTEGER_ 18

#define _Type__TKN_REAL_ 19

#define _Type__TKN_STACK_ 20

#define _Type__TKN_STRING_ 21

#define _Statement__StatementMatched_ 22

#define _Statement__StatementUnmatched_ 23

#define _StatementMatched__PartIfMatched_MatchedElse_ 24

#define _StatementMatched__StatementOther_ 25

#define _StatementUnmatched__PartIf_UnmatchedThen_ 26

#define _StatementUnmatched__PartIfMatched_UnmatchedElse_ 27

#define _PartIf__TKN_IF_Expression_ 28

#define _MatchedThen__TKN_THEN_StatementMatched_ 29

#define _MatchedElse__TKN_ELSE_StatementMatched_ 30

#define _UnmatchedThen__TKN_THEN_Statement_ 31

#define _UnmatchedElse__TKN_ELSE_StatementUnmatched_ 32

#define _Statement__ 33

#define _StatementMatched__ForInit_StatementMatched_ 34

#define _StatementUnmatched__ForInit_StatementUnmatched_ 35

#define _PartIfMatched__PartIf_MatchedThen_ 36

#define _StatementMatched__WhileInit_StatementMatched_ 37

#define _StatementUnmatched__WhileInit_StatementUnmatched_ 38

#define _StatementOther__StructStatement_ 39

#define _StatementOther__Assignment_ 40

#define _StatementOther__StatementIO_ 41

#define _StatementOther__Procedure_ 42

#define _StructStatement__TKN_BEGIN_StatementListNonEmpty_TKN_END_ 43

#define _StatementListNonEmpty__Statement_ 44

#define _StatementListNonEmpty__StatementListNonEmpty_TKN_TOCHKA-ZPT_Statement_ 45

#define _Assignment__TKN_ID_TKN_ASSIGN_Expression_ 46

#define _ForInit__TKN_FOR_TKN_ID_TKN_ASSIGN_Expression_TKN_TO_Expression_TKN_DO_ 47

#define _WhileInit__WhileKeyword_Expression_TKN_DO_ 48

#define _WhileKeyword__TKN_WHILE_ 49

#define _Expression__Expression_TKN_OR_ExprDisjunctor_ 50

#define _Expression__ExprDisjunctor_ 51

#define _ExprDisjunctor__ExprDisjunctor_TKN_AND_ExprConjunctor_ 52

#define _ExprDisjunctor__ExprConjunctor_ 53

#define _ExprConjunctor__ExprConjunctor_ExprRelation_ExprRelator_ 54

#define _ExprConjunctor__ExprRelator_ 55

#define _ExprRelation__TKN_REL_EQUAL_ 56

#define _ExprRelation__TKN_REL_NOT_EQUAL_ 57

#define _ExprRelator__ExprRelator_TKN_PLUS_ExprConstituent_ 58

#define _ExprRelator__ExprConstituent_ 59

#define _ExprConstituent__ExprConstituent_TKN_MULT_ExprMultiplier_ 60

#define _ExprConstituent__ExprMultiplier_ 61

#define _ExprMultiplier__TKN_BRACKET_OPEN_Expression_TKN_BRACKET_CLOSE_ 62

#define _ExprMultiplier__TKN_NOT_ExprMultiplier_ 63

#define _ExprMultiplier__TKN_PLUS_ExprMultiplier_ 64

#define _ExprMultiplier__ExprAtom_ 65

#define _ExprAtom__TKN_ID_ 66

#define _ExprAtom__TKN_LITER_CHAR_ 67

#define _ExprAtom__TKN_LITER_INT_ 68

#define _ExprAtom__TKN_LITER_REAL_ 69

#define _ExprAtom__TKN_LITER_STRING_ 70

#define _ExprAtom__TKN_TRUE_ 71

#define _ExprAtom__TKN_FALSE_ 72

#define _ExprAtom__Function_ 73

#define _StatementIO__TKN_READ_TKN_BRACKET_OPEN_TKN_ID_TKN_BRACKET_CLOSE_ 74

#define _StatementIO__TKN_WRITE_TKN_BRACKET_OPEN_Expression_TKN_BRACKET_CLOSE_ 75

#define _StatementIO__TKN_WRITELN_ 76

#define _Procedure__TKN_PUSH_TKN_BRACKET_OPEN_TKN_ID_TKN_ZPT_Expression_TKN_BRACKET_CLOSE_ 77

#define _Function__TKN_TOP_TKN_BRACKET_OPEN_TKN_ID_TKN_BRACKET_CLOSE_ 78

#define _Procedure__TKN_POP_TKN_BRACKET_OPEN_TKN_ID_TKN_BRACKET_CLOSE_ 79

// Defining external links

extern ENUM_TOKENS PASCAL_Terms[];

extern RuleInfo PASCAL_Rules[];

extern GInfo PASCAL_Goto[];

extern FInfo PASCAL_Action[];

45

Соседние файлы в папке Docs