574e5123645e2eca63840a79f1221be12319590d
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 # Ancestor of all tokens
37 fun text
: String is abstract
39 redef fun to_s
: String do
44 # Ancestor of all productions
47 fun location
=(l
: Location) do _location
= l
59 abstract class TokenKeyword
63 return "keyword '{text}'"
237 abstract class TokenOperator
241 return "operator '{text}'"
308 do return "type identifier '{text}'"
315 do return "identifier '{text}'"
322 do return "attribute '{text}'"
325 abstract class TokenLiteral
329 do return "literal value '{text}'"
357 do return "malformed string {text}"
364 do return "malformed character {text}"
369 private init noinit
do end
377 private init noinit
do end
382 readable var _n_moduledecl
: nullable AModuledecl = null
383 readable var _n_imports
: List[AImport] = new List[AImport]
384 readable var _n_classdefs
: List[AClassdef] = new List[AClassdef]
388 readable var _n_doc
: nullable ADoc = null
389 readable var _n_kwmodule
: TKwmodule
390 readable var _n_name
: AModuleName
392 abstract class AImport super Prod end
395 readable var _n_visibility
: AVisibility
396 readable var _n_kwimport
: TKwimport
397 readable var _n_name
: AModuleName
401 readable var _n_visibility
: AVisibility
402 readable var _n_kwimport
: TKwimport
403 readable var _n_kwend
: TKwend
405 abstract class AVisibility super Prod end
406 class APublicVisibility
409 class APrivateVisibility
411 readable var _n_kwprivate
: TKwprivate
413 class AProtectedVisibility
415 readable var _n_kwprotected
: TKwprotected
417 class AIntrudeVisibility
419 readable var _n_kwintrude
: TKwintrude
421 abstract class AClassdef super Prod
422 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
426 readable var _n_doc
: nullable ADoc = null
427 readable var _n_kwredef
: nullable TKwredef = null
428 readable var _n_visibility
: AVisibility
429 readable var _n_classkind
: AClasskind
430 readable var _n_id
: nullable TClassid = null
431 readable var _n_formaldefs
: List[AFormaldef] = new List[AFormaldef]
432 readable var _n_superclasses
: List[ASuperclass] = new List[ASuperclass]
433 readable var _n_kwend
: TKwend
434 redef fun hot_location
do return n_id
.location
442 abstract class AClasskind super Prod end
443 class AConcreteClasskind
445 readable var _n_kwclass
: TKwclass
447 class AAbstractClasskind
449 readable var _n_kwabstract
: TKwabstract
450 readable var _n_kwclass
: TKwclass
452 class AInterfaceClasskind
454 readable var _n_kwinterface
: TKwinterface
458 readable var _n_kwenum
: TKwenum
460 class AExternClasskind
462 readable var _n_kwextern
: TKwextern
466 readable var _n_id
: TClassid
467 readable var _n_type
: nullable AType = null
471 readable var _n_kwspecial
: nullable TKwspecial = null
472 readable var _n_kwsuper
: nullable TKwsuper = null
473 readable var _n_type
: AType
475 abstract class APropdef super Prod
476 readable var _n_doc
: nullable ADoc = null
480 readable var _n_kwredef
: nullable TKwredef = null
481 readable var _n_visibility
: AVisibility
482 readable var _n_kwvar
: TKwvar
483 readable var _n_id
: nullable TAttrid
484 readable var _n_id2
: nullable TId
485 readable var _n_type
: nullable AType = null
486 readable var _n_readable
: nullable AAble = null
487 readable var _n_writable
: nullable AAble = null
488 readable var _n_expr
: nullable AExpr = null
489 redef fun hot_location
491 if n_id
!= null then return n_id
.location
else return n_id2
.location
494 abstract class AMethPropdef
496 readable var _n_kwredef
: nullable TKwredef = null
497 readable var _n_visibility
: nullable AVisibility
498 readable var _n_methid
: nullable AMethid = null
499 readable var _n_signature
: nullable ASignature
500 redef fun hot_location
502 if n_methid
!= null then
503 return n_methid
.location
509 class ADeferredMethPropdef
511 readable var _n_kwmeth
: TKwmeth
513 class AInternMethPropdef
515 readable var _n_kwmeth
: TKwmeth
517 abstract class AExternPropdef
519 readable var _n_extern
: nullable TString = null
520 readable var _n_extern_calls
: nullable AExternCalls = null
522 class AExternMethPropdef
525 readable var _n_kwmeth
: TKwmeth
527 class AConcreteMethPropdef
529 readable var _n_kwmeth
: nullable TKwmeth
530 readable var _n_block
: nullable AExpr = null
532 abstract class AInitPropdef
535 class AConcreteInitPropdef
536 super AConcreteMethPropdef
539 readable var _n_kwinit
: TKwinit
540 redef fun hot_location
do return n_kwinit
.location
542 class AExternInitPropdef
546 readable var _n_kwnew
: TKwnew
548 class AMainMethPropdef
549 super AConcreteMethPropdef
553 readable var _n_kwimport
: TKwimport
554 readable var _n_extern_calls
: List[AExternCall] = new List[AExternCall]
556 abstract class AExternCall
559 abstract class APropExternCall
562 class ALocalPropExternCall
563 special APropExternCall
564 readable var _n_methid
: AMethid
566 class AFullPropExternCall
567 special APropExternCall
568 readable var _n_classid
: TClassid
569 readable var _n_quad
: nullable TQuad = null
570 readable var _n_methid
: AMethid
572 class AInitPropExternCall
573 special APropExternCall
574 readable var _n_classid
: TClassid
576 class ASuperExternCall
578 readable var _n_kwsuper
: TKwsuper
580 abstract class ACastExternCall
583 class ACastAsExternCall
584 special ACastExternCall
585 readable var _n_from_type
: AType
586 readable var _n_kwas
: TKwas
587 readable var _n_to_type
: AType
589 class AAsNullableExternCall
590 special ACastExternCall
591 readable var _n_type
: AType
592 readable var _n_kwas
: TKwas
593 readable var _n_kwnullable
: TKwnullable
595 class AAsNotNullableExternCall
596 special ACastExternCall
597 readable var _n_type
: AType
598 readable var _n_kwas
: TKwas
599 readable var _n_kwnot
: TKwnot
600 readable var _n_kwnullable
: TKwnullable
604 readable var _n_kwredef
: nullable TKwredef = null
605 readable var _n_visibility
: AVisibility
606 readable var _n_kwtype
: TKwtype
607 readable var _n_id
: TClassid
608 readable var _n_type
: AType
610 abstract class AAble super Prod
611 readable var _n_visibility
: nullable AVisibility = null
612 readable var _n_kwredef
: nullable TKwredef = null
616 readable var _n_kwreadable
: TKwreadable
620 readable var _n_kwwritable
: TKwwritable
622 abstract class AMethid super Prod end
625 readable var _n_id
: TId
629 readable var _n_plus
: TPlus
633 readable var _n_minus
: TMinus
637 readable var _n_star
: TStar
641 readable var _n_slash
: TSlash
645 readable var _n_percent
: TPercent
649 readable var _n_eq
: TEq
653 readable var _n_ne
: TNe
657 readable var _n_le
: TLe
661 readable var _n_ge
: TGe
665 readable var _n_lt
: TLt
669 readable var _n_gt
: TGt
673 readable writable var _n_ll
: TLl
677 readable writable var _n_gg
: TGg
681 readable var _n_obra
: TObra
682 readable var _n_cbra
: TCbra
684 class AStarshipMethid
686 readable var _n_starship
: TStarship
690 readable var _n_id
: TId
691 readable var _n_assign
: TAssign
693 class ABraassignMethid
695 readable var _n_obra
: TObra
696 readable var _n_cbra
: TCbra
697 readable var _n_assign
: TAssign
701 readable var _n_opar
: nullable TOpar = null
702 readable var _n_params
: List[AParam] = new List[AParam]
703 readable var _n_cpar
: nullable TCpar = null
704 readable var _n_type
: nullable AType = null
705 readable var _n_closure_decls
: List[AClosureDecl] = new List[AClosureDecl]
709 readable var _n_id
: TId
710 readable var _n_type
: nullable AType = null
711 readable var _n_dotdotdot
: nullable TDotdotdot = null
715 readable var _n_kwbreak
: nullable TKwbreak = null
716 readable var _n_bang
: TBang
717 readable var _n_id
: TId
718 readable var _n_signature
: ASignature
719 readable var _n_expr
: nullable AExpr = null
723 readable var _n_kwnullable
: nullable TKwnullable = null
724 readable var _n_id
: TClassid
725 readable var _n_types
: List[AType] = new List[AType]
729 readable var _n_kwlabel
: TKwlabel
730 readable var _n_id
: TId
732 abstract class AExpr super Prod end
735 readable var _n_expr
: List[AExpr] = new List[AExpr]
736 readable var _n_kwend
: nullable TKwend = null
740 readable var _n_kwvar
: TKwvar
741 readable var _n_id
: TId
742 readable var _n_type
: nullable AType = null
743 readable var _n_assign
: nullable TAssign = null
744 readable var _n_expr
: nullable AExpr = null
748 readable var _n_kwreturn
: nullable TKwreturn = null
749 readable var _n_expr
: nullable AExpr = null
751 abstract class ALabelable
753 readable var _n_label
: nullable ALabel = null
758 readable var _n_kwbreak
: TKwbreak
759 readable var _n_expr
: nullable AExpr = null
763 readable var _n_kwabort
: TKwabort
768 readable var _n_kwcontinue
: nullable TKwcontinue = null
769 readable var _n_expr
: nullable AExpr = null
774 readable var _n_kwdo
: TKwdo
775 readable var _n_block
: nullable AExpr = null
779 readable var _n_kwif
: TKwif
780 readable var _n_expr
: AExpr
781 readable var _n_then
: nullable AExpr = null
782 readable var _n_else
: nullable AExpr = null
786 readable var _n_kwif
: TKwif
787 readable var _n_expr
: AExpr
788 readable var _n_kwthen
: TKwthen
789 readable var _n_then
: AExpr
790 readable var _n_kwelse
: TKwelse
791 readable var _n_else
: AExpr
796 readable var _n_kwwhile
: TKwwhile
797 readable var _n_expr
: AExpr
798 readable var _n_kwdo
: TKwdo
799 readable var _n_block
: nullable AExpr = null
804 readable var _n_kwloop
: TKwloop
805 readable var _n_block
: nullable AExpr = null
810 readable var _n_kwfor
: TKwfor
811 readable var _n_ids
: List[TId] = new List[TId]
812 readable var _n_expr
: AExpr
813 readable var _n_kwdo
: TKwdo
814 readable var _n_block
: nullable AExpr = null
818 readable var _n_kwassert
: TKwassert
819 readable var _n_id
: nullable TId = null
820 readable var _n_expr
: AExpr
821 readable var _n_else
: nullable AExpr = null
823 abstract class AAssignFormExpr
825 readable var _n_assign
: TAssign
826 readable var _n_value
: AExpr
828 abstract class AReassignFormExpr
830 readable var _n_assign_op
: AAssignOp
831 readable var _n_value
: AExpr
835 readable var _n_kwonce
: TKwonce
837 abstract class ASendExpr
839 readable var _n_expr
: AExpr
840 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
842 abstract class ABinopExpr
844 readable var _n_expr2
: AExpr
846 abstract class ABoolExpr
851 readable var _n_expr
: AExpr
852 readable var _n_expr2
: AExpr
856 readable var _n_expr
: AExpr
857 readable var _n_expr2
: AExpr
861 readable var _n_expr
: AExpr
862 readable var _n_expr2
: AExpr
866 readable var _n_kwnot
: TKwnot
867 readable var _n_expr
: AExpr
874 readable var _n_expr
: AExpr
875 readable var _n_expr2
: AExpr
900 readable var _n_expr
: AExpr
901 readable var _n_type
: AType
923 readable var _n_minus
: TMinus
927 readable var _n_kwnew
: TKwnew
928 readable var _n_type
: AType
929 readable var _n_id
: nullable TId = null
930 readable var _n_args
: AExprs
932 abstract class AAttrFormExpr
934 readable var _n_expr
: AExpr
935 readable var _n_id
: TAttrid
940 class AAttrAssignExpr
942 super AAssignFormExpr
944 abstract class ACallFormExpr
946 readable var _n_id
: TId
947 readable var _n_args
: AExprs
949 abstract class ASendReassignFormExpr
951 super AReassignFormExpr
953 class AAttrReassignExpr
956 super AReassignFormExpr
961 class ACallAssignExpr
963 super AAssignFormExpr
965 class ACallReassignExpr
968 super ASendReassignFormExpr
972 readable var _n_qualified
: nullable AQualified = null
973 readable var _n_kwsuper
: TKwsuper
974 readable var _n_args
: AExprs
978 readable var _n_kwinit
: TKwinit
979 readable var _n_args
: AExprs
981 abstract class ABraFormExpr
983 readable var _n_args
: AExprs
990 super AAssignFormExpr
992 abstract class AVarFormExpr
994 readable var _n_id
: TId
996 class ABraReassignExpr
998 super ASendReassignFormExpr
1000 class AClosureCallExpr
1002 readable var _n_id
: TId
1003 readable var _n_args
: AExprs
1004 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
1009 class AVarAssignExpr
1011 super AAssignFormExpr
1013 class AVarReassignExpr
1015 super AReassignFormExpr
1017 abstract class ARangeExpr
1019 readable var _n_expr
: AExpr
1020 readable var _n_expr2
: AExpr
1024 readable var _n_obra
: TObra
1025 readable var _n_cbra
: TCbra
1029 readable var _n_obra
: TObra
1030 readable var _n_cbra
: TObra
1034 readable var _n_exprs
: AExprs
1038 readable var _n_kwself
: nullable TKwself
1040 class AImplicitSelfExpr
1045 readable var _n_kwtrue
: TKwtrue
1049 readable var _n_kwfalse
: TKwfalse
1053 readable var _n_kwnull
: TKwnull
1057 readable var _n_number
: TNumber
1061 readable var _n_float
: TFloat
1065 readable var _n_char
: TChar
1067 abstract class AStringFormExpr
1071 super AStringFormExpr
1072 readable var _n_string
: TString
1074 class AStartStringExpr
1075 super AStringFormExpr
1076 readable var _n_string
: TStartString
1078 class AMidStringExpr
1079 super AStringFormExpr
1080 readable var _n_string
: TMidString
1082 class AEndStringExpr
1083 super AStringFormExpr
1084 readable var _n_string
: TEndString
1086 class ASuperstringExpr
1088 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1092 readable var _n_opar
: TOpar
1093 readable var _n_cpar
: TCpar
1095 abstract class AProxyExpr
1097 readable var _n_expr
: AExpr
1101 readable var _n_expr
: AExpr
1102 readable var _n_kwas
: TKwas
1103 readable var _n_opar
: TOpar
1104 readable var _n_type
: AType
1105 readable var _n_cpar
: TCpar
1107 class AAsNotnullExpr
1109 readable var _n_expr
: AExpr
1110 readable var _n_kwas
: TKwas
1111 readable var _n_opar
: TOpar
1112 readable var _n_kwnot
: TKwnot
1113 readable var _n_kwnull
: TKwnull
1114 readable var _n_cpar
: TCpar
1116 class AIssetAttrExpr
1118 readable var _n_kwisset
: TKwisset
1120 abstract class AExprs
1122 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1129 readable var _n_opar
: TOpar
1130 readable var _n_cpar
: TCpar
1134 readable var _n_obra
: TObra
1135 readable var _n_cbra
: TCbra
1137 abstract class AAssignOp super Prod end
1140 readable var _n_pluseq
: TPluseq
1142 class AMinusAssignOp
1144 readable var _n_minuseq
: TMinuseq
1148 readable var _n_bang
: TBang
1149 readable var _n_id
: AClosureId
1150 readable var _n_ids
: List[TId] = new List[TId]
1151 readable var _n_kwdo
: nullable TKwdo = null
1152 readable var _n_expr
: nullable AExpr = null
1153 redef fun hot_location
do return n_id
.location
1155 abstract class AClosureId
1158 class ASimpleClosureId
1160 readable var _n_id
: TId
1162 class ABreakClosureId
1164 readable var _n_kwbreak
: TKwbreak
1168 readable var _n_quad
: nullable TQuad = null
1169 readable var _n_path
: List[TId] = new List[TId]
1170 readable var _n_id
: TId
1174 readable var _n_quad
: nullable TQuad = null
1175 readable var _n_id
: List[TId] = new List[TId]
1176 readable var _n_classid
: nullable TClassid = null
1180 readable var _n_comment
: List[TComment] = new List[TComment]
1185 readable var _n_base
: nullable AModule
1186 readable var _n_eof
: EOF