3ecaac262e89c63ceb4651508fa75e074663fcc4
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
45 fun text
=(text
: String) is abstract
47 redef fun to_s
: String do
52 # Ancestor of all productions
55 fun location
=(l
: Location) do _location
= l
56 readable var _n_annotations
: nullable AAnnotations = null
68 abstract class TokenKeyword
72 return "keyword '{text}'"
246 abstract class TokenOperator
250 return "operator '{text}'"
320 do return "type identifier '{text}'"
327 do return "identifier '{text}'"
334 do return "attribute '{text}'"
337 abstract class TokenLiteral
341 do return "literal value '{text}'"
369 do return "malformed string {text}"
376 do return "malformed character {text}"
379 class TExternCodeSegment
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]
408 readable var _n_doc
: nullable ADoc = null
409 readable var _n_kwmodule
: TKwmodule
410 readable var _n_name
: AModuleName
412 abstract class AImport super Prod end
415 readable var _n_visibility
: AVisibility
416 readable var _n_kwimport
: TKwimport
417 readable var _n_name
: AModuleName
421 readable var _n_visibility
: AVisibility
422 readable var _n_kwimport
: TKwimport
423 readable var _n_kwend
: TKwend
425 abstract class AVisibility super Prod end
426 class APublicVisibility
429 class APrivateVisibility
431 readable var _n_kwprivate
: TKwprivate
433 class AProtectedVisibility
435 readable var _n_kwprotected
: TKwprotected
437 class AIntrudeVisibility
439 readable var _n_kwintrude
: TKwintrude
441 abstract class AClassdef super Prod
442 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
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
463 abstract class AClasskind super Prod end
464 class AConcreteClasskind
466 readable var _n_kwclass
: TKwclass
468 class AAbstractClasskind
470 readable var _n_kwabstract
: TKwabstract
471 readable var _n_kwclass
: TKwclass
473 class AInterfaceClasskind
475 readable var _n_kwinterface
: TKwinterface
479 readable var _n_kwenum
: TKwenum
481 class AExternClasskind
483 readable var _n_kwextern
: TKwextern
484 readable var _n_kwclass
: nullable TKwclass = null
488 readable var _n_id
: TClassid
489 readable var _n_type
: nullable AType = null
493 readable var _n_kwsuper
: TKwsuper
494 readable var _n_type
: AType
496 abstract class APropdef super Prod
497 readable var _n_doc
: nullable ADoc = null
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
512 if n_id
!= null then return n_id
.location
else return n_id2
.location
515 abstract class AMethPropdef
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
523 if n_methid
!= null then
524 return n_methid
.location
530 class ADeferredMethPropdef
532 readable var _n_kwmeth
: TKwmeth
534 class AInternMethPropdef
536 readable var _n_kwmeth
: TKwmeth
538 abstract class AExternPropdef
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
544 class AExternMethPropdef
546 readable var _n_kwmeth
: TKwmeth
548 class AConcreteMethPropdef
550 readable var _n_kwmeth
: nullable TKwmeth
551 readable var _n_block
: nullable AExpr = null
553 abstract class AInitPropdef
556 class AConcreteInitPropdef
557 super AConcreteMethPropdef
559 readable var _n_kwinit
: TKwinit
560 redef fun hot_location
do return n_kwinit
.location
562 class AExternInitPropdef
565 readable var _n_kwnew
: TKwnew
567 class AMainMethPropdef
568 super AConcreteMethPropdef
572 readable var _n_kwimport
: TKwimport
573 readable var _n_extern_calls
: List[AExternCall] = new List[AExternCall]
575 abstract class AExternCall
578 abstract class APropExternCall
581 class ALocalPropExternCall
582 super APropExternCall
583 readable var _n_methid
: AMethid
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
591 class AInitPropExternCall
592 super APropExternCall
593 readable var _n_classid
: TClassid
595 class ASuperExternCall
597 readable var _n_kwsuper
: TKwsuper
599 abstract class ACastExternCall
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
608 class AAsNullableExternCall
609 super ACastExternCall
610 readable var _n_type
: AType
611 readable var _n_kwas
: TKwas
612 readable var _n_kwnullable
: TKwnullable
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
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
629 abstract class AAble super Prod
630 readable var _n_visibility
: nullable AVisibility = null
631 readable var _n_kwredef
: nullable TKwredef = null
635 readable var _n_kwreadable
: TKwreadable
639 readable var _n_kwwritable
: TKwwritable
641 abstract class AMethid super Prod end
644 readable var _n_id
: TId
648 readable var _n_plus
: TPlus
652 readable var _n_minus
: TMinus
656 readable var _n_star
: TStar
660 readable var _n_slash
: TSlash
664 readable var _n_percent
: TPercent
668 readable var _n_eq
: TEq
672 readable var _n_ne
: TNe
676 readable var _n_le
: TLe
680 readable var _n_ge
: TGe
684 readable var _n_lt
: TLt
688 readable var _n_gt
: TGt
692 readable writable var _n_ll
: TLl
696 readable writable var _n_gg
: TGg
700 readable var _n_obra
: TObra
701 readable var _n_cbra
: TCbra
703 class AStarshipMethid
705 readable var _n_starship
: TStarship
709 readable var _n_id
: TId
710 readable var _n_assign
: TAssign
712 class ABraassignMethid
714 readable var _n_obra
: TObra
715 readable var _n_cbra
: TCbra
716 readable var _n_assign
: TAssign
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]
728 readable var _n_id
: TId
729 readable var _n_type
: nullable AType = null
730 readable var _n_dotdotdot
: nullable TDotdotdot = null
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
742 readable var _n_kwnullable
: nullable TKwnullable = null
743 readable var _n_id
: TClassid
744 readable var _n_types
: List[AType] = new List[AType]
748 readable var _n_kwlabel
: TKwlabel
749 readable var _n_id
: TId
751 abstract class AExpr super Prod end
754 readable var _n_expr
: List[AExpr] = new List[AExpr]
755 readable var _n_kwend
: nullable TKwend = null
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
767 readable var _n_kwreturn
: nullable TKwreturn = null
768 readable var _n_expr
: nullable AExpr = null
770 abstract class ALabelable
772 readable var _n_label
: nullable ALabel = null
777 readable var _n_kwbreak
: TKwbreak
778 readable var _n_expr
: nullable AExpr = null
782 readable var _n_kwabort
: TKwabort
787 readable var _n_kwcontinue
: nullable TKwcontinue = null
788 readable var _n_expr
: nullable AExpr = null
793 readable var _n_kwdo
: TKwdo
794 readable var _n_block
: nullable AExpr = null
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
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
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
823 readable var _n_kwloop
: TKwloop
824 readable var _n_block
: nullable AExpr = null
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
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
842 abstract class AAssignFormExpr
844 readable var _n_assign
: TAssign
845 readable var _n_value
: AExpr
847 abstract class AReassignFormExpr
849 readable var _n_assign_op
: AAssignOp
850 readable var _n_value
: AExpr
854 readable var _n_kwonce
: TKwonce
856 abstract class ASendExpr
858 readable var _n_expr
: AExpr
859 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
861 abstract class ABinopExpr
863 readable var _n_expr2
: AExpr
865 abstract class ABoolExpr
870 readable var _n_expr
: AExpr
871 readable var _n_expr2
: AExpr
875 readable var _n_expr
: AExpr
876 readable var _n_expr2
: AExpr
880 readable var _n_expr
: AExpr
881 readable var _n_expr2
: AExpr
885 readable var _n_kwnot
: TKwnot
886 readable var _n_expr
: AExpr
893 readable var _n_expr
: AExpr
894 readable var _n_expr2
: AExpr
919 readable var _n_expr
: AExpr
920 readable var _n_type
: AType
942 readable var _n_minus
: TMinus
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
951 abstract class AAttrFormExpr
953 readable var _n_expr
: AExpr
954 readable var _n_id
: TAttrid
959 class AAttrAssignExpr
961 super AAssignFormExpr
963 abstract class ACallFormExpr
965 readable var _n_id
: TId
966 readable var _n_args
: AExprs
968 abstract class ASendReassignFormExpr
970 super AReassignFormExpr
972 class AAttrReassignExpr
974 super AReassignFormExpr
979 class ACallAssignExpr
981 super AAssignFormExpr
983 class ACallReassignExpr
985 super ASendReassignFormExpr
989 readable var _n_qualified
: nullable AQualified = null
990 readable var _n_kwsuper
: TKwsuper
991 readable var _n_args
: AExprs
995 readable var _n_kwinit
: TKwinit
996 readable var _n_args
: AExprs
998 abstract class ABraFormExpr
1000 readable var _n_args
: AExprs
1005 class ABraAssignExpr
1007 super AAssignFormExpr
1009 abstract class AVarFormExpr
1011 readable var _n_id
: TId
1013 class ABraReassignExpr
1015 super ASendReassignFormExpr
1017 class AClosureCallExpr
1019 readable var _n_id
: TId
1020 readable var _n_args
: AExprs
1021 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
1026 class AVarAssignExpr
1028 super AAssignFormExpr
1030 class AVarReassignExpr
1032 super AReassignFormExpr
1034 abstract class ARangeExpr
1036 readable var _n_expr
: AExpr
1037 readable var _n_expr2
: AExpr
1041 readable var _n_obra
: TObra
1042 readable var _n_cbra
: TCbra
1046 readable var _n_obra
: TObra
1047 readable var _n_cbra
: TObra
1051 readable var _n_exprs
: AExprs
1055 readable var _n_kwself
: nullable TKwself
1057 class AImplicitSelfExpr
1062 readable var _n_kwtrue
: TKwtrue
1066 readable var _n_kwfalse
: TKwfalse
1070 readable var _n_kwnull
: TKwnull
1074 readable var _n_number
: TNumber
1078 readable var _n_float
: TFloat
1082 readable var _n_char
: TChar
1084 abstract class AStringFormExpr
1086 readable var _n_string
: Token
1089 super AStringFormExpr
1091 class AStartStringExpr
1092 super AStringFormExpr
1094 class AMidStringExpr
1095 super AStringFormExpr
1097 class AEndStringExpr
1098 super AStringFormExpr
1100 class ASuperstringExpr
1102 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1106 readable var _n_opar
: TOpar
1107 readable var _n_cpar
: TCpar
1109 abstract class AProxyExpr
1111 readable var _n_expr
: 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
1121 class AAsNotnullExpr
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
1130 class AIssetAttrExpr
1132 readable var _n_kwisset
: TKwisset
1134 abstract class AExprs
1136 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1138 class ADebugTypeExpr
1140 readable var _n_kwdebug
: TKwdebug
1141 readable var _n_kwtype
: TKwtype
1142 readable var _n_expr
: AExpr
1143 readable var _n_type
: AType
1150 readable var _n_opar
: TOpar
1151 readable var _n_cpar
: TCpar
1155 readable var _n_obra
: TObra
1156 readable var _n_cbra
: TCbra
1158 abstract class AAssignOp super Prod end
1161 readable var _n_pluseq
: TPluseq
1163 class AMinusAssignOp
1165 readable var _n_minuseq
: TMinuseq
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
1176 abstract class AClosureId
1179 class ASimpleClosureId
1181 readable var _n_id
: TId
1183 class ABreakClosureId
1185 readable var _n_kwbreak
: TKwbreak
1189 readable var _n_quad
: nullable TQuad = null
1190 readable var _n_path
: List[TId] = new List[TId]
1191 readable var _n_id
: TId
1195 readable var _n_kwin
: TKwin
1196 readable var _n_string
: TString
1198 class AExternCodeBlock
1200 readable var _n_in_language
: nullable AInLanguage = null
1201 readable var _n_extern_code_segment
: TExternCodeSegment
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
1211 readable var _n_comment
: List[TComment] = new List[TComment]
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
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
1228 abstract class AAtArg
1233 readable var _n_type
: AType
1237 readable var _n_expr
: AExpr
1242 abstract class AAtid
1244 readable var _n_id
: Token
1255 class AKwreadableAtid
1258 class AKwwritableAtid
1267 readable var _n_base
: nullable AModule
1268 readable var _n_eof
: EOF
1269 init(n_base
: nullable AModule, n_eof
: EOF)
1271 self._n_base
= n_base