forked from EmbeddedAlchemist/CompilationPrinciples
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPreDef.cpp
More file actions
113 lines (106 loc) · 3.8 KB
/
PreDef.cpp
File metadata and controls
113 lines (106 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "Gramma.h"
using Reserved = TokenReserved::Reserved;
static const TokenReserved
_reservedConst(Reserved::Const),
_reservedVar(Reserved::Var),
_reservedProcedur(Reserved::Procedure),
_reservedBegin(Reserved::Begin),
_reservedEnd(Reserved::End),
_reservedOdd(Reserved::Odd),
_reservedIf(Reserved::If),
_reservedThen(Reserved::Then),
_reservedCall(Reserved::Call),
_reservedWhile(Reserved::While),
_reservedDo(Reserved::Do),
_reservedRead(Reserved::Read),
_reservedWrite(Reserved::Write);
using Operator = TokenOperator::Operator;
static const TokenOperator
_opPlus(Operator::Plus),
_opMinus(Operator::Minus),
_opMultiplication(Operator::Multiplication),
_opDivision(Operator::Division),
_opLess(Operator::Less),
_opLessEqual(Operator::LessEqual),
_opGreater(Operator::Greater),
_opGreaterEqual(Operator::GreaterEqual),
_opPound(Operator::Pound),
_opEqual(Operator::Equal),
_opWalrus(Operator::Walrus);
using Delimiter = TokenDelimiter::Delimiter;
static const TokenDelimiter
_deLeftBracket(Delimiter::LeftBracket),
_deRightBracket(Delimiter::RightBracket),
_deComma(Delimiter::Comma),
_deSemicolons(Delimiter::Semicolons),
_dePeriod(Delimiter::Period);
static const TokenIdentifier _id("");
static const TokenUnsigned _unsigned("0");
static const TokenEnd _end;
const Vt
Vt::Reserved::Const(&_reservedConst),
Vt::Reserved::Var(&_reservedVar),
Vt::Reserved::Procedure(&_reservedProcedur),
Vt::Reserved::Begin(&_reservedBegin),
Vt::Reserved::End(&_reservedEnd),
Vt::Reserved::Odd(&_reservedOdd),
Vt::Reserved::If(&_reservedIf),
Vt::Reserved::Then(&_reservedThen),
Vt::Reserved::Call(&_reservedCall),
Vt::Reserved::While(&_reservedWhile),
Vt::Reserved::Do(&_reservedDo),
Vt::Reserved::Read(&_reservedRead),
Vt::Reserved::Write(&_reservedWrite),
Vt::Operator::Plus(&_opPlus),
Vt::Operator::Minus(&_opMinus),
Vt::Operator::Multiplication(&_opMultiplication),
Vt::Operator::Division(&_opDivision),
Vt::Operator::Less(&_opLess),
Vt::Operator::LessEqual(&_opLessEqual),
Vt::Operator::Greater(&_opGreater),
Vt::Operator::GreaterEqual(&_opGreaterEqual),
Vt::Operator::Pound(&_opPound),
Vt::Operator::Equal(&_opEqual),
Vt::Operator::Walrus(&_opWalrus),
Vt::Delimiter::LeftBracket(&_deLeftBracket),
Vt::Delimiter::RightBracket(&_deRightBracket),
Vt::Delimiter::Comma(&_deComma),
Vt::Delimiter::Semicolons(&_deSemicolons),
Vt::Delimiter::Period(&_dePeriod),
Vt::ID(&_id),
Vt::Unsigned(&_unsigned),
Vt::End(&_end);
const Vn
Vn::Start(Vn::Type::Start),
Vn::Program(Vn::Type::Program),
Vn::SubProgram(Vn::Type::SubProgram),
Vn::ConstDesc(Vn::Type::ConstDesc),
Vn::ConstDef(Vn::Type::ConstDef),
Vn::ConstDefMore(Vn::Type::ConstDefMore),
Vn::VarDesc(Vn::Type::VarDesc),
Vn::VarDef(Vn::Type::VarDef),
Vn::VarDefMore(Vn::Type::VarDefMore),
Vn::IDMore(Vn::Type::IDMore),
Vn::ProcDesc(Vn::Type::ProcDesc),
Vn::ProcDescMore(Vn::Type::ProcDescMore),
Vn::ProcHead(Vn::Type::ProcHead),
Vn::Statement(Vn::Type::Statement),
Vn::AssignStaement(Vn::Type::AssignStaement),
Vn::CmpxStatement(Vn::Type::CmpxStatement),
Vn::StatementMore(Vn::Type::StatementMore),
Vn::Cond(Vn::Type::Cond),
Vn::Expr(Vn::Type::Expr),
Vn::ExprPrec(Vn::Type::ExprPrec),
Vn::Item(Vn::Type::Item),
Vn::ItemMore(Vn::Type::ItemMore),
Vn::Factor(Vn::Type::Factor),
Vn::FactorMore(Vn::Type::FactorMore),
Vn::PSOperator(Vn::Type::PSOperator),
Vn::MDOperator(Vn::Type::MDOperator),
Vn::RelOperator(Vn::Type::RelOperator),
Vn::CondStatement(Vn::Type::CondStatement),
Vn::CallStatement(Vn::Type::CallStatement),
Vn::WhileStatement(Vn::Type::WhileStatement),
Vn::ReadStatement(Vn::Type::ReadStatement),
Vn::WriteStatement(Vn::Type::WriteStatement),
Vn::ExprMore(Vn::Type::ExprMore);