-
Notifications
You must be signed in to change notification settings - Fork 1
/
Arvore.hs
204 lines (166 loc) · 4.34 KB
/
Arvore.hs
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
module Arvore where
import Text.ParserCombinators.Parsec
import Text.Parsec.Prim
import Text.Parsec.Combinator
import Data.Functor.Identity
import Text.Show.Functions
import Lexico
type ParseArgs = ParsecT [Token] () Identity
data PROGRAMA = CRIAPROG ESTRS deriving (Eq,Show)
data ESTRS =
INICIOESTRS [ESTR] DECS
deriving (Eq,Show)
data DECS =
INICIODECS [DEC] FUNCS
deriving (Eq,Show)
data FUNCS =
INICIOFUNCS [SUBPROG] MAIN
deriving (Eq,Show)
data SUBPROG =
CRIAFUNC FUNC |
CRIAOPER OPER |
CRIAPROC PROC
deriving (Eq,Show)
data DEC =
NOVADEC [PONT] {-TIPO-}Token [VAR_]
deriving (Eq,Show)
data PONT =
NOVOPONT {-PONTEIRO-}Token {-Vetor ou nao-}Bool
deriving (Eq,Show)
data VAR_ =
VAR_SEM SingleVAR |
VAR_COM ATRIB
deriving (Eq,Show)
data ESTR =
NOVOESTR {-TIPO-}Token [DEC]
deriving (Eq,Show)
data FUNC =
NOVOFUNC {-ID-}Token [PARAM] [PONT] {-TIPO-}Token [STMT]
deriving (Eq,Show)
data PROC =
NOVOPROC {-ID-}Token [PARAM] [STMT]
deriving (Eq,Show)
data OPER =
NOVOOPER OP [PARAM] [PONT] {-TIPO-}Token [STMT]
deriving (Eq,Show)
data OP =
NOVOAdd {-Add-}Token |
NOVOSub {-Sub-}Token |
NOVOMult {-Mult-}Token |
NOVODiv {-Div-}Token |
NOVOGeq {-Geq-}Token |
NOVOLeq {-Leq-}Token |
NOVODiff {-Diff-}Token |
NOVOEqual {-Equal-}Token |
NOVOGreat {-Great-}Token |
NOVOLess {-Less-}Token |
NOVONot {-Not-}Token
deriving (Eq,Show)
data PARAM =
NOVOPARAM [PONT] {-TIPO-}Token SingleVAR
deriving (Eq,Show)
data MAIN =
Main [STMT]
deriving (Eq,Show)
data STMT =
NOVODEC DEC |
NOVOATRIBSTMT EXPR {-Attrib-}Token EXPR |
NOVOINC INC |
NOVODECR DECR |
NOVOCHAMADA CHAMADA |
NOVOSE NodeSE |
NOVOENQUANTO NodeENQUANTO |
NOVORETORNEFUNC RETORNEFUNC |
NOVORETORNEPROC RETORNEPROC |
NOVOSAIA NodeSAIA |
NOVOCONTINUE NodeCONTINUE |
NOVODELETE NodeDELETE |
NOVOESCREVA NodeESCREVA |
NOVOLEIA NodeLEIA |
NOVOBLOCO NodeBLOCO
deriving (Eq,Show)
data RETORNEFUNC =
CRIARETORNEF {-RETORNE-}Token EXPR
deriving (Eq,Show)
data RETORNEPROC =
CRIARETORNEP {-RETORNE-}Token
deriving (Eq,Show)
data ATRIB =
CRIAATRIB SingleVAR EXPR
deriving (Eq,Show)
data INC =
CRIAINC EXPR
deriving (Eq,Show)
data DECR =
CRIADECR EXPR
deriving (Eq,Show)
data CHAMADA =
CRIACHAMADA {-ID-}Token [EXPR]
deriving (Eq,Show)
data NodeLEIA =
CRIALEIA {-LEIA-}Token [EXPR]
deriving (Eq,Show)
data NodeESCREVA =
CRIAESCREVA {-ESCREVA-}Token EXPR
deriving (Eq,Show)
data NodeBLOCO =
CRIABLOCO [STMT]
deriving (Eq,Show)
data EXPR =
CRIAOU EXPR Token EXPR |
CRIASLOWOU EXPR Token EXPR |
CRIAE EXPR Token EXPR |
CRIASLOWE EXPR Token EXPR |
CRIALESS EXPR Token EXPR |
CRIALEQ EXPR Token EXPR |
CRIAEQUAL EXPR Token EXPR |
CRIAGEQ EXPR Token EXPR |
CRIAGREAT EXPR Token EXPR |
CRIADIFF EXPR Token EXPR |
CRIAADD EXPR Token EXPR |
CRIASUB EXPR Token EXPR |
CRIAMULT EXPR Token EXPR |
CRIADIV EXPR Token EXPR |
CRIAMOD EXPR Token EXPR |
CRIANEG Token EXPR |
CRIANOT Token EXPR |
CRIATEXTO {-TEXTO-}Token |
CRIAINT {-INTEIRO-}Token |
CRIACARACTERE {-CARACTERE-}Token |
CRIALOGICO {-LOGICO-}Token |
CRIAREAL {-REAL-}Token |
CRIANULO {-NULO-}Token |
CRIAVAR VAR |
CRIACHAMADAFUNC CHAMADA [SingleVAR] |
CRIANOVO {-NOVO-}Token [PONT] {-TIPO-}Token OptionalSQBRACK |
CRIAVALOREXPR {-VALOR-}Token EXPR OptionalSQBRACK [SingleVAR] |
CRIAPARENTESES EXPR {-CloseSQBrack-}Token OptionalSQBRACK [SingleVAR] |
CRIACONVERSAO {-TIPO-}Token EXPR
deriving (Eq,Show)
data VAR =
Var [SingleVAR]
deriving (Eq,Show)
data SingleVAR =
SingleVar {-ID-}Token OptionalSQBRACK
deriving (Eq,Show)
data OptionalSQBRACK =
OptionalSQBrack [EXPR]
deriving (Eq,Show)
data NodeSE =
CRIASE Token EXPR [STMT] OptionalSENAO
deriving (Eq,Show)
data OptionalSENAO =
OptionalSenao [STMT]
deriving (Eq,Show)
data NodeENQUANTO =
CRIAENQUANTO {-ENQUANTO-}Token EXPR [STMT]
deriving (Eq,Show)
data NodeCONTINUE =
CRIACONTINUE {-CONTINUE-}Token
deriving (Eq,Show)
data NodeSAIA =
CRIASAIA {-SAIA-}Token
deriving (Eq,Show)
data NodeDELETE =
CRIADELETE {-DELETE-}Token EXPR
deriving (Eq,Show)