Merge branch 'package2module' into wip
[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 end
31
32 # Ancestor of all tokens
33 abstract class Token
34 special ANode
35 end
36
37 # Ancestor of all productions
38 abstract class Prod
39 special ANode
40 fun location=(l: Location) do _location = l
41 end
42 class TEol
43 special Token
44 end
45 class TComment
46 special Token
47 end
48 class TKwmodule
49 special Token
50 end
51 class TKwimport
52 special Token
53 end
54 class TKwclass
55 special Token
56 end
57 class TKwabstract
58 special Token
59 end
60 class TKwinterface
61 special Token
62 end
63 class TKwuniversal
64 special Token
65 end
66 class TKwspecial
67 special Token
68 end
69 class TKwend
70 special Token
71 end
72 class TKwmeth
73 special Token
74 end
75 class TKwtype
76 special Token
77 end
78 class TKwinit
79 special Token
80 end
81 class TKwredef
82 special Token
83 end
84 class TKwis
85 special Token
86 end
87 class TKwdo
88 special Token
89 end
90 class TKwreadable
91 special Token
92 end
93 class TKwwritable
94 special Token
95 end
96 class TKwvar
97 special Token
98 end
99 class TKwintern
100 special Token
101 end
102 class TKwextern
103 special Token
104 end
105 class TKwprotected
106 special Token
107 end
108 class TKwprivate
109 special Token
110 end
111 class TKwintrude
112 special Token
113 end
114 class TKwif
115 special Token
116 end
117 class TKwthen
118 special Token
119 end
120 class TKwelse
121 special Token
122 end
123 class TKwwhile
124 special Token
125 end
126 class TKwloop
127 special Token
128 end
129 class TKwfor
130 special Token
131 end
132 class TKwin
133 special Token
134 end
135 class TKwand
136 special Token
137 end
138 class TKwor
139 special Token
140 end
141 class TKwnot
142 special Token
143 end
144 class TKwreturn
145 special Token
146 end
147 class TKwcontinue
148 special Token
149 end
150 class TKwbreak
151 special Token
152 end
153 class TKwabort
154 special Token
155 end
156 class TKwassert
157 special Token
158 end
159 class TKwnew
160 special Token
161 end
162 class TKwisa
163 special Token
164 end
165 class TKwonce
166 special Token
167 end
168 class TKwsuper
169 special Token
170 end
171 class TKwself
172 special Token
173 end
174 class TKwtrue
175 special Token
176 end
177 class TKwfalse
178 special Token
179 end
180 class TKwnull
181 special Token
182 end
183 class TKwas
184 special Token
185 end
186 class TKwnullable
187 special Token
188 end
189 class TKwisset
190 special Token
191 end
192 class TKwlabel
193 special Token
194 end
195 class TOpar
196 special Token
197 end
198 class TCpar
199 special Token
200 end
201 class TObra
202 special Token
203 end
204 class TCbra
205 special Token
206 end
207 class TComma
208 special Token
209 end
210 class TColumn
211 special Token
212 end
213 class TQuad
214 special Token
215 end
216 class TAssign
217 special Token
218 end
219 class TPluseq
220 special Token
221 end
222 class TMinuseq
223 special Token
224 end
225 class TDotdotdot
226 special Token
227 end
228 class TDotdot
229 special Token
230 end
231 class TDot
232 special Token
233 end
234 class TPlus
235 special Token
236 end
237 class TMinus
238 special Token
239 end
240 class TStar
241 special Token
242 end
243 class TSlash
244 special Token
245 end
246 class TPercent
247 special Token
248 end
249 class TEq
250 special Token
251 end
252 class TNe
253 special Token
254 end
255 class TLt
256 special Token
257 end
258 class TLe
259 special Token
260 end
261 class TGt
262 special Token
263 end
264 class TGe
265 special Token
266 end
267 class TStarship
268 special Token
269 end
270 class TBang
271 special Token
272 end
273 class TClassid
274 special Token
275 end
276 class TId
277 special Token
278 end
279 class TAttrid
280 special Token
281 end
282 class TNumber
283 special Token
284 end
285 class TFloat
286 special Token
287 end
288 class TChar
289 special Token
290 end
291 class TString
292 special Token
293 end
294 class TStartString
295 special Token
296 end
297 class TMidString
298 special Token
299 end
300 class TEndString
301 special Token
302 end
303 class EOF
304 special Token
305 private init noinit do end
306 end
307 class AError
308 special EOF
309 private init noinit do end
310 end
311
312 class AModule
313 special Prod
314 readable var _n_moduledecl: nullable AModuledecl = null
315 readable var _n_imports: List[AImport] = new List[AImport]
316 readable var _n_classdefs: List[AClassdef] = new List[AClassdef]
317 end
318 class AModuledecl
319 special Prod
320 readable var _n_doc: nullable ADoc = null
321 readable var _n_kwmodule: TKwmodule
322 readable var _n_id: TId
323 end
324 class AImport special Prod end
325 class AStdImport
326 special AImport
327 readable var _n_visibility: AVisibility
328 readable var _n_kwimport: TKwimport
329 readable var _n_id: TId
330 end
331 class ANoImport
332 special AImport
333 readable var _n_visibility: AVisibility
334 readable var _n_kwimport: TKwimport
335 readable var _n_kwend: TKwend
336 end
337 class AVisibility special Prod end
338 class APublicVisibility
339 special AVisibility
340 end
341 class APrivateVisibility
342 special AVisibility
343 readable var _n_kwprivate: TKwprivate
344 end
345 class AProtectedVisibility
346 special AVisibility
347 readable var _n_kwprotected: TKwprotected
348 end
349 class AIntrudeVisibility
350 special AVisibility
351 readable var _n_kwintrude: TKwintrude
352 end
353 class AClassdef special Prod end
354 class AStdClassdef
355 special AClassdef
356 readable var _n_doc: nullable ADoc = null
357 readable var _n_kwredef: nullable TKwredef = null
358 readable var _n_visibility: AVisibility
359 readable var _n_classkind: AClasskind
360 readable var _n_id: nullable TClassid = null
361 readable var _n_formaldefs: List[AFormaldef] = new List[AFormaldef]
362 readable var _n_superclasses: List[ASuperclass] = new List[ASuperclass]
363 readable var _n_propdefs: List[APropdef] = new List[APropdef]
364 end
365 class ATopClassdef
366 special AClassdef
367 readable var _n_propdefs: List[APropdef] = new List[APropdef]
368 end
369 class AMainClassdef
370 special AClassdef
371 readable var _n_propdefs: List[APropdef] = new List[APropdef]
372 end
373 class AClasskind special Prod end
374 class AConcreteClasskind
375 special AClasskind
376 readable var _n_kwclass: TKwclass
377 end
378 class AAbstractClasskind
379 special AClasskind
380 readable var _n_kwabstract: TKwabstract
381 readable var _n_kwclass: TKwclass
382 end
383 class AInterfaceClasskind
384 special AClasskind
385 readable var _n_kwinterface: TKwinterface
386 end
387 class AUniversalClasskind
388 special AClasskind
389 readable var _n_kwuniversal: TKwuniversal
390 end
391 class AFormaldef
392 special Prod
393 readable var _n_id: TClassid
394 readable var _n_type: nullable AType = null
395 end
396 class ASuperclass
397 special Prod
398 readable var _n_kwspecial: nullable TKwspecial = null
399 readable var _n_kwsuper: nullable TKwsuper = null
400 readable var _n_type: AType
401 end
402 class APropdef special Prod
403 readable var _n_doc: nullable ADoc = null
404 end
405 class AAttrPropdef
406 special APropdef
407 readable var _n_kwredef: nullable TKwredef = null
408 readable var _n_visibility: AVisibility
409 readable var _n_kwvar: TKwvar
410 readable var _n_id: nullable TAttrid
411 readable var _n_id2: nullable TId
412 readable var _n_type: nullable AType = null
413 readable var _n_readable: nullable AAble = null
414 readable var _n_writable: nullable AAble = null
415 readable var _n_expr: nullable AExpr = null
416 end
417 class AMethPropdef
418 special APropdef
419 readable var _n_kwredef: nullable TKwredef = null
420 readable var _n_visibility: nullable AVisibility
421 readable var _n_methid: nullable AMethid = null
422 readable var _n_signature: nullable ASignature
423 end
424 class ADeferredMethPropdef
425 special AMethPropdef
426 readable var _n_kwmeth: TKwmeth
427 end
428 class AInternMethPropdef
429 special AMethPropdef
430 readable var _n_kwmeth: TKwmeth
431 end
432 class AExternMethPropdef
433 special AMethPropdef
434 readable var _n_kwmeth: TKwmeth
435 readable var _n_extern: nullable TString = null
436 end
437 class AConcreteMethPropdef
438 special AMethPropdef
439 readable var _n_kwmeth: nullable TKwmeth
440 readable var _n_block: nullable AExpr = null
441 end
442 class AConcreteInitPropdef
443 special AConcreteMethPropdef
444 readable var _n_kwinit: TKwinit
445 end
446 class AMainMethPropdef
447 special AConcreteMethPropdef
448 end
449 class ATypePropdef
450 special APropdef
451 readable var _n_kwredef: nullable TKwredef = null
452 readable var _n_visibility: AVisibility
453 readable var _n_kwtype: TKwtype
454 readable var _n_id: TClassid
455 readable var _n_type: AType
456 end
457 class AAble special Prod
458 readable var _n_visibility: nullable AVisibility = null
459 readable var _n_kwredef: nullable TKwredef = null
460 end
461 class AReadAble
462 special AAble
463 readable var _n_kwreadable: TKwreadable
464 end
465 class AWriteAble
466 special AAble
467 readable var _n_kwwritable: TKwwritable
468 end
469 class AMethid special Prod end
470 class AIdMethid
471 special AMethid
472 readable var _n_id: TId
473 end
474 class APlusMethid
475 special AMethid
476 readable var _n_plus: TPlus
477 end
478 class AMinusMethid
479 special AMethid
480 readable var _n_minus: TMinus
481 end
482 class AStarMethid
483 special AMethid
484 readable var _n_star: TStar
485 end
486 class ASlashMethid
487 special AMethid
488 readable var _n_slash: TSlash
489 end
490 class APercentMethid
491 special AMethid
492 readable var _n_percent: TPercent
493 end
494 class AEqMethid
495 special AMethid
496 readable var _n_eq: TEq
497 end
498 class ANeMethid
499 special AMethid
500 readable var _n_ne: TNe
501 end
502 class ALeMethid
503 special AMethid
504 readable var _n_le: TLe
505 end
506 class AGeMethid
507 special AMethid
508 readable var _n_ge: TGe
509 end
510 class ALtMethid
511 special AMethid
512 readable var _n_lt: TLt
513 end
514 class AGtMethid
515 special AMethid
516 readable var _n_gt: TGt
517 end
518 class ABraMethid
519 special AMethid
520 readable var _n_obra: TObra
521 readable var _n_cbra: TCbra
522 end
523 class AStarshipMethid
524 special AMethid
525 readable var _n_starship: TStarship
526 end
527 class AAssignMethid
528 special AMethid
529 readable var _n_id: TId
530 readable var _n_assign: TAssign
531 end
532 class ABraassignMethid
533 special AMethid
534 readable var _n_obra: TObra
535 readable var _n_cbra: TCbra
536 readable var _n_assign: TAssign
537 end
538 class ASignature
539 special Prod
540 readable var _n_params: List[AParam] = new List[AParam]
541 readable var _n_type: nullable AType = null
542 readable var _n_closure_decls: List[AClosureDecl] = new List[AClosureDecl]
543 end
544 class AParam
545 special Prod
546 readable var _n_id: TId
547 readable var _n_type: nullable AType = null
548 readable var _n_dotdotdot: nullable TDotdotdot = null
549 end
550 class AClosureDecl
551 special Prod
552 readable var _n_kwbreak: nullable TKwbreak = null
553 readable var _n_bang: TBang
554 readable var _n_id: TId
555 readable var _n_signature: ASignature
556 readable var _n_expr: nullable AExpr = null
557 end
558 class AType
559 special Prod
560 readable var _n_kwnullable: nullable TKwnullable = null
561 readable var _n_id: TClassid
562 readable var _n_types: List[AType] = new List[AType]
563 end
564 class ALabel
565 special Prod
566 readable var _n_kwlabel: TKwlabel
567 readable var _n_id: TId
568 end
569 class AExpr special Prod end
570 class ABlockExpr
571 special AExpr
572 readable var _n_expr: List[AExpr] = new List[AExpr]
573 end
574 class AVardeclExpr
575 special AExpr
576 readable var _n_kwvar: TKwvar
577 readable var _n_id: TId
578 readable var _n_type: nullable AType = null
579 readable var _n_assign: nullable TAssign = null
580 readable var _n_expr: nullable AExpr = null
581 end
582 class AReturnExpr
583 special AExpr
584 readable var _n_kwreturn: nullable TKwreturn = null
585 readable var _n_expr: nullable AExpr = null
586 end
587 class ALabelable
588 special Prod
589 readable var _n_label: nullable ALabel = null
590 end
591 class ABreakExpr
592 special AExpr
593 special ALabelable
594 readable var _n_kwbreak: TKwbreak
595 readable var _n_expr: nullable AExpr = null
596 end
597 class AAbortExpr
598 special AExpr
599 readable var _n_kwabort: TKwabort
600 end
601 class AContinueExpr
602 special AExpr
603 special ALabelable
604 readable var _n_kwcontinue: nullable TKwcontinue = null
605 readable var _n_expr: nullable AExpr = null
606 end
607 class ADoExpr
608 special AExpr
609 special ALabelable
610 readable var _n_kwdo: TKwdo
611 readable var _n_block: nullable AExpr = null
612 end
613 class AIfExpr
614 special AExpr
615 readable var _n_kwif: TKwif
616 readable var _n_expr: AExpr
617 readable var _n_then: nullable AExpr = null
618 readable var _n_else: nullable AExpr = null
619 end
620 class AIfexprExpr
621 special AExpr
622 readable var _n_kwif: TKwif
623 readable var _n_expr: AExpr
624 readable var _n_kwthen: TKwthen
625 readable var _n_then: AExpr
626 readable var _n_kwelse: TKwelse
627 readable var _n_else: AExpr
628 end
629 class AWhileExpr
630 special AExpr
631 special ALabelable
632 readable var _n_kwwhile: TKwwhile
633 readable var _n_expr: AExpr
634 readable var _n_kwdo: TKwdo
635 readable var _n_block: nullable AExpr = null
636 end
637 class ALoopExpr
638 special AExpr
639 special ALabelable
640 readable var _n_kwloop: TKwloop
641 readable var _n_block: nullable AExpr = null
642 end
643 class AForExpr
644 special AExpr
645 special ALabelable
646 readable var _n_kwfor: TKwfor
647 readable var _n_id: TId
648 readable var _n_expr: AExpr
649 readable var _n_kwdo: TKwdo
650 readable var _n_block: nullable AExpr = null
651 end
652 class AAssertExpr
653 special AExpr
654 readable var _n_kwassert: TKwassert
655 readable var _n_id: nullable TId = null
656 readable var _n_expr: AExpr
657 readable var _n_else: nullable AExpr = null
658 end
659 class AAssignFormExpr
660 special AExpr
661 readable var _n_assign: TAssign
662 readable var _n_value: AExpr
663 end
664 class AReassignFormExpr
665 special AExpr
666 readable var _n_assign_op: AAssignOp
667 readable var _n_value: AExpr
668 end
669 class AOnceExpr
670 special AProxyExpr
671 readable var _n_kwonce: TKwonce
672 end
673 class ASendExpr
674 special AExpr
675 readable var _n_expr: AExpr
676 readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
677 end
678 class ABinopExpr
679 special ASendExpr
680 readable var _n_expr2: AExpr
681 end
682 class ABoolExpr
683 special AExpr
684 end
685 class AOrExpr
686 special ABoolExpr
687 readable var _n_expr: AExpr
688 readable var _n_expr2: AExpr
689 end
690 class AAndExpr
691 special ABoolExpr
692 readable var _n_expr: AExpr
693 readable var _n_expr2: AExpr
694 end
695 class AOrElseExpr
696 special ABoolExpr
697 readable var _n_expr: AExpr
698 readable var _n_expr2: AExpr
699 end
700 class ANotExpr
701 special ABoolExpr
702 readable var _n_kwnot: TKwnot
703 readable var _n_expr: AExpr
704 end
705 class AEqExpr
706 special ABinopExpr
707 end
708 class AEeExpr
709 special ABoolExpr
710 readable var _n_expr: AExpr
711 readable var _n_expr2: AExpr
712 end
713 class ANeExpr
714 special ABinopExpr
715 end
716 class ALtExpr
717 special ABinopExpr
718 end
719 class ALeExpr
720 special ABinopExpr
721 end
722 class AGtExpr
723 special ABinopExpr
724 end
725 class AGeExpr
726 special ABinopExpr
727 end
728 class AIsaExpr
729 special ABoolExpr
730 readable var _n_expr: AExpr
731 readable var _n_type: AType
732 end
733 class APlusExpr
734 special ABinopExpr
735 end
736 class AMinusExpr
737 special ABinopExpr
738 end
739 class AStarshipExpr
740 special ABinopExpr
741 end
742 class AStarExpr
743 special ABinopExpr
744 end
745 class ASlashExpr
746 special ABinopExpr
747 end
748 class APercentExpr
749 special ABinopExpr
750 end
751 class AUminusExpr
752 special ASendExpr
753 readable var _n_minus: TMinus
754 end
755 class ANewExpr
756 special AExpr
757 readable var _n_kwnew: TKwnew
758 readable var _n_type: AType
759 readable var _n_id: nullable TId = null
760 readable var _n_args: List[AExpr] = new List[AExpr]
761 end
762 class AAttrFormExpr
763 special AExpr
764 readable var _n_expr: AExpr
765 readable var _n_id: TAttrid
766 end
767 class AAttrExpr
768 special AAttrFormExpr
769 end
770 class AAttrAssignExpr
771 special AAttrFormExpr
772 special AAssignFormExpr
773 end
774 class ACallFormExpr
775 special ASendExpr
776 readable var _n_id: TId
777 readable var _n_args: List[AExpr] = new List[AExpr]
778 end
779 class AAttrReassignExpr
780 special AExpr
781 special AAttrFormExpr
782 special AReassignFormExpr
783 end
784 class ACallExpr
785 special ACallFormExpr
786 end
787 class ACallAssignExpr
788 special ACallFormExpr
789 special AAssignFormExpr
790 end
791 class ACallReassignExpr
792 special AExpr
793 special ACallFormExpr
794 special AReassignFormExpr
795 end
796 class ASuperExpr
797 special AExpr
798 readable var _n_qualified: nullable AQualified = null
799 readable var _n_kwsuper: TKwsuper
800 readable var _n_args: List[AExpr] = new List[AExpr]
801 end
802 class AInitExpr
803 special ASendExpr
804 readable var _n_kwinit: TKwinit
805 readable var _n_args: List[AExpr] = new List[AExpr]
806 end
807 class ABraFormExpr
808 special ASendExpr
809 readable var _n_args: List[AExpr] = new List[AExpr]
810 end
811 class ABraExpr
812 special ABraFormExpr
813 end
814 class ABraAssignExpr
815 special ABraFormExpr
816 special AAssignFormExpr
817 end
818 class AVarFormExpr
819 special AExpr
820 readable var _n_id: TId
821 end
822 class ABraReassignExpr
823 special ABraFormExpr
824 special AReassignFormExpr
825 end
826 class AClosureCallExpr
827 special AExpr
828 readable var _n_id: TId
829 readable var _n_args: List[AExpr] = new List[AExpr]
830 readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
831 end
832 class AVarExpr
833 special AVarFormExpr
834 end
835 class AVarAssignExpr
836 special AVarFormExpr
837 special AAssignFormExpr
838 end
839 class AVarReassignExpr
840 special AVarFormExpr
841 special AReassignFormExpr
842 end
843 class ARangeExpr
844 special AExpr
845 readable var _n_expr: AExpr
846 readable var _n_expr2: AExpr
847 end
848 class ACrangeExpr
849 special ARangeExpr
850 end
851 class AOrangeExpr
852 special ARangeExpr
853 end
854 class AArrayExpr
855 special AExpr
856 readable var _n_exprs: List[AExpr] = new List[AExpr]
857 end
858 class ASelfExpr
859 special AExpr
860 readable var _n_kwself: nullable TKwself
861 end
862 class AImplicitSelfExpr
863 special ASelfExpr
864 end
865 class ATrueExpr
866 special ABoolExpr
867 readable var _n_kwtrue: TKwtrue
868 end
869 class AFalseExpr
870 special ABoolExpr
871 readable var _n_kwfalse: TKwfalse
872 end
873 class ANullExpr
874 special AExpr
875 readable var _n_kwnull: TKwnull
876 end
877 class AIntExpr
878 special AExpr
879 readable var _n_number: TNumber
880 end
881 class AFloatExpr
882 special AExpr
883 readable var _n_float: TFloat
884 end
885 class ACharExpr
886 special AExpr
887 readable var _n_char: TChar
888 end
889 class AStringFormExpr
890 special AExpr
891 end
892 class AStringExpr
893 special AStringFormExpr
894 readable var _n_string: TString
895 end
896 class AStartStringExpr
897 special AStringFormExpr
898 readable var _n_string: TStartString
899 end
900 class AMidStringExpr
901 special AStringFormExpr
902 readable var _n_string: TMidString
903 end
904 class AEndStringExpr
905 special AStringFormExpr
906 readable var _n_string: TEndString
907 end
908 class ASuperstringExpr
909 special AExpr
910 readable var _n_exprs: List[AExpr] = new List[AExpr]
911 end
912 class AParExpr
913 special AProxyExpr
914 end
915 class AProxyExpr
916 special AExpr
917 readable var _n_expr: AExpr
918 end
919 class AAsCastExpr
920 special AExpr
921 readable var _n_expr: AExpr
922 readable var _n_kwas: TKwas
923 readable var _n_type: AType
924 end
925 class AAsNotnullExpr
926 special AExpr
927 readable var _n_expr: AExpr
928 readable var _n_kwas: TKwas
929 readable var _n_kwnot: TKwnot
930 readable var _n_kwnull: TKwnull
931 end
932 class AIssetAttrExpr
933 special AAttrFormExpr
934 readable var _n_kwisset: TKwisset
935 end
936 class AAssignOp special Prod end
937 class APlusAssignOp
938 special AAssignOp
939 readable var _n_pluseq: TPluseq
940 end
941 class AMinusAssignOp
942 special AAssignOp
943 readable var _n_minuseq: TMinuseq
944 end
945 class AClosureDef
946 special ALabelable
947 readable var _n_bang: TBang
948 readable var _n_id: AClosureId
949 readable var _n_ids: List[TId] = new List[TId]
950 readable var _n_kwdo: nullable TKwdo = null
951 readable var _n_expr: nullable AExpr = null
952 end
953 class AClosureId
954 special Prod
955 end
956 class ASimpleClosureId
957 special AClosureId
958 readable var _n_id: TId
959 end
960 class ABreakClosureId
961 special AClosureId
962 readable var _n_kwbreak: TKwbreak
963 end
964 class AQualified
965 special Prod
966 readable var _n_id: List[TId] = new List[TId]
967 readable var _n_classid: nullable TClassid = null
968 end
969 class ADoc
970 special Prod
971 readable var _n_comment: List[TComment] = new List[TComment]
972 end
973
974 class Start
975 special Prod
976 readable var _n_base: nullable AModule
977 readable var _n_eof: EOF
978 end