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