compile: Check the validity of module filename before parsing.
[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 TKwpackage
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_packagedecl: nullable APackagedecl = 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 APackagedecl
319 special Prod
320 readable var _n_doc: nullable ADoc = null
321 readable var _n_kwpackage: TKwpackage
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: TAttrid
411 readable var _n_type: nullable AType = null
412 readable var _n_readable: nullable AAble = null
413 readable var _n_writable: nullable AAble = null
414 readable var _n_expr: nullable AExpr = null
415 end
416 class AMethPropdef
417 special APropdef
418 readable var _n_kwredef: nullable TKwredef = null
419 readable var _n_visibility: nullable AVisibility
420 readable var _n_methid: nullable AMethid = null
421 readable var _n_signature: nullable ASignature
422 end
423 class ADeferredMethPropdef
424 special AMethPropdef
425 readable var _n_kwmeth: TKwmeth
426 end
427 class AInternMethPropdef
428 special AMethPropdef
429 readable var _n_kwmeth: TKwmeth
430 end
431 class AExternMethPropdef
432 special AMethPropdef
433 readable var _n_kwmeth: TKwmeth
434 readable var _n_extern: nullable TString = null
435 end
436 class AConcreteMethPropdef
437 special AMethPropdef
438 readable var _n_kwmeth: nullable TKwmeth
439 readable var _n_block: nullable AExpr = null
440 end
441 class AConcreteInitPropdef
442 special AConcreteMethPropdef
443 readable var _n_kwinit: TKwinit
444 end
445 class AMainMethPropdef
446 special AConcreteMethPropdef
447 end
448 class ATypePropdef
449 special APropdef
450 readable var _n_kwredef: nullable TKwredef = null
451 readable var _n_visibility: AVisibility
452 readable var _n_kwtype: TKwtype
453 readable var _n_id: TClassid
454 readable var _n_type: AType
455 end
456 class AAble special Prod
457 readable var _n_kwredef: nullable TKwredef = null
458 end
459 class AReadAble
460 special AAble
461 readable var _n_kwreadable: TKwreadable
462 end
463 class AWriteAble
464 special AAble
465 readable var _n_kwwritable: TKwwritable
466 end
467 class AMethid special Prod end
468 class AIdMethid
469 special AMethid
470 readable var _n_id: TId
471 end
472 class APlusMethid
473 special AMethid
474 readable var _n_plus: TPlus
475 end
476 class AMinusMethid
477 special AMethid
478 readable var _n_minus: TMinus
479 end
480 class AStarMethid
481 special AMethid
482 readable var _n_star: TStar
483 end
484 class ASlashMethid
485 special AMethid
486 readable var _n_slash: TSlash
487 end
488 class APercentMethid
489 special AMethid
490 readable var _n_percent: TPercent
491 end
492 class AEqMethid
493 special AMethid
494 readable var _n_eq: TEq
495 end
496 class ANeMethid
497 special AMethid
498 readable var _n_ne: TNe
499 end
500 class ALeMethid
501 special AMethid
502 readable var _n_le: TLe
503 end
504 class AGeMethid
505 special AMethid
506 readable var _n_ge: TGe
507 end
508 class ALtMethid
509 special AMethid
510 readable var _n_lt: TLt
511 end
512 class AGtMethid
513 special AMethid
514 readable var _n_gt: TGt
515 end
516 class ABraMethid
517 special AMethid
518 readable var _n_obra: TObra
519 readable var _n_cbra: TCbra
520 end
521 class AStarshipMethid
522 special AMethid
523 readable var _n_starship: TStarship
524 end
525 class AAssignMethid
526 special AMethid
527 readable var _n_id: TId
528 readable var _n_assign: TAssign
529 end
530 class ABraassignMethid
531 special AMethid
532 readable var _n_obra: TObra
533 readable var _n_cbra: TCbra
534 readable var _n_assign: TAssign
535 end
536 class ASignature
537 special Prod
538 readable var _n_params: List[AParam] = new List[AParam]
539 readable var _n_type: nullable AType = null
540 readable var _n_closure_decls: List[AClosureDecl] = new List[AClosureDecl]
541 end
542 class AParam
543 special Prod
544 readable var _n_id: TId
545 readable var _n_type: nullable AType = null
546 readable var _n_dotdotdot: nullable TDotdotdot = null
547 end
548 class AClosureDecl
549 special Prod
550 readable var _n_kwbreak: nullable TKwbreak = null
551 readable var _n_bang: TBang
552 readable var _n_id: TId
553 readable var _n_signature: ASignature
554 readable var _n_expr: nullable AExpr = null
555 end
556 class AType
557 special Prod
558 readable var _n_kwnullable: nullable TKwnullable = null
559 readable var _n_id: TClassid
560 readable var _n_types: List[AType] = new List[AType]
561 end
562 class ALabel
563 special Prod
564 readable var _n_kwlabel: TKwlabel
565 readable var _n_id: TId
566 end
567 class AExpr special Prod end
568 class ABlockExpr
569 special AExpr
570 readable var _n_expr: List[AExpr] = new List[AExpr]
571 end
572 class AVardeclExpr
573 special AExpr
574 readable var _n_kwvar: TKwvar
575 readable var _n_id: TId
576 readable var _n_type: nullable AType = null
577 readable var _n_assign: nullable TAssign = null
578 readable var _n_expr: nullable AExpr = null
579 end
580 class AReturnExpr
581 special AExpr
582 readable var _n_kwreturn: nullable TKwreturn = null
583 readable var _n_expr: nullable AExpr = null
584 end
585 class ALabelable
586 special Prod
587 readable var _n_label: nullable ALabel = null
588 end
589 class ABreakExpr
590 special AExpr
591 special ALabelable
592 readable var _n_kwbreak: TKwbreak
593 readable var _n_expr: nullable AExpr = null
594 end
595 class AAbortExpr
596 special AExpr
597 readable var _n_kwabort: TKwabort
598 end
599 class AContinueExpr
600 special AExpr
601 special ALabelable
602 readable var _n_kwcontinue: nullable TKwcontinue = null
603 readable var _n_expr: nullable AExpr = null
604 end
605 class ADoExpr
606 special AExpr
607 special ALabelable
608 readable var _n_kwdo: TKwdo
609 readable var _n_block: nullable AExpr = null
610 end
611 class AIfExpr
612 special AExpr
613 readable var _n_kwif: TKwif
614 readable var _n_expr: AExpr
615 readable var _n_then: nullable AExpr = null
616 readable var _n_else: nullable AExpr = null
617 end
618 class AIfexprExpr
619 special AExpr
620 readable var _n_kwif: TKwif
621 readable var _n_expr: AExpr
622 readable var _n_kwthen: TKwthen
623 readable var _n_then: AExpr
624 readable var _n_kwelse: TKwelse
625 readable var _n_else: AExpr
626 end
627 class AWhileExpr
628 special AExpr
629 special ALabelable
630 readable var _n_kwwhile: TKwwhile
631 readable var _n_expr: AExpr
632 readable var _n_kwdo: TKwdo
633 readable var _n_block: nullable AExpr = null
634 end
635 class ALoopExpr
636 special AExpr
637 special ALabelable
638 readable var _n_kwloop: TKwloop
639 readable var _n_block: nullable AExpr = null
640 end
641 class AForExpr
642 special AExpr
643 special ALabelable
644 readable var _n_kwfor: TKwfor
645 readable var _n_id: TId
646 readable var _n_expr: AExpr
647 readable var _n_kwdo: TKwdo
648 readable var _n_block: nullable AExpr = null
649 end
650 class AAssertExpr
651 special AExpr
652 readable var _n_kwassert: TKwassert
653 readable var _n_id: nullable TId = null
654 readable var _n_expr: AExpr
655 readable var _n_else: nullable AExpr = null
656 end
657 class AAssignFormExpr
658 special AExpr
659 readable var _n_assign: TAssign
660 readable var _n_value: AExpr
661 end
662 class AReassignFormExpr
663 special AExpr
664 readable var _n_assign_op: AAssignOp
665 readable var _n_value: AExpr
666 end
667 class AOnceExpr
668 special AProxyExpr
669 readable var _n_kwonce: TKwonce
670 end
671 class ASendExpr
672 special AExpr
673 readable var _n_expr: AExpr
674 readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
675 end
676 class ABinopExpr
677 special ASendExpr
678 readable var _n_expr2: AExpr
679 end
680 class ABoolExpr
681 special AExpr
682 end
683 class AOrExpr
684 special ABoolExpr
685 readable var _n_expr: AExpr
686 readable var _n_expr2: AExpr
687 end
688 class AAndExpr
689 special ABoolExpr
690 readable var _n_expr: AExpr
691 readable var _n_expr2: AExpr
692 end
693 class AOrElseExpr
694 special ABoolExpr
695 readable var _n_expr: AExpr
696 readable var _n_expr2: AExpr
697 end
698 class ANotExpr
699 special ABoolExpr
700 readable var _n_kwnot: TKwnot
701 readable var _n_expr: AExpr
702 end
703 class AEqExpr
704 special ABinopExpr
705 end
706 class AEeExpr
707 special ABoolExpr
708 readable var _n_expr: AExpr
709 readable var _n_expr2: AExpr
710 end
711 class ANeExpr
712 special ABinopExpr
713 end
714 class ALtExpr
715 special ABinopExpr
716 end
717 class ALeExpr
718 special ABinopExpr
719 end
720 class AGtExpr
721 special ABinopExpr
722 end
723 class AGeExpr
724 special ABinopExpr
725 end
726 class AIsaExpr
727 special ABoolExpr
728 readable var _n_expr: AExpr
729 readable var _n_type: AType
730 end
731 class APlusExpr
732 special ABinopExpr
733 end
734 class AMinusExpr
735 special ABinopExpr
736 end
737 class AStarshipExpr
738 special ABinopExpr
739 end
740 class AStarExpr
741 special ABinopExpr
742 end
743 class ASlashExpr
744 special ABinopExpr
745 end
746 class APercentExpr
747 special ABinopExpr
748 end
749 class AUminusExpr
750 special ASendExpr
751 readable var _n_minus: TMinus
752 end
753 class ANewExpr
754 special AExpr
755 readable var _n_kwnew: TKwnew
756 readable var _n_type: AType
757 readable var _n_id: nullable TId = null
758 readable var _n_args: List[AExpr] = new List[AExpr]
759 end
760 class AAttrFormExpr
761 special AExpr
762 readable var _n_expr: AExpr
763 readable var _n_id: TAttrid
764 end
765 class AAttrExpr
766 special AAttrFormExpr
767 end
768 class AAttrAssignExpr
769 special AAttrFormExpr
770 special AAssignFormExpr
771 end
772 class ACallFormExpr
773 special ASendExpr
774 readable var _n_id: TId
775 readable var _n_args: List[AExpr] = new List[AExpr]
776 end
777 class AAttrReassignExpr
778 special AExpr
779 special AAttrFormExpr
780 special AReassignFormExpr
781 end
782 class ACallExpr
783 special ACallFormExpr
784 end
785 class ACallAssignExpr
786 special ACallFormExpr
787 special AAssignFormExpr
788 end
789 class ACallReassignExpr
790 special AExpr
791 special ACallFormExpr
792 special AReassignFormExpr
793 end
794 class ASuperExpr
795 special AExpr
796 readable var _n_qualified: nullable AQualified = null
797 readable var _n_kwsuper: TKwsuper
798 readable var _n_args: List[AExpr] = new List[AExpr]
799 end
800 class AInitExpr
801 special ASendExpr
802 readable var _n_kwinit: TKwinit
803 readable var _n_args: List[AExpr] = new List[AExpr]
804 end
805 class ABraFormExpr
806 special ASendExpr
807 readable var _n_args: List[AExpr] = new List[AExpr]
808 end
809 class ABraExpr
810 special ABraFormExpr
811 end
812 class ABraAssignExpr
813 special ABraFormExpr
814 special AAssignFormExpr
815 end
816 class AVarFormExpr
817 special AExpr
818 readable var _n_id: TId
819 end
820 class ABraReassignExpr
821 special ABraFormExpr
822 special AReassignFormExpr
823 end
824 class AClosureCallExpr
825 special AExpr
826 readable var _n_id: TId
827 readable var _n_args: List[AExpr] = new List[AExpr]
828 readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
829 end
830 class AVarExpr
831 special AVarFormExpr
832 end
833 class AVarAssignExpr
834 special AVarFormExpr
835 special AAssignFormExpr
836 end
837 class AVarReassignExpr
838 special AVarFormExpr
839 special AReassignFormExpr
840 end
841 class ARangeExpr
842 special AExpr
843 readable var _n_expr: AExpr
844 readable var _n_expr2: AExpr
845 end
846 class ACrangeExpr
847 special ARangeExpr
848 end
849 class AOrangeExpr
850 special ARangeExpr
851 end
852 class AArrayExpr
853 special AExpr
854 readable var _n_exprs: List[AExpr] = new List[AExpr]
855 end
856 class ASelfExpr
857 special AExpr
858 readable var _n_kwself: nullable TKwself
859 end
860 class AImplicitSelfExpr
861 special ASelfExpr
862 end
863 class ATrueExpr
864 special ABoolExpr
865 readable var _n_kwtrue: TKwtrue
866 end
867 class AFalseExpr
868 special ABoolExpr
869 readable var _n_kwfalse: TKwfalse
870 end
871 class ANullExpr
872 special AExpr
873 readable var _n_kwnull: TKwnull
874 end
875 class AIntExpr
876 special AExpr
877 readable var _n_number: TNumber
878 end
879 class AFloatExpr
880 special AExpr
881 readable var _n_float: TFloat
882 end
883 class ACharExpr
884 special AExpr
885 readable var _n_char: TChar
886 end
887 class AStringFormExpr
888 special AExpr
889 end
890 class AStringExpr
891 special AStringFormExpr
892 readable var _n_string: TString
893 end
894 class AStartStringExpr
895 special AStringFormExpr
896 readable var _n_string: TStartString
897 end
898 class AMidStringExpr
899 special AStringFormExpr
900 readable var _n_string: TMidString
901 end
902 class AEndStringExpr
903 special AStringFormExpr
904 readable var _n_string: TEndString
905 end
906 class ASuperstringExpr
907 special AExpr
908 readable var _n_exprs: List[AExpr] = new List[AExpr]
909 end
910 class AParExpr
911 special AProxyExpr
912 end
913 class AProxyExpr
914 special AExpr
915 readable var _n_expr: AExpr
916 end
917 class AAsCastExpr
918 special AExpr
919 readable var _n_expr: AExpr
920 readable var _n_kwas: TKwas
921 readable var _n_type: AType
922 end
923 class AAsNotnullExpr
924 special AExpr
925 readable var _n_expr: AExpr
926 readable var _n_kwas: TKwas
927 readable var _n_kwnot: TKwnot
928 readable var _n_kwnull: TKwnull
929 end
930 class AIssetAttrExpr
931 special AAttrFormExpr
932 readable var _n_kwisset: TKwisset
933 end
934 class AAssignOp special Prod end
935 class APlusAssignOp
936 special AAssignOp
937 readable var _n_pluseq: TPluseq
938 end
939 class AMinusAssignOp
940 special AAssignOp
941 readable var _n_minuseq: TMinuseq
942 end
943 class AClosureDef
944 special ALabelable
945 readable var _n_bang: TBang
946 readable var _n_id: AClosureId
947 readable var _n_ids: List[TId] = new List[TId]
948 readable var _n_kwdo: nullable TKwdo = null
949 readable var _n_expr: nullable AExpr = null
950 end
951 class AClosureId
952 special Prod
953 end
954 class ASimpleClosureId
955 special AClosureId
956 readable var _n_id: TId
957 end
958 class ABreakClosureId
959 special AClosureId
960 readable var _n_kwbreak: TKwbreak
961 end
962 class AQualified
963 special Prod
964 readable var _n_id: List[TId] = new List[TId]
965 readable var _n_classid: nullable TClassid = null
966 end
967 class ADoc
968 special Prod
969 readable var _n_comment: List[TComment] = new List[TComment]
970 end
971
972 class Start
973 special Prod
974 readable var _n_base: nullable AModule
975 readable var _n_eof: EOF
976 end