blob: f5fe8bd253df62613b834214b6a2051ac4c9267a [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,
Scott Bakerba36b492018-09-28 17:18:41 -0700108 p=None,
109 reverse_id=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700110 super(
111 LinkDefinition,
112 self).__init__(
113 linespan=linespan,
114 lexspan=lexspan,
115 p=p)
116 self._fields += ['link_type', 'src_port',
117 'name', 'dst_port', 'through']
Sapan Bhatiab1225872017-03-29 20:47:47 +0200118 self.link_type = link_type
119 Base.p(self.link_type, self)
Sapan Bhatia78fee772017-04-21 19:00:48 +0200120
Sapan Bhatiab1225872017-03-29 20:47:47 +0200121 self.src_port = src_port
122 Base.p(self.src_port, self)
Sapan Bhatia78fee772017-04-21 19:00:48 +0200123
Sapan Bhatiab1225872017-03-29 20:47:47 +0200124 self.name = name
125 Base.p(self.name, self)
Sapan Bhatia78fee772017-04-21 19:00:48 +0200126
127 self.through = through
128 Base.p(self.through, self)
129
Sapan Bhatiab1225872017-03-29 20:47:47 +0200130 self.dst_port = dst_port
131 Base.p(self.dst_port, self)
132
Scott Bakerba36b492018-09-28 17:18:41 -0700133 self.reverse_id = reverse_id
134 Base.p(self.reverse_id, self)
135
Sapan Bhatiab1225872017-03-29 20:47:47 +0200136 def accept(self, visitor):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700137 visitor.visit_LinkDefinition(self)
138
Sapan Bhatiab1225872017-03-29 20:47:47 +0200139
Dusan Klinece26bb022014-11-09 12:21:37 +0100140class FieldDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700141
142 def __init__(
143 self,
144 field_modifier,
145 ftype,
146 name,
147 policy,
148 fieldId,
149 fieldDirective,
150 linespan=None,
151 lexspan=None,
152 p=None):
153 super(
154 FieldDefinition,
155 self).__init__(
156 linespan=linespan,
157 lexspan=lexspan,
158 p=p)
159 self._fields += ['field_modifier', 'ftype',
160 'name', 'fieldId', 'policy', 'fieldDirective']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100161 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100162 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100163 self.field_modifier = field_modifier
Dusan Klinec1064fb32014-11-10 21:48:50 +0100164 Base.p(self.field_modifier, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100165 self.ftype = ftype
Dusan Klinec1064fb32014-11-10 21:48:50 +0100166 Base.p(self.ftype, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100167 self.fieldId = fieldId
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700168 self.policy = policy
Sapan Bhatia84a29242017-06-24 07:40:33 -0700169 Base.p(self.policy, self)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700170
Dusan Klinec1064fb32014-11-10 21:48:50 +0100171 Base.p(self.fieldId, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100172 self.fieldDirective = fieldDirective
Dusan Klinec1064fb32014-11-10 21:48:50 +0100173 Base.p(self.fieldDirective, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100174
175 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100176 if visitor.visit_FieldDefinition(self):
177 self.v(self.name, visitor)
178 self.v(self.field_modifier, visitor)
179 self.v(self.ftype, visitor)
180 self.v(self.fieldId, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100181 self.v(self.fieldDirective, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200182 visitor.visit_FieldDefinition_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100183
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700184
Dusan Klinece26bb022014-11-09 12:21:37 +0100185class EnumFieldDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700186
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100187 def __init__(self, name, fieldId, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700188 super(
189 EnumFieldDefinition,
190 self).__init__(
191 linespan=linespan,
192 lexspan=lexspan,
193 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100194 self._fields += ['name', 'fieldId']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100195 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100196 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100197 self.fieldId = fieldId
Dusan Klinec1064fb32014-11-10 21:48:50 +0100198 Base.p(self.fieldId, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100199
200 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100201 if visitor.visit_EnumFieldDefinition(self):
202 self.v(self.name, visitor)
203 self.v(self.fieldId, visitor)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100204
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700205
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700206class ReduceDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700207
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700208 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700209 super(
210 ReduceDefinition,
211 self).__init__(
212 linespan=linespan,
213 lexspan=lexspan,
214 p=p)
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700215 self._fields += ['name', 'body']
216 self.name = name
217 Base.p(self.name, self)
218 self.body = body
219 Base.p(self.body, self)
220
221 def accept(self, visitor):
222 if visitor.visit_EnumDefinition(self):
223 self.v(self.name, visitor)
224 self.v(self.body, visitor)
225
226
227class MapDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700228
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700229 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700230 super(
231 MapDefinition,
232 self).__init__(
233 linespan=linespan,
234 lexspan=lexspan,
235 p=p)
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700236 self._fields += ['name', 'body']
237 self.name = name
238 Base.p(self.name, self)
239 self.body = body
240 Base.p(self.body, self)
241
242 def accept(self, visitor):
243 if visitor.visit_EnumDefinition(self):
244 self.v(self.name, visitor)
245 self.v(self.body, visitor)
246
247
Sapan Bhatia64c72512017-06-23 02:32:45 -0700248class PolicyDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700249
Sapan Bhatia64c72512017-06-23 02:32:45 -0700250 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700251 super(
252 PolicyDefinition,
253 self).__init__(
254 linespan=linespan,
255 lexspan=lexspan,
256 p=p)
Sapan Bhatia64c72512017-06-23 02:32:45 -0700257 self._fields += ['name', 'body']
258 self.name = name
259 Base.p(self.name, self)
260 self.body = body
261 Base.p(self.body, self)
262
263 def accept(self, visitor):
Sapan Bhatia2fc2a942017-07-13 21:18:00 -0400264 if visitor.visit_PolicyDefinition(self):
Sapan Bhatia64c72512017-06-23 02:32:45 -0700265 self.v(self.name, visitor)
266 self.v(self.body, visitor)
267
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700268
Dusan Klinece26bb022014-11-09 12:21:37 +0100269class EnumDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700270
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100271 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700272 super(
273 EnumDefinition,
274 self).__init__(
275 linespan=linespan,
276 lexspan=lexspan,
277 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100278 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100279 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100280 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100281 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100282 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100283
284 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +0100285 if visitor.visit_EnumDefinition(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100286 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100287 self.v(self.body, visitor)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100288
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700289
Sapan Bhatiab1225872017-03-29 20:47:47 +0200290class LinkSpec(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700291
292 def __init__(
293 self,
294 field_spec,
295 link_spec,
296 linespan=None,
297 lexspan=None,
298 p=None):
Sapan Bhatiab1225872017-03-29 20:47:47 +0200299 super(LinkSpec, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
300 self._fields += ['link_def', 'field_def']
301 self.link_def = link_spec
302 Base.p(self.link_def, self)
303 self.field_def = field_spec
304 Base.p(self.field_def, self)
305
306 def accept(self, visitor):
307 if visitor.visit_LinkSpec(self):
308 self.v(self.link_def, visitor)
309 self.v(self.field_def, visitor)
310 visitor.visit_LinkSpec_post(self)
311
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700312
Sapan Bhatiab1225872017-03-29 20:47:47 +0200313class MessageDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700314
315 def __init__(
316 self,
317 name,
318 policy,
319 bases,
320 body,
321 linespan=None,
322 lexspan=None,
323 p=None):
324 super(
325 MessageDefinition,
326 self).__init__(
327 linespan=linespan,
328 lexspan=lexspan,
329 p=p)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700330 self._fields += ['name', 'policy', 'bases', 'body']
331
Sapan Bhatiab1225872017-03-29 20:47:47 +0200332 self.name = name
333 Base.p(self.name, self)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700334
335 self.policy = policy
336 Base.p(self.policy, self)
337
Sapan Bhatia87792a12017-04-10 19:35:05 -0700338 self.bases = bases
339 Base.p(self.bases, self)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700340
Sapan Bhatiab1225872017-03-29 20:47:47 +0200341 self.body = body
342 Base.p(self.body, self)
343
344 def accept(self, visitor):
345 if visitor.visit_MessageDefinition(self):
346 self.v(self.name, visitor)
Sapan Bhatia87792a12017-04-10 19:35:05 -0700347 self.v(self.bases, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200348 self.v(self.body, visitor)
349 visitor.visit_MessageDefinition_post(self)
350
351
352"""
Dusan Klinece26bb022014-11-09 12:21:37 +0100353class MessageDefinition(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100354 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
355 super(MessageDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
356 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100357 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100358 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100359 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100360 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100361
362 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +0100363 if visitor.visit_MessageDefinition(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100364 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100365 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200366 visitor.visit_MessageDefinition_post(self)
367"""
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100368
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700369
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100370class MessageExtension(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700371
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100372 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700373 super(
374 MessageExtension,
375 self).__init__(
376 linespan=linespan,
377 lexspan=lexspan,
378 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100379 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100380 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100381 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100382 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100383 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100384
385 def accept(self, visitor):
386 if visitor.visit_MessageExtension(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100387 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100388 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200389 visitor.visit_MessageExtension_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100390
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700391
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100392class MethodDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700393
394 def __init__(
395 self,
396 name,
397 name2,
398 name3,
399 linespan=None,
400 lexspan=None,
401 p=None):
402 super(
403 MethodDefinition,
404 self).__init__(
405 linespan=linespan,
406 lexspan=lexspan,
407 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100408 self._fields += ['name', 'name2', 'name3']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100409 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100410 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100411 self.name2 = name2
Dusan Klinec1064fb32014-11-10 21:48:50 +0100412 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100413 self.name3 = name3
Dusan Klinec1064fb32014-11-10 21:48:50 +0100414 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100415
416 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100417 if visitor.visit_MethodDefinition(self):
418 self.v(self.name, visitor)
419 self.v(self.name2, visitor)
420 self.v(self.name3, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200421 visitor.visit_MethodDefinition_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100422
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700423
Dusan Klinece26bb022014-11-09 12:21:37 +0100424class ServiceDefinition(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700425
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100426 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700427 super(
428 ServiceDefinition,
429 self).__init__(
430 linespan=linespan,
431 lexspan=lexspan,
432 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100433 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100434 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100435 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100436 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100437 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100438
439 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +0100440 if visitor.visit_ServiceDefinition(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100441 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100442 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200443 visitor.visit_ServiceDefinition_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100444
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700445
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100446class ExtensionsMax(SourceElement):
447 pass
448
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700449
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100450class ExtensionsDirective(SourceElement):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700451
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100452 def __init__(self, fromVal, toVal, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700453 super(
454 ExtensionsDirective,
455 self).__init__(
456 linespan=linespan,
457 lexspan=lexspan,
458 p=p)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100459 self._fields += ['fromVal', 'toVal']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100460 self.fromVal = fromVal
Dusan Klinec1064fb32014-11-10 21:48:50 +0100461 Base.p(self.fromVal, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100462 self.toVal = toVal
Dusan Klinec1064fb32014-11-10 21:48:50 +0100463 Base.p(self.toVal, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100464
465 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100466 if visitor.visit_ExtensionsDirective(self):
467 self.v(self.fromVal, visitor)
468 self.v(self.toVal, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200469 visitor.visit_ExtensionsDirective_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100470
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700471
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100472class Literal(SourceElement):
473
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100474 def __init__(self, value, linespan=None, lexspan=None, p=None):
475 super(Literal, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
476 self._fields += ['value']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100477 self.value = value
478
479 def accept(self, visitor):
480 visitor.visit_Literal(self)
481
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700482
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100483class Name(SourceElement):
484
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100485 def __init__(self, value, linespan=None, lexspan=None, p=None):
486 super(Name, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
487 self._fields += ['value']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100488 self.value = value
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100489 self.deriveLex()
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100490
491 def append_name(self, name):
492 try:
493 self.value = self.value + '.' + name.value
494 except:
495 self.value = self.value + '.' + name
496
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100497 def deriveLex(self):
498 if hasattr(self.value, "lexspan"):
499 self.lexspan = self.value.lexspan
500 self.linespan = self.value.linespan
501 else:
502 return
503
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100504 def accept(self, visitor):
505 visitor.visit_Name(self)
506
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700507
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100508class DotName(Name):
509 elements = []
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700510
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100511 def __init__(self, elements, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700512 super(DotName, self).__init__(
513 '.'.join([str(x) for x in elements]), linespan=linespan, lexspan=lexspan, p=p)
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100514 self._fields += ['elements']
515 self.elements = elements
516 self.deriveLex()
517
518 def deriveLex(self):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700519 if isinstance(self.elements, list) and len(self.elements) > 0:
520 self.lexspan = (min([x.lexspan[0] for x in self.elements if x.lexspan[0] != 0]), max(
521 [x.lexspan[1] for x in self.elements if x.lexspan[1] != 0]))
522 self.linespan = (min([x.linespan[0] for x in self.elements if x.linespan[0] != 0]), max(
523 [x.linespan[1] for x in self.elements if x.linespan[1] != 0]))
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100524 elif hasattr(self.elements, "lexspan"):
525 self.lexspan = self.elements.lexspan
526 self.linespan = self.elements.linespan
527 else:
528 return
529
530 def accept(self, visitor):
531 visitor.visit_DotName(self)
532
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700533
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100534class ProtoFile(SourceElement):
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100535
Sapan Bhatiaff86b012017-06-11 14:44:15 -0700536 def __init__(self, body, linespan=None, lexspan=None, p=None):
Zack Williamsbe7f36d2018-02-02 11:37:11 -0700537 super(
538 ProtoFile,
539 self).__init__(
540 linespan=linespan,
541 lexspan=lexspan,
542 p=p)
Sapan Bhatiaff86b012017-06-11 14:44:15 -0700543 self._fields += ['body']
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100544 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100545 Base.p(self.body, self)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100546
547 def accept(self, visitor):
548 if visitor.visit_Proto(self):
Dusan Klinec1064fb32014-11-10 21:48:50 +0100549 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200550 visitor.visit_Proto_post(self)