blob: 39618a3ce153cc3cf57c3ad6017b79e31ec8c08a [file] [log] [blame]
Sapan Bhatia64c72512017-06-23 02:32:45 -07001from helpers import Base, SourceElement
Dusan Klinecccaa0d92014-11-09 03:21:31 +01002
Zack Williamsbe7f36d2018-02-02 11:37:11 -07003
Dusan Klinece26bb022014-11-09 12:21:37 +01004class PackageStatement(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -07005
Dusan Klinecc9b031a2014-11-10 13:21:08 +01006 def __init__(self, name, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -07007 super(
8 PackageStatement,
9 self).__init__(
10 linespan=linespan,
11 lexspan=lexspan,
12 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +010013 self._fields += ['name']
Dusan Klinecccaa0d92014-11-09 03:21:31 +010014 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +010015 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010016
17 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +010018 visitor.visit_PackageStatement(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010019
Zack Williamsbe7f36d2018-02-02 11:37:11 -070020
Dusan Klinecccaa0d92014-11-09 03:21:31 +010021class ImportStatement(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -070022
Dusan Klinecc9b031a2014-11-10 13:21:08 +010023 def __init__(self, name, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -070024 super(
25 ImportStatement,
26 self).__init__(
27 linespan=linespan,
28 lexspan=lexspan,
29 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +010030 self._fields += ['name']
Dusan Klinecccaa0d92014-11-09 03:21:31 +010031 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +010032 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010033
34 def accept(self, visitor):
35 visitor.visit_ImportStatement(self)
36
Zack Williamsbe7f36d2018-02-02 11:37:11 -070037
Dusan Klinece26bb022014-11-09 12:21:37 +010038class OptionStatement(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -070039
Dusan Klinecc9b031a2014-11-10 13:21:08 +010040 def __init__(self, name, value, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -070041 super(
42 OptionStatement,
43 self).__init__(
44 linespan=linespan,
45 lexspan=lexspan,
46 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +010047 self._fields += ['name', 'value']
Dusan Klinecccaa0d92014-11-09 03:21:31 +010048 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +010049 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010050 self.value = value
Dusan Klinec1064fb32014-11-10 21:48:50 +010051 Base.p(self.value, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010052
53 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +010054 visitor.visit_OptionStatement(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010055
Zack Williamsbe7f36d2018-02-02 11:37:11 -070056
Dusan Klinece26bb022014-11-09 12:21:37 +010057class FieldDirective(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -070058
Dusan Klinecc9b031a2014-11-10 13:21:08 +010059 def __init__(self, name, value, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -070060 super(
61 FieldDirective,
62 self).__init__(
63 linespan=linespan,
64 lexspan=lexspan,
65 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +010066 self._fields += ['name', 'value']
Dusan Klinecccaa0d92014-11-09 03:21:31 +010067 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +010068 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010069 self.value = value
Dusan Klinec1064fb32014-11-10 21:48:50 +010070 Base.p(self.value, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010071
72 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +010073 if visitor.visit_FieldDirective(self):
74 self.v(self.name, visitor)
75 self.v(self.value, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +020076 visitor.visit_FieldDirective_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010077
Zack Williamsbe7f36d2018-02-02 11:37:11 -070078
Dusan Klinece26bb022014-11-09 12:21:37 +010079class FieldType(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -070080
Dusan Klinecc9b031a2014-11-10 13:21:08 +010081 def __init__(self, name, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -070082 super(
83 FieldType,
84 self).__init__(
85 linespan=linespan,
86 lexspan=lexspan,
87 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +010088 self._fields += ['name']
Dusan Klinecccaa0d92014-11-09 03:21:31 +010089 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +010090 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010091
92 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +010093 if visitor.visit_FieldType(self):
94 self.v(self.name, visitor)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010095
Zack Williamsbe7f36d2018-02-02 11:37:11 -070096
Sapan Bhatiab1225872017-03-29 20:47:47 +020097class LinkDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -070098
99 def __init__(
100 self,
101 link_type,
102 src_port,
103 name,
104 through,
105 dst_port,
106 linespan=None,
107 lexspan=None,
108 p=None):
109 super(
110 LinkDefinition,
111 self).__init__(
112 linespan=linespan,
113 lexspan=lexspan,
114 p=p)
115 self._fields += ['link_type', 'src_port',
116 'name', 'dst_port', 'through']
Sapan Bhatiab1225872017-03-29 20:47:47 +0200117 self.link_type = link_type
118 Base.p(self.link_type, self)
Sapan Bhatia78fee772017-04-21 19:00:48 +0200119
Sapan Bhatiab1225872017-03-29 20:47:47 +0200120 self.src_port = src_port
121 Base.p(self.src_port, self)
Sapan Bhatia78fee772017-04-21 19:00:48 +0200122
Sapan Bhatiab1225872017-03-29 20:47:47 +0200123 self.name = name
124 Base.p(self.name, self)
Sapan Bhatia78fee772017-04-21 19:00:48 +0200125
126 self.through = through
127 Base.p(self.through, self)
128
Sapan Bhatiab1225872017-03-29 20:47:47 +0200129 self.dst_port = dst_port
130 Base.p(self.dst_port, self)
131
132 def accept(self, visitor):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700133 visitor.visit_LinkDefinition(self)
134
Sapan Bhatiab1225872017-03-29 20:47:47 +0200135
Dusan Klinece26bb022014-11-09 12:21:37 +0100136class FieldDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700137
138 def __init__(
139 self,
140 field_modifier,
141 ftype,
142 name,
143 policy,
144 fieldId,
145 fieldDirective,
146 linespan=None,
147 lexspan=None,
148 p=None):
149 super(
150 FieldDefinition,
151 self).__init__(
152 linespan=linespan,
153 lexspan=lexspan,
154 p=p)
155 self._fields += ['field_modifier', 'ftype',
156 'name', 'fieldId', 'policy', 'fieldDirective']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100157 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100158 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100159 self.field_modifier = field_modifier
Dusan Klinec1064fb32014-11-10 21:48:50 +0100160 Base.p(self.field_modifier, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100161 self.ftype = ftype
Dusan Klinec1064fb32014-11-10 21:48:50 +0100162 Base.p(self.ftype, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100163 self.fieldId = fieldId
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700164 self.policy = policy
Sapan Bhatia84a29242017-06-24 07:40:33 -0700165 Base.p(self.policy, self)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700166
Dusan Klinec1064fb32014-11-10 21:48:50 +0100167 Base.p(self.fieldId, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100168 self.fieldDirective = fieldDirective
Dusan Klinec1064fb32014-11-10 21:48:50 +0100169 Base.p(self.fieldDirective, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100170
171 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100172 if visitor.visit_FieldDefinition(self):
173 self.v(self.name, visitor)
174 self.v(self.field_modifier, visitor)
175 self.v(self.ftype, visitor)
176 self.v(self.fieldId, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100177 self.v(self.fieldDirective, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200178 visitor.visit_FieldDefinition_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100179
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700180
Dusan Klinece26bb022014-11-09 12:21:37 +0100181class EnumFieldDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700182
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100183 def __init__(self, name, fieldId, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700184 super(
185 EnumFieldDefinition,
186 self).__init__(
187 linespan=linespan,
188 lexspan=lexspan,
189 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100190 self._fields += ['name', 'fieldId']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100191 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100192 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100193 self.fieldId = fieldId
Dusan Klinec1064fb32014-11-10 21:48:50 +0100194 Base.p(self.fieldId, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100195
196 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100197 if visitor.visit_EnumFieldDefinition(self):
198 self.v(self.name, visitor)
199 self.v(self.fieldId, visitor)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100200
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700201
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700202class ReduceDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700203
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700204 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700205 super(
206 ReduceDefinition,
207 self).__init__(
208 linespan=linespan,
209 lexspan=lexspan,
210 p=p)
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700211 self._fields += ['name', 'body']
212 self.name = name
213 Base.p(self.name, self)
214 self.body = body
215 Base.p(self.body, self)
216
217 def accept(self, visitor):
218 if visitor.visit_EnumDefinition(self):
219 self.v(self.name, visitor)
220 self.v(self.body, visitor)
221
222
223class MapDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700224
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700225 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700226 super(
227 MapDefinition,
228 self).__init__(
229 linespan=linespan,
230 lexspan=lexspan,
231 p=p)
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700232 self._fields += ['name', 'body']
233 self.name = name
234 Base.p(self.name, self)
235 self.body = body
236 Base.p(self.body, self)
237
238 def accept(self, visitor):
239 if visitor.visit_EnumDefinition(self):
240 self.v(self.name, visitor)
241 self.v(self.body, visitor)
242
243
Sapan Bhatia64c72512017-06-23 02:32:45 -0700244class PolicyDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700245
Sapan Bhatia64c72512017-06-23 02:32:45 -0700246 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700247 super(
248 PolicyDefinition,
249 self).__init__(
250 linespan=linespan,
251 lexspan=lexspan,
252 p=p)
Sapan Bhatia64c72512017-06-23 02:32:45 -0700253 self._fields += ['name', 'body']
254 self.name = name
255 Base.p(self.name, self)
256 self.body = body
257 Base.p(self.body, self)
258
259 def accept(self, visitor):
Sapan Bhatia2fc2a942017-07-13 21:18:00 -0400260 if visitor.visit_PolicyDefinition(self):
Sapan Bhatia64c72512017-06-23 02:32:45 -0700261 self.v(self.name, visitor)
262 self.v(self.body, visitor)
263
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700264
Dusan Klinece26bb022014-11-09 12:21:37 +0100265class EnumDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700266
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100267 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700268 super(
269 EnumDefinition,
270 self).__init__(
271 linespan=linespan,
272 lexspan=lexspan,
273 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100274 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100275 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100276 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100277 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100278 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100279
280 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +0100281 if visitor.visit_EnumDefinition(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100282 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100283 self.v(self.body, visitor)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100284
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700285
Sapan Bhatiab1225872017-03-29 20:47:47 +0200286class LinkSpec(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700287
288 def __init__(
289 self,
290 field_spec,
291 link_spec,
292 linespan=None,
293 lexspan=None,
294 p=None):
Sapan Bhatiab1225872017-03-29 20:47:47 +0200295 super(LinkSpec, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
296 self._fields += ['link_def', 'field_def']
297 self.link_def = link_spec
298 Base.p(self.link_def, self)
299 self.field_def = field_spec
300 Base.p(self.field_def, self)
301
302 def accept(self, visitor):
303 if visitor.visit_LinkSpec(self):
304 self.v(self.link_def, visitor)
305 self.v(self.field_def, visitor)
306 visitor.visit_LinkSpec_post(self)
307
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700308
Sapan Bhatiab1225872017-03-29 20:47:47 +0200309class MessageDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700310
311 def __init__(
312 self,
313 name,
314 policy,
315 bases,
316 body,
317 linespan=None,
318 lexspan=None,
319 p=None):
320 super(
321 MessageDefinition,
322 self).__init__(
323 linespan=linespan,
324 lexspan=lexspan,
325 p=p)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700326 self._fields += ['name', 'policy', 'bases', 'body']
327
Sapan Bhatiab1225872017-03-29 20:47:47 +0200328 self.name = name
329 Base.p(self.name, self)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700330
331 self.policy = policy
332 Base.p(self.policy, self)
333
Sapan Bhatia87792a12017-04-10 19:35:05 -0700334 self.bases = bases
335 Base.p(self.bases, self)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700336
Sapan Bhatiab1225872017-03-29 20:47:47 +0200337 self.body = body
338 Base.p(self.body, self)
339
340 def accept(self, visitor):
341 if visitor.visit_MessageDefinition(self):
342 self.v(self.name, visitor)
Sapan Bhatia87792a12017-04-10 19:35:05 -0700343 self.v(self.bases, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200344 self.v(self.body, visitor)
345 visitor.visit_MessageDefinition_post(self)
346
347
348"""
Dusan Klinece26bb022014-11-09 12:21:37 +0100349class MessageDefinition(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100350 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
351 super(MessageDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
352 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100353 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100354 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100355 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100356 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100357
358 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +0100359 if visitor.visit_MessageDefinition(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100360 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100361 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200362 visitor.visit_MessageDefinition_post(self)
363"""
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100364
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700365
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100366class MessageExtension(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700367
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100368 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700369 super(
370 MessageExtension,
371 self).__init__(
372 linespan=linespan,
373 lexspan=lexspan,
374 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100375 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100376 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100377 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100378 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100379 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100380
381 def accept(self, visitor):
382 if visitor.visit_MessageExtension(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100383 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100384 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200385 visitor.visit_MessageExtension_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100386
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700387
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100388class MethodDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700389
390 def __init__(
391 self,
392 name,
393 name2,
394 name3,
395 linespan=None,
396 lexspan=None,
397 p=None):
398 super(
399 MethodDefinition,
400 self).__init__(
401 linespan=linespan,
402 lexspan=lexspan,
403 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100404 self._fields += ['name', 'name2', 'name3']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100405 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100406 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100407 self.name2 = name2
Dusan Klinec1064fb32014-11-10 21:48:50 +0100408 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100409 self.name3 = name3
Dusan Klinec1064fb32014-11-10 21:48:50 +0100410 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100411
412 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100413 if visitor.visit_MethodDefinition(self):
414 self.v(self.name, visitor)
415 self.v(self.name2, visitor)
416 self.v(self.name3, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200417 visitor.visit_MethodDefinition_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100418
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700419
Dusan Klinece26bb022014-11-09 12:21:37 +0100420class ServiceDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700421
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100422 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700423 super(
424 ServiceDefinition,
425 self).__init__(
426 linespan=linespan,
427 lexspan=lexspan,
428 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100429 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100430 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100431 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100432 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100433 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100434
435 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +0100436 if visitor.visit_ServiceDefinition(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100437 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100438 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200439 visitor.visit_ServiceDefinition_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100440
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700441
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100442class ExtensionsMax(SourceElement):
443 pass
444
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700445
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100446class ExtensionsDirective(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700447
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100448 def __init__(self, fromVal, toVal, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700449 super(
450 ExtensionsDirective,
451 self).__init__(
452 linespan=linespan,
453 lexspan=lexspan,
454 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100455 self._fields += ['fromVal', 'toVal']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100456 self.fromVal = fromVal
Dusan Klinec1064fb32014-11-10 21:48:50 +0100457 Base.p(self.fromVal, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100458 self.toVal = toVal
Dusan Klinec1064fb32014-11-10 21:48:50 +0100459 Base.p(self.toVal, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100460
461 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100462 if visitor.visit_ExtensionsDirective(self):
463 self.v(self.fromVal, visitor)
464 self.v(self.toVal, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200465 visitor.visit_ExtensionsDirective_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100466
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700467
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100468class Literal(SourceElement):
469
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100470 def __init__(self, value, linespan=None, lexspan=None, p=None):
471 super(Literal, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
472 self._fields += ['value']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100473 self.value = value
474
475 def accept(self, visitor):
476 visitor.visit_Literal(self)
477
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700478
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100479class Name(SourceElement):
480
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100481 def __init__(self, value, linespan=None, lexspan=None, p=None):
482 super(Name, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
483 self._fields += ['value']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100484 self.value = value
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100485 self.deriveLex()
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100486
487 def append_name(self, name):
488 try:
489 self.value = self.value + '.' + name.value
490 except:
491 self.value = self.value + '.' + name
492
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100493 def deriveLex(self):
494 if hasattr(self.value, "lexspan"):
495 self.lexspan = self.value.lexspan
496 self.linespan = self.value.linespan
497 else:
498 return
499
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100500 def accept(self, visitor):
501 visitor.visit_Name(self)
502
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700503
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100504class DotName(Name):
505 elements = []
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700506
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100507 def __init__(self, elements, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700508 super(DotName, self).__init__(
509 '.'.join([str(x) for x in elements]), linespan=linespan, lexspan=lexspan, p=p)
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100510 self._fields += ['elements']
511 self.elements = elements
512 self.deriveLex()
513
514 def deriveLex(self):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700515 if isinstance(self.elements, list) and len(self.elements) > 0:
516 self.lexspan = (min([x.lexspan[0] for x in self.elements if x.lexspan[0] != 0]), max(
517 [x.lexspan[1] for x in self.elements if x.lexspan[1] != 0]))
518 self.linespan = (min([x.linespan[0] for x in self.elements if x.linespan[0] != 0]), max(
519 [x.linespan[1] for x in self.elements if x.linespan[1] != 0]))
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100520 elif hasattr(self.elements, "lexspan"):
521 self.lexspan = self.elements.lexspan
522 self.linespan = self.elements.linespan
523 else:
524 return
525
526 def accept(self, visitor):
527 visitor.visit_DotName(self)
528
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700529
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100530class ProtoFile(SourceElement):
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100531
Sapan Bhatiaff86b012017-06-11 14:44:15 -0700532 def __init__(self, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700533 super(
534 ProtoFile,
535 self).__init__(
536 linespan=linespan,
537 lexspan=lexspan,
538 p=p)
Sapan Bhatiaff86b012017-06-11 14:44:15 -0700539 self._fields += ['body']
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100540 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100541 Base.p(self.body, self)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100542
543 def accept(self, visitor):
544 if visitor.visit_Proto(self):
Dusan Klinec1064fb32014-11-10 21:48:50 +0100545 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200546 visitor.visit_Proto_post(self)