annotate python/c3/astnodes.py @ 215:c1ccb1cb4cef

Major changes in c3 frontend
author Windel Bouwman
date Fri, 05 Jul 2013 13:00:03 +0200
parents 003c8a976fff
children 8b2e5f3cd579
rev   line source
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
1 """
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
2 AST (abstract syntax tree) nodes for the c3 language.
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
3 The tree is build by the parser.
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
4 Then it is checked
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
5 Finally code is generated from it.
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
6 """
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
7
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
8 class Node:
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
9 pass
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
10
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
11 # Modules
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
12 class Package(Node):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
13 def __init__(self, name, loc):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
14 self.name = name
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
15 self.loc = loc
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
16 self.declarations = []
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
17 def __repr__(self):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
18 return 'PACKAGE {}'.format(self.name)
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
19
150
4ae0e02599de Added type check start and analyze phase
Windel Bouwman
parents: 149
diff changeset
20 class Designator(Node):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
21 def __init__(self, tname, loc):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
22 self.tname = tname
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
23 self.loc = loc
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
24 def __repr__(self):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
25 return 'DESIGNATOR {}'.format(self.tname)
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
26
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
27 """
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
28 Type classes
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
29
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
30 types must be comparable.
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
31
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
32 There are the following types:
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
33 - base type
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
34 - struct type
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
35 - pointer type
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
36 - typedef type
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
37 - function type
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
38 """
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
39
149
74241ca312cc Fixes on parser and semantics
Windel Bouwman
parents: 148
diff changeset
40 class Type(Node):
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
41 def isType(self, b):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
42 return isType(self, b)
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
43
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
44 class BaseType(Type):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
45 def __init__(self, name):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
46 self.name = name
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
47 def __repr__(self):
212
62386bcee1ba Added parser combinator lib
Windel Bouwman
parents: 186
diff changeset
48 return '{}'.format(self.name)
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
49
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
50 class FunctionType(Type):
167
0b5b2ee6b435 Added 2 unit tests
Windel Bouwman
parents: 166
diff changeset
51 def __init__(self, parametertypes, returntype):
0b5b2ee6b435 Added 2 unit tests
Windel Bouwman
parents: 166
diff changeset
52 self.parametertypes = parametertypes
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
53 self.returntype = returntype
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
54 def __repr__(self):
167
0b5b2ee6b435 Added 2 unit tests
Windel Bouwman
parents: 166
diff changeset
55 params = ', '.join([str(v) for v in self.parametertypes])
165
598d3888a11c Added front class and fided AST view
Windel Bouwman
parents: 163
diff changeset
56 return '{1} f({0})'.format(params, self.returntype)
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
57
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
58 class PointerType(Type):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
59 def __init__(self, ptype):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
60 self.ptype = ptype
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
61
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
62 class StructureType(Type):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
63 def __init__(self, mems):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
64 self.mems = mems
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
65
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
66 class DefinedType(Type):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
67 def __init__(self, name, typ):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
68 self.name = name
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
69 self.typ = typ
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
70 def __repr__(self):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
71 return 'Named type {0} of type {1}'.format(self.name, self.typ)
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
72
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
73 # Variables, parameters, local variables, constants:
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
74 class Symbol(Node):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
75 def __init__(self, name):
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
76 self.name = name
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
77 self.refs = []
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
78 def addRef(self, r):
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
79 self.refs.append(r)
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
80 @property
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
81 def References(self):
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
82 return self.refs
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
83
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
84 class Constant(Symbol):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
85 def __init__(self, name, typ, value):
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
86 super().__init__(name)
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
87 self.typ = typ
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
88 self.value = value
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
89 def __repr__(self):
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
90 return 'CONSTANT {0} = {1}'.format(self.name, self.value)
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
91
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
92 class Variable(Symbol):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
93 def __init__(self, name, typ):
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
94 super().__init__(name)
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
95 self.typ = typ
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
96 self.ival = None
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
97 self.isLocal = False
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
98 self.isReadOnly = False
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
99 self.isParameter = False
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
100 def __repr__(self):
212
62386bcee1ba Added parser combinator lib
Windel Bouwman
parents: 186
diff changeset
101 return '{}'.format(self.name)
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
102
150
4ae0e02599de Added type check start and analyze phase
Windel Bouwman
parents: 149
diff changeset
103 # Procedure types
4ae0e02599de Added type check start and analyze phase
Windel Bouwman
parents: 149
diff changeset
104 class Function(Symbol):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
105 """ Actual implementation of a function """
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
106 def __init__(self, name, loc):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
107 super().__init__(name)
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
108 self.loc = loc
215
c1ccb1cb4cef Major changes in c3 frontend
Windel Bouwman
parents: 213
diff changeset
109 self.declarations = []
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
110
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
111 def __repr__(self):
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
112 return '{}'.format(self.name)
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
113
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
114 # Operations / Expressions:
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
115 class Unop(Node):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
116 def __init__(self, a, op):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
117 self.a = a
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
118 self.op = op
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
119 def __repr__(self):
212
62386bcee1ba Added parser combinator lib
Windel Bouwman
parents: 186
diff changeset
120 return 'UNOP {}'.format(self.op)
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
121
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
122 class Binop(Node):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
123 def __init__(self, a, op, b, loc):
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
124 self.a = a
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
125 self.b = b
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
126 self.op = op # Operation: '+', '-', '*', '/', 'mod'
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
127 self.loc = loc
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
128 def __repr__(self):
212
62386bcee1ba Added parser combinator lib
Windel Bouwman
parents: 186
diff changeset
129 return 'BINOP {}'.format(self.op)
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
130
150
4ae0e02599de Added type check start and analyze phase
Windel Bouwman
parents: 149
diff changeset
131 class VariableUse(Node):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
132 def __init__(self, target, loc):
150
4ae0e02599de Added type check start and analyze phase
Windel Bouwman
parents: 149
diff changeset
133 self.target = target
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
134 self.loc = loc
150
4ae0e02599de Added type check start and analyze phase
Windel Bouwman
parents: 149
diff changeset
135 def __repr__(self):
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
136 nm = self.target.name if hasattr(self.target, 'name') else ''
212
62386bcee1ba Added parser combinator lib
Windel Bouwman
parents: 186
diff changeset
137 return 'VAR USE {}'.format(nm)
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
138
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
139 class Literal(Node):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
140 def __init__(self, val, loc):
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
141 self.val = val
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
142 self.loc = loc
163
8104fc8b5e90 Added visitor to c3
Windel Bouwman
parents: 158
diff changeset
143 def __repr__(self):
212
62386bcee1ba Added parser combinator lib
Windel Bouwman
parents: 186
diff changeset
144 return 'LITERAL {}'.format(self.val)
150
4ae0e02599de Added type check start and analyze phase
Windel Bouwman
parents: 149
diff changeset
145
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
146
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
147 # Statements
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
148 class CompoundStatement(Node):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
149 def __init__(self, statements):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
150 self.statements = statements
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
151 def __repr__(self):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
152 return 'COMPOUND STATEMENT'
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
153
155
b28a11c01dbe Simplified IR classes
Windel Bouwman
parents: 150
diff changeset
154 class EmptyStatement(Node):
158
9683a4cd848f Added some functions for code generation
Windel Bouwman
parents: 155
diff changeset
155 def __repr__(self):
9683a4cd848f Added some functions for code generation
Windel Bouwman
parents: 155
diff changeset
156 return 'NOP'
155
b28a11c01dbe Simplified IR classes
Windel Bouwman
parents: 150
diff changeset
157
149
74241ca312cc Fixes on parser and semantics
Windel Bouwman
parents: 148
diff changeset
158 class ReturnStatement(Node):
74241ca312cc Fixes on parser and semantics
Windel Bouwman
parents: 148
diff changeset
159 def __init__(self, expr):
74241ca312cc Fixes on parser and semantics
Windel Bouwman
parents: 148
diff changeset
160 self.expr = expr
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
161 def __repr__(self):
149
74241ca312cc Fixes on parser and semantics
Windel Bouwman
parents: 148
diff changeset
162 return 'RETURN STATEMENT'
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
163
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
164 class Assignment(Node):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
165 def __init__(self, lval, rval, loc):
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
166 self.lval = lval
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
167 self.rval = rval
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
168 self.loc = loc
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
169 def __repr__(self):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
170 return 'ASSIGNMENT'
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
171
167
0b5b2ee6b435 Added 2 unit tests
Windel Bouwman
parents: 166
diff changeset
172 class FunctionCall(Node):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
173 def __init__(self, proc, args, loc):
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
174 self.proc = proc
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
175 self.args = args
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
176 self.loc = loc
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
177 def __repr__(self):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
178 return 'CALL {0} '.format(self.proc)
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
179
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
180 class IfStatement(Node):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
181 def __init__(self, condition, truestatement, falsestatement, loc):
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
182 self.condition = condition
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
183 self.truestatement = truestatement
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
184 self.falsestatement = falsestatement
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
185 self.loc = loc
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
186 def __repr__(self):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
187 return 'IF-statement'
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
188
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
189 class WhileStatement(Node):
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
190 def __init__(self, condition, statement, loc):
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
191 self.condition = condition
213
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
192 self.statement = statement
003c8a976fff Merge of semantics and parser again ..
Windel Bouwman
parents: 212
diff changeset
193 self.loc = loc
148
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
194 def __repr__(self):
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
195 return 'WHILE-statement'
e5263f74b287 Added c3 language frontend initial parser
Windel Bouwman
parents:
diff changeset
196