1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Copyright 2008-2009 Jean Privat <jean@pryen.org>
4 # Copyright 2009 Jean-Sebastien Gelinas <calestar@gmail.com>
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
10 # http://www.apache.org/licenses/LICENSE-2.0
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.
18 # AST nodes of the Nit language
19 # Was previously based on parser_abs.nit.
24 # Root of the AST hierarchy
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
34 # Display a message for the colored location of the node
35 fun debug
(message
: String)
37 print
"{hot_location} {self.class_name}: {message}\n{hot_location.colored_line("0;32")}"
41 # Ancestor of all tokens
44 fun text
: String is abstract
46 redef fun to_s
: String do
51 # Ancestor of all productions
54 fun location
=(l
: Location) do _location
= l
66 abstract class TokenKeyword
70 return "keyword '{text}'"
247 abstract class TokenOperator
251 return "operator '{text}'"
318 do return "type identifier '{text}'"
325 do return "identifier '{text}'"
332 do return "attribute '{text}'"
335 abstract class TokenLiteral
339 do return "literal value '{text}'"
367 do return "malformed string {text}"
374 do return "malformed character {text}"
379 private init noinit
do end
387 private init noinit
do end
392 readable var _n_moduledecl
: nullable AModuledecl = null
393 readable var _n_imports
: List[AImport] = new List[AImport]
394 readable var _n_classdefs
: List[AClassdef] = new List[AClassdef]
398 readable var _n_doc
: nullable ADoc = null
399 readable var _n_kwmodule
: TKwmodule
400 readable var _n_name
: AModuleName
402 abstract class AImport super Prod end
405 readable var _n_visibility
: AVisibility
406 readable var _n_kwimport
: TKwimport
407 readable var _n_name
: AModuleName
411 readable var _n_visibility
: AVisibility
412 readable var _n_kwimport
: TKwimport
413 readable var _n_kwend
: TKwend
415 abstract class AVisibility super Prod end
416 class APublicVisibility
419 class APrivateVisibility
421 readable var _n_kwprivate
: TKwprivate
423 class AProtectedVisibility
425 readable var _n_kwprotected
: TKwprotected
427 class AIntrudeVisibility
429 readable var _n_kwintrude
: TKwintrude
431 abstract class AClassdef super Prod
432 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
436 readable var _n_doc
: nullable ADoc = null
437 readable var _n_kwredef
: nullable TKwredef = null
438 readable var _n_visibility
: AVisibility
439 readable var _n_classkind
: AClasskind
440 readable var _n_id
: nullable TClassid = null
441 readable var _n_formaldefs
: List[AFormaldef] = new List[AFormaldef]
442 readable var _n_superclasses
: List[ASuperclass] = new List[ASuperclass]
443 readable var _n_kwend
: TKwend
444 redef fun hot_location
do return n_id
.location
452 abstract class AClasskind super Prod end
453 class AConcreteClasskind
455 readable var _n_kwclass
: TKwclass
457 class AAbstractClasskind
459 readable var _n_kwabstract
: TKwabstract
460 readable var _n_kwclass
: TKwclass
462 class AInterfaceClasskind
464 readable var _n_kwinterface
: TKwinterface
468 readable var _n_kwenum
: TKwenum
470 class AExternClasskind
472 readable var _n_kwextern
: TKwextern
476 readable var _n_id
: TClassid
477 readable var _n_type
: nullable AType = null
481 readable var _n_kwspecial
: nullable TKwspecial = null
482 readable var _n_kwsuper
: nullable TKwsuper = null
483 readable var _n_type
: AType
485 abstract class APropdef super Prod
486 readable var _n_doc
: nullable ADoc = null
490 readable var _n_kwredef
: nullable TKwredef = null
491 readable var _n_visibility
: AVisibility
492 readable var _n_kwvar
: TKwvar
493 readable var _n_id
: nullable TAttrid
494 readable var _n_id2
: nullable TId
495 readable var _n_type
: nullable AType = null
496 readable var _n_readable
: nullable AAble = null
497 readable var _n_writable
: nullable AAble = null
498 readable var _n_expr
: nullable AExpr = null
499 redef fun hot_location
501 if n_id
!= null then return n_id
.location
else return n_id2
.location
504 abstract class AMethPropdef
506 readable var _n_kwredef
: nullable TKwredef = null
507 readable var _n_visibility
: nullable AVisibility
508 readable var _n_methid
: nullable AMethid = null
509 readable var _n_signature
: nullable ASignature
510 redef fun hot_location
512 if n_methid
!= null then
513 return n_methid
.location
519 class ADeferredMethPropdef
521 readable var _n_kwmeth
: TKwmeth
523 class AInternMethPropdef
525 readable var _n_kwmeth
: TKwmeth
527 abstract class AExternPropdef
529 readable var _n_extern
: nullable TString = null
530 readable var _n_extern_calls
: nullable AExternCalls = null
532 class AExternMethPropdef
535 readable var _n_kwmeth
: TKwmeth
537 class AConcreteMethPropdef
539 readable var _n_kwmeth
: nullable TKwmeth
540 readable var _n_block
: nullable AExpr = null
542 abstract class AInitPropdef
545 class AConcreteInitPropdef
546 super AConcreteMethPropdef
548 readable var _n_kwinit
: TKwinit
549 redef fun hot_location
do return n_kwinit
.location
551 class AExternInitPropdef
554 readable var _n_kwnew
: TKwnew
556 class AMainMethPropdef
557 super AConcreteMethPropdef
561 readable var _n_kwimport
: TKwimport
562 readable var _n_extern_calls
: List[AExternCall] = new List[AExternCall]
564 abstract class AExternCall
567 abstract class APropExternCall
570 class ALocalPropExternCall
571 special APropExternCall
572 readable var _n_methid
: AMethid
574 class AFullPropExternCall
575 special APropExternCall
576 readable var _n_classid
: TClassid
577 readable var _n_quad
: nullable TQuad = null
578 readable var _n_methid
: AMethid
580 class AInitPropExternCall
581 special APropExternCall
582 readable var _n_classid
: TClassid
584 class ASuperExternCall
586 readable var _n_kwsuper
: TKwsuper
588 abstract class ACastExternCall
591 class ACastAsExternCall
592 special ACastExternCall
593 readable var _n_from_type
: AType
594 readable var _n_kwas
: TKwas
595 readable var _n_to_type
: AType
597 class AAsNullableExternCall
598 special ACastExternCall
599 readable var _n_type
: AType
600 readable var _n_kwas
: TKwas
601 readable var _n_kwnullable
: TKwnullable
603 class AAsNotNullableExternCall
604 special ACastExternCall
605 readable var _n_type
: AType
606 readable var _n_kwas
: TKwas
607 readable var _n_kwnot
: TKwnot
608 readable var _n_kwnullable
: TKwnullable
612 readable var _n_kwredef
: nullable TKwredef = null
613 readable var _n_visibility
: AVisibility
614 readable var _n_kwtype
: TKwtype
615 readable var _n_id
: TClassid
616 readable var _n_type
: AType
618 abstract class AAble super Prod
619 readable var _n_visibility
: nullable AVisibility = null
620 readable var _n_kwredef
: nullable TKwredef = null
624 readable var _n_kwreadable
: TKwreadable
628 readable var _n_kwwritable
: TKwwritable
630 abstract class AMethid super Prod end
633 readable var _n_id
: TId
637 readable var _n_plus
: TPlus
641 readable var _n_minus
: TMinus
645 readable var _n_star
: TStar
649 readable var _n_slash
: TSlash
653 readable var _n_percent
: TPercent
657 readable var _n_eq
: TEq
661 readable var _n_ne
: TNe
665 readable var _n_le
: TLe
669 readable var _n_ge
: TGe
673 readable var _n_lt
: TLt
677 readable var _n_gt
: TGt
681 readable writable var _n_ll
: TLl
685 readable writable var _n_gg
: TGg
689 readable var _n_obra
: TObra
690 readable var _n_cbra
: TCbra
692 class AStarshipMethid
694 readable var _n_starship
: TStarship
698 readable var _n_id
: TId
699 readable var _n_assign
: TAssign
701 class ABraassignMethid
703 readable var _n_obra
: TObra
704 readable var _n_cbra
: TCbra
705 readable var _n_assign
: TAssign
709 readable var _n_opar
: nullable TOpar = null
710 readable var _n_params
: List[AParam] = new List[AParam]
711 readable var _n_cpar
: nullable TCpar = null
712 readable var _n_type
: nullable AType = null
713 readable var _n_closure_decls
: List[AClosureDecl] = new List[AClosureDecl]
717 readable var _n_id
: TId
718 readable var _n_type
: nullable AType = null
719 readable var _n_dotdotdot
: nullable TDotdotdot = null
723 readable var _n_kwbreak
: nullable TKwbreak = null
724 readable var _n_bang
: TBang
725 readable var _n_id
: TId
726 readable var _n_signature
: ASignature
727 readable var _n_expr
: nullable AExpr = null
731 readable var _n_kwnullable
: nullable TKwnullable = null
732 readable var _n_id
: TClassid
733 readable var _n_types
: List[AType] = new List[AType]
737 readable var _n_kwlabel
: TKwlabel
738 readable var _n_id
: TId
740 abstract class AExpr super Prod end
743 readable var _n_expr
: List[AExpr] = new List[AExpr]
744 readable var _n_kwend
: nullable TKwend = null
748 readable var _n_kwvar
: TKwvar
749 readable var _n_id
: TId
750 readable var _n_type
: nullable AType = null
751 readable var _n_assign
: nullable TAssign = null
752 readable var _n_expr
: nullable AExpr = null
756 readable var _n_kwreturn
: nullable TKwreturn = null
757 readable var _n_expr
: nullable AExpr = null
759 abstract class ALabelable
761 readable var _n_label
: nullable ALabel = null
766 readable var _n_kwbreak
: TKwbreak
767 readable var _n_expr
: nullable AExpr = null
771 readable var _n_kwabort
: TKwabort
776 readable var _n_kwcontinue
: nullable TKwcontinue = null
777 readable var _n_expr
: nullable AExpr = null
782 readable var _n_kwdo
: TKwdo
783 readable var _n_block
: nullable AExpr = null
787 readable var _n_kwif
: TKwif
788 readable var _n_expr
: AExpr
789 readable var _n_then
: nullable AExpr = null
790 readable var _n_else
: nullable AExpr = null
794 readable var _n_kwif
: TKwif
795 readable var _n_expr
: AExpr
796 readable var _n_kwthen
: TKwthen
797 readable var _n_then
: AExpr
798 readable var _n_kwelse
: TKwelse
799 readable var _n_else
: AExpr
804 readable var _n_kwwhile
: TKwwhile
805 readable var _n_expr
: AExpr
806 readable var _n_kwdo
: TKwdo
807 readable var _n_block
: nullable AExpr = null
812 readable var _n_kwloop
: TKwloop
813 readable var _n_block
: nullable AExpr = null
818 readable var _n_kwfor
: TKwfor
819 readable var _n_ids
: List[TId] = new List[TId]
820 readable var _n_expr
: AExpr
821 readable var _n_kwdo
: TKwdo
822 readable var _n_block
: nullable AExpr = null
826 readable var _n_kwassert
: TKwassert
827 readable var _n_id
: nullable TId = null
828 readable var _n_expr
: AExpr
829 readable var _n_else
: nullable AExpr = null
831 abstract class AAssignFormExpr
833 readable var _n_assign
: TAssign
834 readable var _n_value
: AExpr
836 abstract class AReassignFormExpr
838 readable var _n_assign_op
: AAssignOp
839 readable var _n_value
: AExpr
843 readable var _n_kwonce
: TKwonce
845 abstract class ASendExpr
847 readable var _n_expr
: AExpr
848 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
850 abstract class ABinopExpr
852 readable var _n_expr2
: AExpr
854 abstract class ABoolExpr
859 readable var _n_expr
: AExpr
860 readable var _n_expr2
: AExpr
864 readable var _n_expr
: AExpr
865 readable var _n_expr2
: AExpr
869 readable var _n_expr
: AExpr
870 readable var _n_expr2
: AExpr
874 readable var _n_kwnot
: TKwnot
875 readable var _n_expr
: AExpr
882 readable var _n_expr
: AExpr
883 readable var _n_expr2
: AExpr
908 readable var _n_expr
: AExpr
909 readable var _n_type
: AType
931 readable var _n_minus
: TMinus
935 readable var _n_kwnew
: TKwnew
936 readable var _n_type
: AType
937 readable var _n_id
: nullable TId = null
938 readable var _n_args
: AExprs
940 abstract class AAttrFormExpr
942 readable var _n_expr
: AExpr
943 readable var _n_id
: TAttrid
948 class AAttrAssignExpr
950 super AAssignFormExpr
952 abstract class ACallFormExpr
954 readable var _n_id
: TId
955 readable var _n_args
: AExprs
957 abstract class ASendReassignFormExpr
959 super AReassignFormExpr
961 class AAttrReassignExpr
964 super AReassignFormExpr
969 class ACallAssignExpr
971 super AAssignFormExpr
973 class ACallReassignExpr
976 super ASendReassignFormExpr
980 readable var _n_qualified
: nullable AQualified = null
981 readable var _n_kwsuper
: TKwsuper
982 readable var _n_args
: AExprs
986 readable var _n_kwinit
: TKwinit
987 readable var _n_args
: AExprs
989 abstract class ABraFormExpr
991 readable var _n_args
: AExprs
998 super AAssignFormExpr
1000 abstract class AVarFormExpr
1002 readable var _n_id
: TId
1004 class ABraReassignExpr
1006 super ASendReassignFormExpr
1008 class AClosureCallExpr
1010 readable var _n_id
: TId
1011 readable var _n_args
: AExprs
1012 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
1017 class AVarAssignExpr
1019 super AAssignFormExpr
1021 class AVarReassignExpr
1023 super AReassignFormExpr
1025 abstract class ARangeExpr
1027 readable var _n_expr
: AExpr
1028 readable var _n_expr2
: AExpr
1032 readable var _n_obra
: TObra
1033 readable var _n_cbra
: TCbra
1037 readable var _n_obra
: TObra
1038 readable var _n_cbra
: TObra
1042 readable var _n_exprs
: AExprs
1046 readable var _n_kwself
: nullable TKwself
1048 class AImplicitSelfExpr
1053 readable var _n_kwtrue
: TKwtrue
1057 readable var _n_kwfalse
: TKwfalse
1061 readable var _n_kwnull
: TKwnull
1065 readable var _n_number
: TNumber
1069 readable var _n_float
: TFloat
1073 readable var _n_char
: TChar
1075 abstract class AStringFormExpr
1079 super AStringFormExpr
1080 readable var _n_string
: TString
1082 class AStartStringExpr
1083 super AStringFormExpr
1084 readable var _n_string
: TStartString
1086 class AMidStringExpr
1087 super AStringFormExpr
1088 readable var _n_string
: TMidString
1090 class AEndStringExpr
1091 super AStringFormExpr
1092 readable var _n_string
: TEndString
1094 class ASuperstringExpr
1096 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1100 readable var _n_opar
: TOpar
1101 readable var _n_cpar
: TCpar
1103 abstract class AProxyExpr
1105 readable var _n_expr
: AExpr
1109 readable var _n_expr
: AExpr
1110 readable var _n_kwas
: TKwas
1111 readable var _n_opar
: TOpar
1112 readable var _n_type
: AType
1113 readable var _n_cpar
: TCpar
1115 class AAsNotnullExpr
1117 readable var _n_expr
: AExpr
1118 readable var _n_kwas
: TKwas
1119 readable var _n_opar
: TOpar
1120 readable var _n_kwnot
: TKwnot
1121 readable var _n_kwnull
: TKwnull
1122 readable var _n_cpar
: TCpar
1124 class AIssetAttrExpr
1126 readable var _n_kwisset
: TKwisset
1128 abstract class AExprs
1130 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1132 class ADebugTypeExpr
1134 readable var _n_kwdebug
: TKwdebug
1135 readable var _n_kwtype
: TKwtype
1136 readable var _n_expr
: AExpr
1137 readable var _n_type
: AType
1144 readable var _n_opar
: TOpar
1145 readable var _n_cpar
: TCpar
1149 readable var _n_obra
: TObra
1150 readable var _n_cbra
: TCbra
1152 abstract class AAssignOp super Prod end
1155 readable var _n_pluseq
: TPluseq
1157 class AMinusAssignOp
1159 readable var _n_minuseq
: TMinuseq
1163 readable var _n_bang
: TBang
1164 readable var _n_id
: AClosureId
1165 readable var _n_ids
: List[TId] = new List[TId]
1166 readable var _n_kwdo
: nullable TKwdo = null
1167 readable var _n_expr
: nullable AExpr = null
1168 redef fun hot_location
do return n_id
.location
1170 abstract class AClosureId
1173 class ASimpleClosureId
1175 readable var _n_id
: TId
1177 class ABreakClosureId
1179 readable var _n_kwbreak
: TKwbreak
1183 readable var _n_quad
: nullable TQuad = null
1184 readable var _n_path
: List[TId] = new List[TId]
1185 readable var _n_id
: TId
1189 readable var _n_quad
: nullable TQuad = null
1190 readable var _n_id
: List[TId] = new List[TId]
1191 readable var _n_classid
: nullable TClassid = null
1195 readable var _n_comment
: List[TComment] = new List[TComment]
1200 readable var _n_base
: nullable AModule
1201 readable var _n_eof
: EOF
1202 init(n_base
: nullable AModule, n_eof
: EOF)
1204 self._n_base
= n_base