blob: d19eeffeab96c2516cd1cbb7194349d56c9f0b21 [file] [log] [blame]
Sapan Bhatia64c72512017-06-23 02:32:45 -07001from helpers import Base, SourceElement
Dusan Klinecccaa0d92014-11-09 03:21:31 +01002
Dusan Klinece26bb022014-11-09 12:21:37 +01003class PackageStatement(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +01004 def __init__(self, name, linespan=None, lexspan=None, p=None):
5 super(PackageStatement, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
6 self._fields += ['name']
Dusan Klinecccaa0d92014-11-09 03:21:31 +01007 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +01008 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +01009
10 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +010011 visitor.visit_PackageStatement(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010012
13class ImportStatement(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +010014 def __init__(self, name, linespan=None, lexspan=None, p=None):
15 super(ImportStatement, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
16 self._fields += ['name']
Dusan Klinecccaa0d92014-11-09 03:21:31 +010017 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +010018 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010019
20 def accept(self, visitor):
21 visitor.visit_ImportStatement(self)
22
Dusan Klinece26bb022014-11-09 12:21:37 +010023class OptionStatement(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +010024 def __init__(self, name, value, linespan=None, lexspan=None, p=None):
25 super(OptionStatement, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
26 self._fields += ['name', 'value']
Dusan Klinecccaa0d92014-11-09 03:21:31 +010027 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +010028 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010029 self.value = value
Dusan Klinec1064fb32014-11-10 21:48:50 +010030 Base.p(self.value, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010031
32 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +010033 visitor.visit_OptionStatement(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010034
Dusan Klinece26bb022014-11-09 12:21:37 +010035class FieldDirective(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +010036 def __init__(self, name, value, linespan=None, lexspan=None, p=None):
37 super(FieldDirective, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
38 self._fields += ['name', 'value']
Dusan Klinecccaa0d92014-11-09 03:21:31 +010039 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +010040 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010041 self.value = value
Dusan Klinec1064fb32014-11-10 21:48:50 +010042 Base.p(self.value, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010043
44 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +010045 if visitor.visit_FieldDirective(self):
46 self.v(self.name, visitor)
47 self.v(self.value, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +020048 visitor.visit_FieldDirective_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010049
Dusan Klinece26bb022014-11-09 12:21:37 +010050class FieldType(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +010051 def __init__(self, name, linespan=None, lexspan=None, p=None):
52 super(FieldType, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
53 self._fields += ['name']
Dusan Klinecccaa0d92014-11-09 03:21:31 +010054 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +010055 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010056
57 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +010058 if visitor.visit_FieldType(self):
59 self.v(self.name, visitor)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010060
Sapan Bhatiab1225872017-03-29 20:47:47 +020061class LinkDefinition(SourceElement):
Sapan Bhatia78fee772017-04-21 19:00:48 +020062 def __init__(self, link_type, src_port, name, through, dst_port, linespan=None, lexspan=None, p=None):
Sapan Bhatiab1225872017-03-29 20:47:47 +020063 super(LinkDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
Sapan Bhatia78fee772017-04-21 19:00:48 +020064 self._fields += ['link_type', 'src_port', 'name', 'dst_port', 'through']
Sapan Bhatiab1225872017-03-29 20:47:47 +020065 self.link_type = link_type
66 Base.p(self.link_type, self)
Sapan Bhatia78fee772017-04-21 19:00:48 +020067
Sapan Bhatiab1225872017-03-29 20:47:47 +020068 self.src_port = src_port
69 Base.p(self.src_port, self)
Sapan Bhatia78fee772017-04-21 19:00:48 +020070
Sapan Bhatiab1225872017-03-29 20:47:47 +020071 self.name = name
72 Base.p(self.name, self)
Sapan Bhatia78fee772017-04-21 19:00:48 +020073
74 self.through = through
75 Base.p(self.through, self)
76
Sapan Bhatiab1225872017-03-29 20:47:47 +020077 self.dst_port = dst_port
78 Base.p(self.dst_port, self)
79
80 def accept(self, visitor):
81 visitor.visit_LinkDefinition(self)
82
Dusan Klinece26bb022014-11-09 12:21:37 +010083class FieldDefinition(SourceElement):
Sapan Bhatia84a29242017-06-24 07:40:33 -070084 def __init__(self, field_modifier, ftype, name, policy, fieldId, fieldDirective, linespan=None, lexspan=None, p=None):
Dusan Klinecc9b031a2014-11-10 13:21:08 +010085 super(FieldDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
Sapan Bhatiaa3686022017-06-24 07:24:19 -070086 self._fields += ['field_modifier', 'ftype', 'name', 'fieldId', 'policy', 'fieldDirective']
Dusan Klinecccaa0d92014-11-09 03:21:31 +010087 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +010088 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010089 self.field_modifier = field_modifier
Dusan Klinec1064fb32014-11-10 21:48:50 +010090 Base.p(self.field_modifier, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010091 self.ftype = ftype
Dusan Klinec1064fb32014-11-10 21:48:50 +010092 Base.p(self.ftype, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010093 self.fieldId = fieldId
Sapan Bhatiaa3686022017-06-24 07:24:19 -070094 self.policy = policy
Sapan Bhatia84a29242017-06-24 07:40:33 -070095 Base.p(self.policy, self)
Sapan Bhatiaa3686022017-06-24 07:24:19 -070096
Dusan Klinec1064fb32014-11-10 21:48:50 +010097 Base.p(self.fieldId, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +010098 self.fieldDirective = fieldDirective
Dusan Klinec1064fb32014-11-10 21:48:50 +010099 Base.p(self.fieldDirective, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100100
101 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100102 if visitor.visit_FieldDefinition(self):
103 self.v(self.name, visitor)
104 self.v(self.field_modifier, visitor)
105 self.v(self.ftype, visitor)
106 self.v(self.fieldId, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100107 self.v(self.fieldDirective, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200108 visitor.visit_FieldDefinition_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100109
Dusan Klinece26bb022014-11-09 12:21:37 +0100110class EnumFieldDefinition(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100111 def __init__(self, name, fieldId, linespan=None, lexspan=None, p=None):
112 super(EnumFieldDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
113 self._fields += ['name', 'fieldId']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100114 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100115 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100116 self.fieldId = fieldId
Dusan Klinec1064fb32014-11-10 21:48:50 +0100117 Base.p(self.fieldId, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100118
119 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100120 if visitor.visit_EnumFieldDefinition(self):
121 self.v(self.name, visitor)
122 self.v(self.fieldId, visitor)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100123
Sapan Bhatiaad79fee2017-06-26 23:35:57 -0700124class ReduceDefinition(SourceElement):
125 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
126 super(ReduceDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
127 self._fields += ['name', 'body']
128 self.name = name
129 Base.p(self.name, self)
130 self.body = body
131 Base.p(self.body, self)
132
133 def accept(self, visitor):
134 if visitor.visit_EnumDefinition(self):
135 self.v(self.name, visitor)
136 self.v(self.body, visitor)
137
138
139class MapDefinition(SourceElement):
140 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
141 super(MapDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
142 self._fields += ['name', 'body']
143 self.name = name
144 Base.p(self.name, self)
145 self.body = body
146 Base.p(self.body, self)
147
148 def accept(self, visitor):
149 if visitor.visit_EnumDefinition(self):
150 self.v(self.name, visitor)
151 self.v(self.body, visitor)
152
153
Sapan Bhatia64c72512017-06-23 02:32:45 -0700154class PolicyDefinition(SourceElement):
155 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
156 super(PolicyDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
157 self._fields += ['name', 'body']
158 self.name = name
159 Base.p(self.name, self)
160 self.body = body
161 Base.p(self.body, self)
162
163 def accept(self, visitor):
Sapan Bhatia2fc2a942017-07-13 21:18:00 -0400164 if visitor.visit_PolicyDefinition(self):
Sapan Bhatia64c72512017-06-23 02:32:45 -0700165 self.v(self.name, visitor)
166 self.v(self.body, visitor)
167
Dusan Klinece26bb022014-11-09 12:21:37 +0100168class EnumDefinition(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100169 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
170 super(EnumDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
171 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100172 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100173 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100174 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100175 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100176
177 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +0100178 if visitor.visit_EnumDefinition(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100179 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100180 self.v(self.body, visitor)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100181
Sapan Bhatiab1225872017-03-29 20:47:47 +0200182class LinkSpec(SourceElement):
183 def __init__(self, field_spec, link_spec, linespan=None, lexspan=None, p=None):
184 super(LinkSpec, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
185 self._fields += ['link_def', 'field_def']
186 self.link_def = link_spec
187 Base.p(self.link_def, self)
188 self.field_def = field_spec
189 Base.p(self.field_def, self)
190
191 def accept(self, visitor):
192 if visitor.visit_LinkSpec(self):
193 self.v(self.link_def, visitor)
194 self.v(self.field_def, visitor)
195 visitor.visit_LinkSpec_post(self)
196
197class MessageDefinition(SourceElement):
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700198 def __init__(self, name, policy, bases, body, linespan=None, lexspan=None, p=None):
Sapan Bhatiab1225872017-03-29 20:47:47 +0200199 super(MessageDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700200 self._fields += ['name', 'policy', 'bases', 'body']
201
Sapan Bhatiab1225872017-03-29 20:47:47 +0200202 self.name = name
203 Base.p(self.name, self)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700204
205 self.policy = policy
206 Base.p(self.policy, self)
207
Sapan Bhatia87792a12017-04-10 19:35:05 -0700208 self.bases = bases
209 Base.p(self.bases, self)
Sapan Bhatiaa3686022017-06-24 07:24:19 -0700210
Sapan Bhatiab1225872017-03-29 20:47:47 +0200211 self.body = body
212 Base.p(self.body, self)
213
214 def accept(self, visitor):
215 if visitor.visit_MessageDefinition(self):
216 self.v(self.name, visitor)
Sapan Bhatia87792a12017-04-10 19:35:05 -0700217 self.v(self.bases, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200218 self.v(self.body, visitor)
219 visitor.visit_MessageDefinition_post(self)
220
221
222"""
Dusan Klinece26bb022014-11-09 12:21:37 +0100223class MessageDefinition(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100224 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
225 super(MessageDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
226 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100227 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100228 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100229 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100230 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100231
232 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +0100233 if visitor.visit_MessageDefinition(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100234 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100235 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200236 visitor.visit_MessageDefinition_post(self)
237"""
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100238
239class MessageExtension(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100240 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
241 super(MessageExtension, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
242 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100243 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100244 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100245 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100246 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100247
248 def accept(self, visitor):
249 if visitor.visit_MessageExtension(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100250 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100251 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200252 visitor.visit_MessageExtension_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100253
254class MethodDefinition(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100255 def __init__(self, name, name2, name3, linespan=None, lexspan=None, p=None):
256 super(MethodDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
257 self._fields += ['name', 'name2', 'name3']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100258 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100259 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100260 self.name2 = name2
Dusan Klinec1064fb32014-11-10 21:48:50 +0100261 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100262 self.name3 = name3
Dusan Klinec1064fb32014-11-10 21:48:50 +0100263 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100264
265 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100266 if visitor.visit_MethodDefinition(self):
267 self.v(self.name, visitor)
268 self.v(self.name2, visitor)
269 self.v(self.name3, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200270 visitor.visit_MethodDefinition_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100271
Dusan Klinece26bb022014-11-09 12:21:37 +0100272class ServiceDefinition(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100273 def __init__(self, name, body, linespan=None, lexspan=None, p=None):
274 super(ServiceDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
275 self._fields += ['name', 'body']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100276 self.name = name
Dusan Klinec1064fb32014-11-10 21:48:50 +0100277 Base.p(self.name, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100278 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100279 Base.p(self.body, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100280
281 def accept(self, visitor):
Dusan Klinece26bb022014-11-09 12:21:37 +0100282 if visitor.visit_ServiceDefinition(self):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100283 self.v(self.name, visitor)
Dusan Klinec1064fb32014-11-10 21:48:50 +0100284 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200285 visitor.visit_ServiceDefinition_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100286
287class ExtensionsMax(SourceElement):
288 pass
289
290class ExtensionsDirective(SourceElement):
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100291 def __init__(self, fromVal, toVal, linespan=None, lexspan=None, p=None):
292 super(ExtensionsDirective, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
293 self._fields += ['fromVal', 'toVal']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100294 self.fromVal = fromVal
Dusan Klinec1064fb32014-11-10 21:48:50 +0100295 Base.p(self.fromVal, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100296 self.toVal = toVal
Dusan Klinec1064fb32014-11-10 21:48:50 +0100297 Base.p(self.toVal, self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100298
299 def accept(self, visitor):
Dusan Klineca9f6d362014-11-10 21:07:08 +0100300 if visitor.visit_ExtensionsDirective(self):
301 self.v(self.fromVal, visitor)
302 self.v(self.toVal, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200303 visitor.visit_ExtensionsDirective_post(self)
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100304
305class Literal(SourceElement):
306
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100307 def __init__(self, value, linespan=None, lexspan=None, p=None):
308 super(Literal, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
309 self._fields += ['value']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100310 self.value = value
311
312 def accept(self, visitor):
313 visitor.visit_Literal(self)
314
315class Name(SourceElement):
316
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100317 def __init__(self, value, linespan=None, lexspan=None, p=None):
318 super(Name, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
319 self._fields += ['value']
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100320 self.value = value
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100321 self.deriveLex()
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100322
323 def append_name(self, name):
324 try:
325 self.value = self.value + '.' + name.value
326 except:
327 self.value = self.value + '.' + name
328
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100329 def deriveLex(self):
330 if hasattr(self.value, "lexspan"):
331 self.lexspan = self.value.lexspan
332 self.linespan = self.value.linespan
333 else:
334 return
335
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100336 def accept(self, visitor):
337 visitor.visit_Name(self)
338
Dusan Klinecaa9ff472014-11-10 18:02:03 +0100339class DotName(Name):
340 elements = []
341 def __init__(self, elements, linespan=None, lexspan=None, p=None):
342 super(DotName, self).__init__('.'.join([str(x) for x in elements]), linespan=linespan, lexspan=lexspan, p=p)
343 self._fields += ['elements']
344 self.elements = elements
345 self.deriveLex()
346
347 def deriveLex(self):
348 if isinstance(self.elements, list) and len(self.elements)>0:
349 self.lexspan = (min([x.lexspan[0] for x in self.elements if x.lexspan[0] != 0]), max([x.lexspan[1] for x in self.elements if x.lexspan[1] != 0]))
350 self.linespan = (min([x.linespan[0] for x in self.elements if x.linespan[0] != 0]), max([x.linespan[1] for x in self.elements if x.linespan[1] != 0]))
351 elif hasattr(self.elements, "lexspan"):
352 self.lexspan = self.elements.lexspan
353 self.linespan = self.elements.linespan
354 else:
355 return
356
357 def accept(self, visitor):
358 visitor.visit_DotName(self)
359
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100360class ProtoFile(SourceElement):
Dusan Klinecccaa0d92014-11-09 03:21:31 +0100361
Sapan Bhatiaff86b012017-06-11 14:44:15 -0700362 def __init__(self, body, linespan=None, lexspan=None, p=None):
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100363 super(ProtoFile, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
Sapan Bhatiaff86b012017-06-11 14:44:15 -0700364 self._fields += ['body']
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100365 self.body = body
Dusan Klinec1064fb32014-11-10 21:48:50 +0100366 Base.p(self.body, self)
Dusan Klinecc9b031a2014-11-10 13:21:08 +0100367
368 def accept(self, visitor):
369 if visitor.visit_Proto(self):
Dusan Klinec1064fb32014-11-10 21:48:50 +0100370 self.v(self.body, visitor)
Sapan Bhatiab1225872017-03-29 20:47:47 +0200371 visitor.visit_Proto_post(self)