775c1207c5036e80a4688743636377d38402882f
[nit.git] / src / parser / parser_nodes.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Copyright 2008-2009 Jean Privat <jean@pryen.org>
4 # Copyright 2009 Jean-Sebastien Gelinas <calestar@gmail.com>
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 # http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17
18 # AST nodes of the Nit language
19 # Was previously based on parser_abs.nit.
20 package parser_nodes
21
22 import location
23
24 # Root of the AST hierarchy
25 abstract class ANode
26 var _location: nullable Location
27 # Location is set during AST building. Once built, location cannon be null
28 # However, manual instanciated nodes may need mode care
29 fun location: Location do return _location.as(not null)
30 # The location of the important part of the node (identifier or whatever)
31 fun hot_location: Location do return location
32 init do end
33
34 # Display a message for the colored location of the node
35 fun debug(message: String)
36 do
37 print "{hot_location} {self.class_name}: {message}\n{hot_location.colored_line("0;32")}"
38 end
39 end
40
41 # Ancestor of all tokens
42 abstract class Token
43 super ANode
44 fun text: String is abstract
45
46 redef fun to_s: String do
47 return "'{text}'"
48 end
49 end
50
51 # Ancestor of all productions
52 abstract class Prod
53 super ANode
54 fun location=(l: Location) do _location = l
55 end
56 class TEol
57 super Token
58 redef fun to_s
59 do
60 return "end of line"
61 end
62 end
63 class TComment
64 super Token
65 end
66 abstract class TokenKeyword
67 super Token
68 redef fun to_s
69 do
70 return "keyword '{text}'"
71 end
72 end
73 class TKwmodule
74 super TokenKeyword
75 end
76 class TKwimport
77 super TokenKeyword
78 end
79 class TKwclass
80 super TokenKeyword
81 end
82 class TKwabstract
83 super TokenKeyword
84 end
85 class TKwinterface
86 super TokenKeyword
87 end
88 class TKwenum
89 super TokenKeyword
90 end
91 class TKwend
92 super TokenKeyword
93 end
94 class TKwmeth
95 super TokenKeyword
96 end
97 class TKwtype
98 super TokenKeyword
99 end
100 class TKwinit
101 super TokenKeyword
102 end
103 class TKwredef
104 super TokenKeyword
105 end
106 class TKwis
107 super TokenKeyword
108 end
109 class TKwdo
110 super TokenKeyword
111 end
112 class TKwreadable
113 super TokenKeyword
114 end
115 class TKwwritable
116 super TokenKeyword
117 end
118 class TKwvar
119 super TokenKeyword
120 end
121 class TKwintern
122 super TokenKeyword
123 end
124 class TKwextern
125 super TokenKeyword
126 end
127 class TKwprotected
128 super TokenKeyword
129 end
130 class TKwprivate
131 super TokenKeyword
132 end
133 class TKwintrude
134 super TokenKeyword
135 end
136 class TKwif
137 super TokenKeyword
138 end
139 class TKwthen
140 super TokenKeyword
141 end
142 class TKwelse
143 super TokenKeyword
144 end
145 class TKwwhile
146 super TokenKeyword
147 end
148 class TKwloop
149 super TokenKeyword
150 end
151 class TKwfor
152 super TokenKeyword
153 end
154 class TKwin
155 super TokenKeyword
156 end
157 class TKwand
158 super TokenKeyword
159 end
160 class TKwor
161 super TokenKeyword
162 end
163 class TKwnot
164 super TokenKeyword
165 end
166 class TKwreturn
167 super TokenKeyword
168 end
169 class TKwcontinue
170 super TokenKeyword
171 end
172 class TKwbreak
173 super TokenKeyword
174 end
175 class TKwabort
176 super TokenKeyword
177 end
178 class TKwassert
179 super TokenKeyword
180 end
181 class TKwnew
182 super TokenKeyword
183 end
184 class TKwisa
185 super TokenKeyword
186 end
187 class TKwonce
188 super TokenKeyword
189 end
190 class TKwsuper
191 super TokenKeyword
192 end
193 class TKwself
194 super TokenKeyword
195 end
196 class TKwtrue
197 super TokenKeyword
198 end
199 class TKwfalse
200 super TokenKeyword
201 end
202 class TKwnull
203 super TokenKeyword
204 end
205 class TKwas
206 super TokenKeyword
207 end
208 class TKwnullable
209 super TokenKeyword
210 end
211 class TKwisset
212 super TokenKeyword
213 end
214 class TKwlabel
215 super TokenKeyword
216 end
217 class TKwdebug
218 super Token
219 end
220 class TOpar
221 super Token
222 end
223 class TCpar
224 super Token
225 end
226 class TObra
227 super Token
228 end
229 class TCbra
230 super Token
231 end
232 class TComma
233 super Token
234 end
235 class TColumn
236 super Token
237 end
238 class TQuad
239 super Token
240 end
241 class TAssign
242 super Token
243 end
244 abstract class TokenOperator
245 super Token
246 redef fun to_s
247 do
248 return "operator '{text}'"
249 end
250 end
251 class TPluseq
252 super TokenOperator
253 end
254 class TMinuseq
255 super TokenOperator
256 end
257 class TDotdotdot
258 super TokenOperator
259 end
260 class TDotdot
261 super TokenOperator
262 end
263 class TDot
264 super TokenOperator
265 end
266 class TPlus
267 super TokenOperator
268 end
269 class TMinus
270 super TokenOperator
271 end
272 class TStar
273 super TokenOperator
274 end
275 class TSlash
276 super TokenOperator
277 end
278 class TPercent
279 super TokenOperator
280 end
281 class TEq
282 super TokenOperator
283 end
284 class TNe
285 super TokenOperator
286 end
287 class TLt
288 super TokenOperator
289 end
290 class TLe
291 super TokenOperator
292 end
293 class TLl
294 super TokenOperator
295 end
296 class TGt
297 super TokenOperator
298 end
299 class TGe
300 super TokenOperator
301 end
302 class TGg
303 super TokenOperator
304 end
305 class TStarship
306 super TokenOperator
307 end
308 class TBang
309 super TokenOperator
310 end
311 class TClassid
312 super Token
313 redef fun to_s
314 do
315 do return "type identifier '{text}'"
316 end
317 end
318 class TId
319 super Token
320 redef fun to_s
321 do
322 do return "identifier '{text}'"
323 end
324 end
325 class TAttrid
326 super Token
327 redef fun to_s
328 do
329 do return "attribute '{text}'"
330 end
331 end
332 abstract class TokenLiteral
333 super Token
334 redef fun to_s
335 do
336 do return "literal value '{text}'"
337 end
338 end
339 class TNumber
340 super TokenLiteral
341 end
342 class TFloat
343 super TokenLiteral
344 end
345 class TChar
346 super TokenLiteral
347 end
348 class TString
349 super TokenLiteral
350 end
351 class TStartString
352 super TokenLiteral
353 end
354 class TMidString
355 super TokenLiteral
356 end
357 class TEndString
358 super Token
359 end
360 class TBadString
361 super Token
362 redef fun to_s
363 do
364 do return "malformed string {text}"
365 end
366 end
367 class TBadChar
368 super Token
369 redef fun to_s
370 do
371 do return "malformed character {text}"
372 end
373 end
374 class TExternCodeSegment
375 super Token
376 end
377 class EOF
378 super Token
379 private init noinit do end
380 redef fun to_s
381 do
382 return "end of file"
383 end
384 end
385 class AError
386 super EOF
387 private init noinit do end
388 end
389
390 class AModule
391 super Prod
392 readable var _n_moduledecl: nullable AModuledecl = null
393 readable var _n_imports: List[AImport] = new List[AImport]
394 readable var _n_extern_code_blocks: List[AExternCodeBlock] = new List[AExternCodeBlock]
395 readable var _n_classdefs: List[AClassdef] = new List[AClassdef]
396 end
397 class AModuledecl
398 super Prod
399 readable var _n_doc: nullable ADoc = null
400 readable var _n_kwmodule: TKwmodule
401 readable var _n_name: AModuleName
402 end
403 abstract class AImport super Prod end
404 class AStdImport
405 super AImport
406 readable var _n_visibility: AVisibility
407 readable var _n_kwimport: TKwimport
408 readable var _n_name: AModuleName
409 end
410 class ANoImport
411 super AImport
412 readable var _n_visibility: AVisibility
413 readable var _n_kwimport: TKwimport
414 readable var _n_kwend: TKwend
415 end
416 abstract class AVisibility super Prod end
417 class APublicVisibility
418 super AVisibility
419 end
420 class APrivateVisibility
421 super AVisibility
422 readable var _n_kwprivate: TKwprivate
423 end
424 class AProtectedVisibility
425 super AVisibility
426 readable var _n_kwprotected: TKwprotected
427 end
428 class AIntrudeVisibility
429 super AVisibility
430 readable var _n_kwintrude: TKwintrude
431 end
432 abstract class AClassdef super Prod
433 readable var _n_propdefs: List[APropdef] = new List[APropdef]
434 end
435 class AStdClassdef
436 super AClassdef
437 readable var _n_doc: nullable ADoc = null
438 readable var _n_kwredef: nullable TKwredef = null
439 readable var _n_visibility: AVisibility
440 readable var _n_classkind: AClasskind
441 readable var _n_id: nullable TClassid = null
442 readable var _n_formaldefs: List[AFormaldef] = new List[AFormaldef]
443 readable var _n_extern_code_block: nullable AExternCodeBlock = null
444 readable var _n_superclasses: List[ASuperclass] = new List[ASuperclass]
445 readable var _n_kwend: TKwend
446 redef fun hot_location do return n_id.location
447 end
448 class ATopClassdef
449 super AClassdef
450 end
451 class AMainClassdef
452 super AClassdef
453 end
454 abstract class AClasskind super Prod end
455 class AConcreteClasskind
456 super AClasskind
457 readable var _n_kwclass: TKwclass
458 end
459 class AAbstractClasskind
460 super AClasskind
461 readable var _n_kwabstract: TKwabstract
462 readable var _n_kwclass: TKwclass
463 end
464 class AInterfaceClasskind
465 super AClasskind
466 readable var _n_kwinterface: TKwinterface
467 end
468 class AEnumClasskind
469 super AClasskind
470 readable var _n_kwenum: TKwenum
471 end
472 class AExternClasskind
473 super AClasskind
474 readable var _n_kwextern: TKwextern
475 readable var _n_kwclass: nullable TKwclass = null
476 end
477 class AFormaldef
478 super Prod
479 readable var _n_id: TClassid
480 readable var _n_type: nullable AType = null
481 end
482 class ASuperclass
483 super Prod
484 readable var _n_kwsuper: TKwsuper
485 readable var _n_type: AType
486 end
487 abstract class APropdef super Prod
488 readable var _n_doc: nullable ADoc = null
489 end
490 class AAttrPropdef
491 super APropdef
492 readable var _n_kwredef: nullable TKwredef = null
493 readable var _n_visibility: AVisibility
494 readable var _n_kwvar: TKwvar
495 readable var _n_id: nullable TAttrid
496 readable var _n_id2: nullable TId
497 readable var _n_type: nullable AType = null
498 readable var _n_readable: nullable AAble = null
499 readable var _n_writable: nullable AAble = null
500 readable var _n_expr: nullable AExpr = null
501 redef fun hot_location
502 do
503 if n_id != null then return n_id.location else return n_id2.location
504 end
505 end
506 abstract class AMethPropdef
507 super APropdef
508 readable var _n_kwredef: nullable TKwredef = null
509 readable var _n_visibility: nullable AVisibility
510 readable var _n_methid: nullable AMethid = null
511 readable var _n_signature: nullable ASignature
512 redef fun hot_location
513 do
514 if n_methid != null then
515 return n_methid.location
516 else
517 return location
518 end
519 end
520 end
521 class ADeferredMethPropdef
522 super AMethPropdef
523 readable var _n_kwmeth: TKwmeth
524 end
525 class AInternMethPropdef
526 super AMethPropdef
527 readable var _n_kwmeth: TKwmeth
528 end
529 abstract class AExternPropdef
530 super AMethPropdef
531 readable var _n_extern: nullable TString = null
532 readable var _n_extern_calls: nullable AExternCalls = null
533 readable var _n_extern_code_block: nullable AExternCodeBlock = null
534 end
535 class AExternMethPropdef
536 super AMethPropdef
537 super AExternPropdef
538 readable var _n_kwmeth: TKwmeth
539 end
540 class AConcreteMethPropdef
541 super AMethPropdef
542 readable var _n_kwmeth: nullable TKwmeth
543 readable var _n_block: nullable AExpr = null
544 end
545 abstract class AInitPropdef
546 super AMethPropdef
547 end
548 class AConcreteInitPropdef
549 super AConcreteMethPropdef
550 super AInitPropdef
551 readable var _n_kwinit: TKwinit
552 redef fun hot_location do return n_kwinit.location
553 end
554 class AExternInitPropdef
555 super AExternPropdef
556 super AInitPropdef
557 readable var _n_kwnew: TKwnew
558 end
559 class AMainMethPropdef
560 super AConcreteMethPropdef
561 end
562 class AExternCalls
563 super Prod
564 readable var _n_kwimport: TKwimport
565 readable var _n_extern_calls: List[AExternCall] = new List[AExternCall]
566 end
567 abstract class AExternCall
568 super Prod
569 end
570 abstract class APropExternCall
571 super AExternCall
572 end
573 class ALocalPropExternCall
574 super APropExternCall
575 readable var _n_methid: AMethid
576 end
577 class AFullPropExternCall
578 super APropExternCall
579 readable var _n_classid: TClassid
580 readable var _n_quad: nullable TQuad = null
581 readable var _n_methid: AMethid
582 end
583 class AInitPropExternCall
584 super APropExternCall
585 readable var _n_classid: TClassid
586 end
587 class ASuperExternCall
588 super AExternCall
589 readable var _n_kwsuper: TKwsuper
590 end
591 abstract class ACastExternCall
592 super AExternCall
593 end
594 class ACastAsExternCall
595 super ACastExternCall
596 readable var _n_from_type: AType
597 readable var _n_kwas: TKwas
598 readable var _n_to_type: AType
599 end
600 class AAsNullableExternCall
601 super ACastExternCall
602 readable var _n_type: AType
603 readable var _n_kwas: TKwas
604 readable var _n_kwnullable: TKwnullable
605 end
606 class AAsNotNullableExternCall
607 super ACastExternCall
608 readable var _n_type: AType
609 readable var _n_kwas: TKwas
610 readable var _n_kwnot: TKwnot
611 readable var _n_kwnullable: TKwnullable
612 end
613 class ATypePropdef
614 super APropdef
615 readable var _n_kwredef: nullable TKwredef = null
616 readable var _n_visibility: AVisibility
617 readable var _n_kwtype: TKwtype
618 readable var _n_id: TClassid
619 readable var _n_type: AType
620 end
621 abstract class AAble super Prod
622 readable var _n_visibility: nullable AVisibility = null
623 readable var _n_kwredef: nullable TKwredef = null
624 end
625 class AReadAble
626 super AAble
627 readable var _n_kwreadable: TKwreadable
628 end
629 class AWriteAble
630 super AAble
631 readable var _n_kwwritable: TKwwritable
632 end
633 abstract class AMethid super Prod end
634 class AIdMethid
635 super AMethid
636 readable var _n_id: TId
637 end
638 class APlusMethid
639 super AMethid
640 readable var _n_plus: TPlus
641 end
642 class AMinusMethid
643 super AMethid
644 readable var _n_minus: TMinus
645 end
646 class AStarMethid
647 super AMethid
648 readable var _n_star: TStar
649 end
650 class ASlashMethid
651 super AMethid
652 readable var _n_slash: TSlash
653 end
654 class APercentMethid
655 super AMethid
656 readable var _n_percent: TPercent
657 end
658 class AEqMethid
659 super AMethid
660 readable var _n_eq: TEq
661 end
662 class ANeMethid
663 super AMethid
664 readable var _n_ne: TNe
665 end
666 class ALeMethid
667 super AMethid
668 readable var _n_le: TLe
669 end
670 class AGeMethid
671 super AMethid
672 readable var _n_ge: TGe
673 end
674 class ALtMethid
675 super AMethid
676 readable var _n_lt: TLt
677 end
678 class AGtMethid
679 super AMethid
680 readable var _n_gt: TGt
681 end
682 class ALlMethid
683 super AMethid
684 readable writable var _n_ll: TLl
685 end
686 class AGgMethid
687 super AMethid
688 readable writable var _n_gg: TGg
689 end
690 class ABraMethid
691 super AMethid
692 readable var _n_obra: TObra
693 readable var _n_cbra: TCbra
694 end
695 class AStarshipMethid
696 super AMethid
697 readable var _n_starship: TStarship
698 end
699 class AAssignMethid
700 super AMethid
701 readable var _n_id: TId
702 readable var _n_assign: TAssign
703 end
704 class ABraassignMethid
705 super AMethid
706 readable var _n_obra: TObra
707 readable var _n_cbra: TCbra
708 readable var _n_assign: TAssign
709 end
710 class ASignature
711 super Prod
712 readable var _n_opar: nullable TOpar = null
713 readable var _n_params: List[AParam] = new List[AParam]
714 readable var _n_cpar: nullable TCpar = null
715 readable var _n_type: nullable AType = null
716 readable var _n_closure_decls: List[AClosureDecl] = new List[AClosureDecl]
717 end
718 class AParam
719 super Prod
720 readable var _n_id: TId
721 readable var _n_type: nullable AType = null
722 readable var _n_dotdotdot: nullable TDotdotdot = null
723 end
724 class AClosureDecl
725 super Prod
726 readable var _n_kwbreak: nullable TKwbreak = null
727 readable var _n_bang: TBang
728 readable var _n_id: TId
729 readable var _n_signature: ASignature
730 readable var _n_expr: nullable AExpr = null
731 end
732 class AType
733 super Prod
734 readable var _n_kwnullable: nullable TKwnullable = null
735 readable var _n_id: TClassid
736 readable var _n_types: List[AType] = new List[AType]
737 end
738 class ALabel
739 super Prod
740 readable var _n_kwlabel: TKwlabel
741 readable var _n_id: TId
742 end
743 abstract class AExpr super Prod end
744 class ABlockExpr
745 super AExpr
746 readable var _n_expr: List[AExpr] = new List[AExpr]
747 readable var _n_kwend: nullable TKwend = null
748 end
749 class AVardeclExpr
750 super AExpr
751 readable var _n_kwvar: TKwvar
752 readable var _n_id: TId
753 readable var _n_type: nullable AType = null
754 readable var _n_assign: nullable TAssign = null
755 readable var _n_expr: nullable AExpr = null
756 end
757 class AReturnExpr
758 super AExpr
759 readable var _n_kwreturn: nullable TKwreturn = null
760 readable var _n_expr: nullable AExpr = null
761 end
762 abstract class ALabelable
763 super Prod
764 readable var _n_label: nullable ALabel = null
765 end
766 class ABreakExpr
767 super AExpr
768 super ALabelable
769 readable var _n_kwbreak: TKwbreak
770 readable var _n_expr: nullable AExpr = null
771 end
772 class AAbortExpr
773 super AExpr
774 readable var _n_kwabort: TKwabort
775 end
776 class AContinueExpr
777 super AExpr
778 super ALabelable
779 readable var _n_kwcontinue: nullable TKwcontinue = null
780 readable var _n_expr: nullable AExpr = null
781 end
782 class ADoExpr
783 super AExpr
784 super ALabelable
785 readable var _n_kwdo: TKwdo
786 readable var _n_block: nullable AExpr = null
787 end
788 class AIfExpr
789 super AExpr
790 readable var _n_kwif: TKwif
791 readable var _n_expr: AExpr
792 readable var _n_then: nullable AExpr = null
793 readable var _n_else: nullable AExpr = null
794 end
795 class AIfexprExpr
796 super AExpr
797 readable var _n_kwif: TKwif
798 readable var _n_expr: AExpr
799 readable var _n_kwthen: TKwthen
800 readable var _n_then: AExpr
801 readable var _n_kwelse: TKwelse
802 readable var _n_else: AExpr
803 end
804 class AWhileExpr
805 super AExpr
806 super ALabelable
807 readable var _n_kwwhile: TKwwhile
808 readable var _n_expr: AExpr
809 readable var _n_kwdo: TKwdo
810 readable var _n_block: nullable AExpr = null
811 end
812 class ALoopExpr
813 super AExpr
814 super ALabelable
815 readable var _n_kwloop: TKwloop
816 readable var _n_block: nullable AExpr = null
817 end
818 class AForExpr
819 super AExpr
820 super ALabelable
821 readable var _n_kwfor: TKwfor
822 readable var _n_ids: List[TId] = new List[TId]
823 readable var _n_expr: AExpr
824 readable var _n_kwdo: TKwdo
825 readable var _n_block: nullable AExpr = null
826 end
827 class AAssertExpr
828 super AExpr
829 readable var _n_kwassert: TKwassert
830 readable var _n_id: nullable TId = null
831 readable var _n_expr: AExpr
832 readable var _n_else: nullable AExpr = null
833 end
834 abstract class AAssignFormExpr
835 super AExpr
836 readable var _n_assign: TAssign
837 readable var _n_value: AExpr
838 end
839 abstract class AReassignFormExpr
840 super AExpr
841 readable var _n_assign_op: AAssignOp
842 readable var _n_value: AExpr
843 end
844 class AOnceExpr
845 super AProxyExpr
846 readable var _n_kwonce: TKwonce
847 end
848 abstract class ASendExpr
849 super AExpr
850 readable var _n_expr: AExpr
851 readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
852 end
853 abstract class ABinopExpr
854 super ASendExpr
855 readable var _n_expr2: AExpr
856 end
857 abstract class ABoolExpr
858 super AExpr
859 end
860 class AOrExpr
861 super ABoolExpr
862 readable var _n_expr: AExpr
863 readable var _n_expr2: AExpr
864 end
865 class AAndExpr
866 super ABoolExpr
867 readable var _n_expr: AExpr
868 readable var _n_expr2: AExpr
869 end
870 class AOrElseExpr
871 super ABoolExpr
872 readable var _n_expr: AExpr
873 readable var _n_expr2: AExpr
874 end
875 class ANotExpr
876 super ABoolExpr
877 readable var _n_kwnot: TKwnot
878 readable var _n_expr: AExpr
879 end
880 class AEqExpr
881 super ABinopExpr
882 end
883 class AEeExpr
884 super ABoolExpr
885 readable var _n_expr: AExpr
886 readable var _n_expr2: AExpr
887 end
888 class ANeExpr
889 super ABinopExpr
890 end
891 class ALtExpr
892 super ABinopExpr
893 end
894 class ALeExpr
895 super ABinopExpr
896 end
897 class ALlExpr
898 super ABinopExpr
899 end
900 class AGtExpr
901 super ABinopExpr
902 end
903 class AGeExpr
904 super ABinopExpr
905 end
906 class AGgExpr
907 super ABinopExpr
908 end
909 class AIsaExpr
910 super ABoolExpr
911 readable var _n_expr: AExpr
912 readable var _n_type: AType
913 end
914 class APlusExpr
915 super ABinopExpr
916 end
917 class AMinusExpr
918 super ABinopExpr
919 end
920 class AStarshipExpr
921 super ABinopExpr
922 end
923 class AStarExpr
924 super ABinopExpr
925 end
926 class ASlashExpr
927 super ABinopExpr
928 end
929 class APercentExpr
930 super ABinopExpr
931 end
932 class AUminusExpr
933 super ASendExpr
934 readable var _n_minus: TMinus
935 end
936 class ANewExpr
937 super AExpr
938 readable var _n_kwnew: TKwnew
939 readable var _n_type: AType
940 readable var _n_id: nullable TId = null
941 readable var _n_args: AExprs
942 end
943 abstract class AAttrFormExpr
944 super AExpr
945 readable var _n_expr: AExpr
946 readable var _n_id: TAttrid
947 end
948 class AAttrExpr
949 super AAttrFormExpr
950 end
951 class AAttrAssignExpr
952 super AAttrFormExpr
953 super AAssignFormExpr
954 end
955 abstract class ACallFormExpr
956 super ASendExpr
957 readable var _n_id: TId
958 readable var _n_args: AExprs
959 end
960 abstract class ASendReassignFormExpr
961 super ASendExpr
962 super AReassignFormExpr
963 end
964 class AAttrReassignExpr
965 super AExpr
966 super AAttrFormExpr
967 super AReassignFormExpr
968 end
969 class ACallExpr
970 super ACallFormExpr
971 end
972 class ACallAssignExpr
973 super ACallFormExpr
974 super AAssignFormExpr
975 end
976 class ACallReassignExpr
977 super AExpr
978 super ACallFormExpr
979 super ASendReassignFormExpr
980 end
981 class ASuperExpr
982 super AExpr
983 readable var _n_qualified: nullable AQualified = null
984 readable var _n_kwsuper: TKwsuper
985 readable var _n_args: AExprs
986 end
987 class AInitExpr
988 super ASendExpr
989 readable var _n_kwinit: TKwinit
990 readable var _n_args: AExprs
991 end
992 abstract class ABraFormExpr
993 super ASendExpr
994 readable var _n_args: AExprs
995 end
996 class ABraExpr
997 super ABraFormExpr
998 end
999 class ABraAssignExpr
1000 super ABraFormExpr
1001 super AAssignFormExpr
1002 end
1003 abstract class AVarFormExpr
1004 super AExpr
1005 readable var _n_id: TId
1006 end
1007 class ABraReassignExpr
1008 super ABraFormExpr
1009 super ASendReassignFormExpr
1010 end
1011 class AClosureCallExpr
1012 super AExpr
1013 readable var _n_id: TId
1014 readable var _n_args: AExprs
1015 readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
1016 end
1017 class AVarExpr
1018 super AVarFormExpr
1019 end
1020 class AVarAssignExpr
1021 super AVarFormExpr
1022 super AAssignFormExpr
1023 end
1024 class AVarReassignExpr
1025 super AVarFormExpr
1026 super AReassignFormExpr
1027 end
1028 abstract class ARangeExpr
1029 super AExpr
1030 readable var _n_expr: AExpr
1031 readable var _n_expr2: AExpr
1032 end
1033 class ACrangeExpr
1034 super ARangeExpr
1035 readable var _n_obra: TObra
1036 readable var _n_cbra: TCbra
1037 end
1038 class AOrangeExpr
1039 super ARangeExpr
1040 readable var _n_obra: TObra
1041 readable var _n_cbra: TObra
1042 end
1043 class AArrayExpr
1044 super AExpr
1045 readable var _n_exprs: AExprs
1046 end
1047 class ASelfExpr
1048 super AExpr
1049 readable var _n_kwself: nullable TKwself
1050 end
1051 class AImplicitSelfExpr
1052 super ASelfExpr
1053 end
1054 class ATrueExpr
1055 super ABoolExpr
1056 readable var _n_kwtrue: TKwtrue
1057 end
1058 class AFalseExpr
1059 super ABoolExpr
1060 readable var _n_kwfalse: TKwfalse
1061 end
1062 class ANullExpr
1063 super AExpr
1064 readable var _n_kwnull: TKwnull
1065 end
1066 class AIntExpr
1067 super AExpr
1068 readable var _n_number: TNumber
1069 end
1070 class AFloatExpr
1071 super AExpr
1072 readable var _n_float: TFloat
1073 end
1074 class ACharExpr
1075 super AExpr
1076 readable var _n_char: TChar
1077 end
1078 abstract class AStringFormExpr
1079 super AExpr
1080 end
1081 class AStringExpr
1082 super AStringFormExpr
1083 readable var _n_string: TString
1084 end
1085 class AStartStringExpr
1086 super AStringFormExpr
1087 readable var _n_string: TStartString
1088 end
1089 class AMidStringExpr
1090 super AStringFormExpr
1091 readable var _n_string: TMidString
1092 end
1093 class AEndStringExpr
1094 super AStringFormExpr
1095 readable var _n_string: TEndString
1096 end
1097 class ASuperstringExpr
1098 super AExpr
1099 readable var _n_exprs: List[AExpr] = new List[AExpr]
1100 end
1101 class AParExpr
1102 super AProxyExpr
1103 readable var _n_opar: TOpar
1104 readable var _n_cpar: TCpar
1105 end
1106 abstract class AProxyExpr
1107 super AExpr
1108 readable var _n_expr: AExpr
1109 end
1110 class AAsCastExpr
1111 super AExpr
1112 readable var _n_expr: AExpr
1113 readable var _n_kwas: TKwas
1114 readable var _n_opar: TOpar
1115 readable var _n_type: AType
1116 readable var _n_cpar: TCpar
1117 end
1118 class AAsNotnullExpr
1119 super AExpr
1120 readable var _n_expr: AExpr
1121 readable var _n_kwas: TKwas
1122 readable var _n_opar: TOpar
1123 readable var _n_kwnot: TKwnot
1124 readable var _n_kwnull: TKwnull
1125 readable var _n_cpar: TCpar
1126 end
1127 class AIssetAttrExpr
1128 super AAttrFormExpr
1129 readable var _n_kwisset: TKwisset
1130 end
1131 abstract class AExprs
1132 super Prod
1133 readable var _n_exprs: List[AExpr] = new List[AExpr]
1134 end
1135 class ADebugTypeExpr
1136 super AExpr
1137 readable var _n_kwdebug: TKwdebug
1138 readable var _n_kwtype: TKwtype
1139 readable var _n_expr: AExpr
1140 readable var _n_type: AType
1141 end
1142 class AListExprs
1143 super AExprs
1144 end
1145 class AParExprs
1146 super AExprs
1147 readable var _n_opar: TOpar
1148 readable var _n_cpar: TCpar
1149 end
1150 class ABraExprs
1151 super AExprs
1152 readable var _n_obra: TObra
1153 readable var _n_cbra: TCbra
1154 end
1155 abstract class AAssignOp super Prod end
1156 class APlusAssignOp
1157 super AAssignOp
1158 readable var _n_pluseq: TPluseq
1159 end
1160 class AMinusAssignOp
1161 super AAssignOp
1162 readable var _n_minuseq: TMinuseq
1163 end
1164 class AClosureDef
1165 super ALabelable
1166 readable var _n_bang: TBang
1167 readable var _n_id: AClosureId
1168 readable var _n_ids: List[TId] = new List[TId]
1169 readable var _n_kwdo: nullable TKwdo = null
1170 readable var _n_expr: nullable AExpr = null
1171 redef fun hot_location do return n_id.location
1172 end
1173 abstract class AClosureId
1174 super Prod
1175 end
1176 class ASimpleClosureId
1177 super AClosureId
1178 readable var _n_id: TId
1179 end
1180 class ABreakClosureId
1181 super AClosureId
1182 readable var _n_kwbreak: TKwbreak
1183 end
1184 class AModuleName
1185 super Prod
1186 readable var _n_quad: nullable TQuad = null
1187 readable var _n_path: List[TId] = new List[TId]
1188 readable var _n_id: TId
1189 end
1190 class AInLanguage
1191 super Prod
1192 readable var _n_kwin: TKwin
1193 readable var _n_string: TString
1194 end
1195 class AExternCodeBlock
1196 super Prod
1197 readable var _n_in_language: nullable AInLanguage = null
1198 readable var _n_extern_code_segment: TExternCodeSegment
1199 end
1200 class AQualified
1201 super Prod
1202 readable var _n_quad: nullable TQuad = null
1203 readable var _n_id: List[TId] = new List[TId]
1204 readable var _n_classid: nullable TClassid = null
1205 end
1206 class ADoc
1207 super Prod
1208 readable var _n_comment: List[TComment] = new List[TComment]
1209 end
1210
1211 class Start
1212 super Prod
1213 readable var _n_base: nullable AModule
1214 readable var _n_eof: EOF
1215 init(n_base: nullable AModule, n_eof: EOF)
1216 do
1217 self._n_base = n_base
1218 self._n_eof = n_eof
1219 end
1220 end