6a3582d6535ed5f50ce3e93a14765b57e2820a7e
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
63 return "keyword '{text}'"
241 return "operator '{text}'"
308 do return "type identifier '{text}'"
315 do return "identifier '{text}'"
322 do return "attribute '{text}'"
329 do return "literal value '{text}'"
355 private init noinit
do end
363 private init noinit
do end
368 readable var _n_moduledecl
: nullable AModuledecl = null
369 readable var _n_imports
: List[AImport] = new List[AImport]
370 readable var _n_classdefs
: List[AClassdef] = new List[AClassdef]
374 readable var _n_doc
: nullable ADoc = null
375 readable var _n_kwmodule
: TKwmodule
376 readable var _n_name
: AModuleName
378 class AImport super Prod end
381 readable var _n_visibility
: AVisibility
382 readable var _n_kwimport
: TKwimport
383 readable var _n_name
: AModuleName
387 readable var _n_visibility
: AVisibility
388 readable var _n_kwimport
: TKwimport
389 readable var _n_kwend
: TKwend
391 class AVisibility super Prod end
392 class APublicVisibility
395 class APrivateVisibility
397 readable var _n_kwprivate
: TKwprivate
399 class AProtectedVisibility
401 readable var _n_kwprotected
: TKwprotected
403 class AIntrudeVisibility
405 readable var _n_kwintrude
: TKwintrude
407 class AClassdef super Prod end
410 readable var _n_doc
: nullable ADoc = null
411 readable var _n_kwredef
: nullable TKwredef = null
412 readable var _n_visibility
: AVisibility
413 readable var _n_classkind
: AClasskind
414 readable var _n_id
: nullable TClassid = null
415 readable var _n_formaldefs
: List[AFormaldef] = new List[AFormaldef]
416 readable var _n_superclasses
: List[ASuperclass] = new List[ASuperclass]
417 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
418 readable var _n_kwend
: TKwend
419 redef fun hot_location
do return n_id
.location
423 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
427 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
429 class AClasskind super Prod end
430 class AConcreteClasskind
432 readable var _n_kwclass
: TKwclass
434 class AAbstractClasskind
436 readable var _n_kwabstract
: TKwabstract
437 readable var _n_kwclass
: TKwclass
439 class AInterfaceClasskind
441 readable var _n_kwinterface
: TKwinterface
445 readable var _n_kwenum
: TKwenum
447 class AExternClasskind
449 readable var _n_kwextern
: TKwextern
453 readable var _n_id
: TClassid
454 readable var _n_type
: nullable AType = null
458 readable var _n_kwspecial
: nullable TKwspecial = null
459 readable var _n_kwsuper
: nullable TKwsuper = null
460 readable var _n_type
: AType
462 class APropdef super Prod
463 readable var _n_doc
: nullable ADoc = null
467 readable var _n_kwredef
: nullable TKwredef = null
468 readable var _n_visibility
: AVisibility
469 readable var _n_kwvar
: TKwvar
470 readable var _n_id
: nullable TAttrid
471 readable var _n_id2
: nullable TId
472 readable var _n_type
: nullable AType = null
473 readable var _n_readable
: nullable AAble = null
474 readable var _n_writable
: nullable AAble = null
475 readable var _n_expr
: nullable AExpr = null
476 redef fun hot_location
478 if n_id
!= null then return n_id
.location
else return n_id2
.location
483 readable var _n_kwredef
: nullable TKwredef = null
484 readable var _n_visibility
: nullable AVisibility
485 readable var _n_methid
: nullable AMethid = null
486 readable var _n_signature
: nullable ASignature
487 redef fun hot_location
489 if n_methid
!= null then
490 return n_methid
.location
496 class ADeferredMethPropdef
498 readable var _n_kwmeth
: TKwmeth
500 class AInternMethPropdef
502 readable var _n_kwmeth
: TKwmeth
506 readable var _n_extern
: nullable TString = null
507 readable var _n_extern_calls
: nullable AExternCalls = null
509 class AExternMethPropdef
512 readable var _n_kwmeth
: TKwmeth
514 class AConcreteMethPropdef
516 readable var _n_kwmeth
: nullable TKwmeth
517 readable var _n_block
: nullable AExpr = null
521 class AConcreteInitPropdef
522 super AConcreteMethPropdef
525 readable var _n_kwinit
: TKwinit
526 redef fun hot_location
do return n_kwinit
.location
528 class AExternInitPropdef
532 readable var _n_kwnew
: TKwnew
534 class AMainMethPropdef
535 super AConcreteMethPropdef
539 readable var _n_kwimport
: TKwimport
540 readable var _n_extern_calls
: List[AExternCall] = new List[AExternCall]
545 class APropExternCall
548 class ALocalPropExternCall
549 special APropExternCall
550 readable var _n_methid
: AMethid
552 class AFullPropExternCall
553 special APropExternCall
554 readable var _n_classid
: TClassid
555 readable var _n_quad
: nullable TQuad = null
556 readable var _n_methid
: AMethid
558 class AInitPropExternCall
559 special APropExternCall
560 readable var _n_classid
: TClassid
562 class ASuperExternCall
564 readable var _n_kwsuper
: TKwsuper
566 class ACastExternCall
569 class ACastAsExternCall
570 special ACastExternCall
571 readable var _n_from_type
: AType
572 readable var _n_kwas
: TKwas
573 readable var _n_to_type
: AType
575 class AAsNullableExternCall
576 special ACastExternCall
577 readable var _n_type
: AType
578 readable var _n_kwas
: TKwas
579 readable var _n_kwnullable
: TKwnullable
581 class AAsNotNullableExternCall
582 special ACastExternCall
583 readable var _n_type
: AType
584 readable var _n_kwas
: TKwas
585 readable var _n_kwnot
: TKwnot
586 readable var _n_kwnullable
: TKwnullable
590 readable var _n_kwredef
: nullable TKwredef = null
591 readable var _n_visibility
: AVisibility
592 readable var _n_kwtype
: TKwtype
593 readable var _n_id
: TClassid
594 readable var _n_type
: AType
596 class AAble super Prod
597 readable var _n_visibility
: nullable AVisibility = null
598 readable var _n_kwredef
: nullable TKwredef = null
602 readable var _n_kwreadable
: TKwreadable
606 readable var _n_kwwritable
: TKwwritable
608 class AMethid super Prod end
611 readable var _n_id
: TId
615 readable var _n_plus
: TPlus
619 readable var _n_minus
: TMinus
623 readable var _n_star
: TStar
627 readable var _n_slash
: TSlash
631 readable var _n_percent
: TPercent
635 readable var _n_eq
: TEq
639 readable var _n_ne
: TNe
643 readable var _n_le
: TLe
647 readable var _n_ge
: TGe
651 readable var _n_lt
: TLt
655 readable var _n_gt
: TGt
659 readable writable var _n_ll
: TLl
663 readable writable var _n_gg
: TGg
667 readable var _n_obra
: TObra
668 readable var _n_cbra
: TCbra
670 class AStarshipMethid
672 readable var _n_starship
: TStarship
676 readable var _n_id
: TId
677 readable var _n_assign
: TAssign
679 class ABraassignMethid
681 readable var _n_obra
: TObra
682 readable var _n_cbra
: TCbra
683 readable var _n_assign
: TAssign
687 readable var _n_params
: List[AParam] = new List[AParam]
688 readable var _n_type
: nullable AType = null
689 readable var _n_closure_decls
: List[AClosureDecl] = new List[AClosureDecl]
693 readable var _n_id
: TId
694 readable var _n_type
: nullable AType = null
695 readable var _n_dotdotdot
: nullable TDotdotdot = null
699 readable var _n_kwbreak
: nullable TKwbreak = null
700 readable var _n_bang
: TBang
701 readable var _n_id
: TId
702 readable var _n_signature
: ASignature
703 readable var _n_expr
: nullable AExpr = null
707 readable var _n_kwnullable
: nullable TKwnullable = null
708 readable var _n_id
: TClassid
709 readable var _n_types
: List[AType] = new List[AType]
713 readable var _n_kwlabel
: TKwlabel
714 readable var _n_id
: TId
716 class AExpr super Prod end
719 readable var _n_expr
: List[AExpr] = new List[AExpr]
720 readable var _n_kwend
: nullable TKwend = null
724 readable var _n_kwvar
: TKwvar
725 readable var _n_id
: TId
726 readable var _n_type
: nullable AType = null
727 readable var _n_assign
: nullable TAssign = null
728 readable var _n_expr
: nullable AExpr = null
732 readable var _n_kwreturn
: nullable TKwreturn = null
733 readable var _n_expr
: nullable AExpr = null
737 readable var _n_label
: nullable ALabel = null
742 readable var _n_kwbreak
: TKwbreak
743 readable var _n_expr
: nullable AExpr = null
747 readable var _n_kwabort
: TKwabort
752 readable var _n_kwcontinue
: nullable TKwcontinue = null
753 readable var _n_expr
: nullable AExpr = null
758 readable var _n_kwdo
: TKwdo
759 readable var _n_block
: nullable AExpr = null
763 readable var _n_kwif
: TKwif
764 readable var _n_expr
: AExpr
765 readable var _n_then
: nullable AExpr = null
766 readable var _n_else
: nullable AExpr = null
770 readable var _n_kwif
: TKwif
771 readable var _n_expr
: AExpr
772 readable var _n_kwthen
: TKwthen
773 readable var _n_then
: AExpr
774 readable var _n_kwelse
: TKwelse
775 readable var _n_else
: AExpr
780 readable var _n_kwwhile
: TKwwhile
781 readable var _n_expr
: AExpr
782 readable var _n_kwdo
: TKwdo
783 readable var _n_block
: nullable AExpr = null
788 readable var _n_kwloop
: TKwloop
789 readable var _n_block
: nullable AExpr = null
794 readable var _n_kwfor
: TKwfor
795 readable var _n_ids
: List[TId] = new List[TId]
796 readable var _n_expr
: AExpr
797 readable var _n_kwdo
: TKwdo
798 readable var _n_block
: nullable AExpr = null
802 readable var _n_kwassert
: TKwassert
803 readable var _n_id
: nullable TId = null
804 readable var _n_expr
: AExpr
805 readable var _n_else
: nullable AExpr = null
807 class AAssignFormExpr
809 readable var _n_assign
: TAssign
810 readable var _n_value
: AExpr
812 class AReassignFormExpr
814 readable var _n_assign_op
: AAssignOp
815 readable var _n_value
: AExpr
819 readable var _n_kwonce
: TKwonce
823 readable var _n_expr
: AExpr
824 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
828 readable var _n_expr2
: AExpr
835 readable var _n_expr
: AExpr
836 readable var _n_expr2
: AExpr
840 readable var _n_expr
: AExpr
841 readable var _n_expr2
: AExpr
845 readable var _n_expr
: AExpr
846 readable var _n_expr2
: AExpr
850 readable var _n_kwnot
: TKwnot
851 readable var _n_expr
: AExpr
858 readable var _n_expr
: AExpr
859 readable var _n_expr2
: AExpr
884 readable var _n_expr
: AExpr
885 readable var _n_type
: AType
907 readable var _n_minus
: TMinus
911 readable var _n_kwnew
: TKwnew
912 readable var _n_type
: AType
913 readable var _n_id
: nullable TId = null
914 readable var _n_args
: List[AExpr] = new List[AExpr]
918 readable var _n_expr
: AExpr
919 readable var _n_id
: TAttrid
924 class AAttrAssignExpr
926 super AAssignFormExpr
930 readable var _n_id
: TId
931 readable var _n_args
: List[AExpr] = new List[AExpr]
933 class AAttrReassignExpr
936 super AReassignFormExpr
941 class ACallAssignExpr
943 super AAssignFormExpr
945 class ACallReassignExpr
948 super AReassignFormExpr
952 readable var _n_qualified
: nullable AQualified = null
953 readable var _n_kwsuper
: TKwsuper
954 readable var _n_args
: List[AExpr] = new List[AExpr]
958 readable var _n_kwinit
: TKwinit
959 readable var _n_args
: List[AExpr] = new List[AExpr]
963 readable var _n_args
: List[AExpr] = new List[AExpr]
970 super AAssignFormExpr
974 readable var _n_id
: TId
976 class ABraReassignExpr
978 super AReassignFormExpr
980 class AClosureCallExpr
982 readable var _n_id
: TId
983 readable var _n_args
: List[AExpr] = new List[AExpr]
984 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
991 super AAssignFormExpr
993 class AVarReassignExpr
995 super AReassignFormExpr
999 readable var _n_expr
: AExpr
1000 readable var _n_expr2
: AExpr
1010 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1014 readable var _n_kwself
: nullable TKwself
1016 class AImplicitSelfExpr
1021 readable var _n_kwtrue
: TKwtrue
1025 readable var _n_kwfalse
: TKwfalse
1029 readable var _n_kwnull
: TKwnull
1033 readable var _n_number
: TNumber
1037 readable var _n_float
: TFloat
1041 readable var _n_char
: TChar
1043 class AStringFormExpr
1047 super AStringFormExpr
1048 readable var _n_string
: TString
1050 class AStartStringExpr
1051 super AStringFormExpr
1052 readable var _n_string
: TStartString
1054 class AMidStringExpr
1055 super AStringFormExpr
1056 readable var _n_string
: TMidString
1058 class AEndStringExpr
1059 super AStringFormExpr
1060 readable var _n_string
: TEndString
1062 class ASuperstringExpr
1064 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1071 readable var _n_expr
: AExpr
1075 readable var _n_expr
: AExpr
1076 readable var _n_kwas
: TKwas
1077 readable var _n_type
: AType
1079 class AAsNotnullExpr
1081 readable var _n_expr
: AExpr
1082 readable var _n_kwas
: TKwas
1083 readable var _n_kwnot
: TKwnot
1084 readable var _n_kwnull
: TKwnull
1086 class AIssetAttrExpr
1088 readable var _n_kwisset
: TKwisset
1090 class AAssignOp super Prod end
1093 readable var _n_pluseq
: TPluseq
1095 class AMinusAssignOp
1097 readable var _n_minuseq
: TMinuseq
1101 readable var _n_bang
: TBang
1102 readable var _n_id
: AClosureId
1103 readable var _n_ids
: List[TId] = new List[TId]
1104 readable var _n_kwdo
: nullable TKwdo = null
1105 readable var _n_expr
: nullable AExpr = null
1106 redef fun hot_location
do return n_id
.location
1111 class ASimpleClosureId
1113 readable var _n_id
: TId
1115 class ABreakClosureId
1117 readable var _n_kwbreak
: TKwbreak
1121 readable var _n_quad
: nullable TQuad = null
1122 readable var _n_path
: List[TId] = new List[TId]
1123 readable var _n_id
: TId
1127 readable var _n_quad
: nullable TQuad = null
1128 readable var _n_id
: List[TId] = new List[TId]
1129 readable var _n_classid
: nullable TClassid = null
1133 readable var _n_comment
: List[TComment] = new List[TComment]
1138 readable var _n_base
: nullable AModule
1139 readable var _n_eof
: EOF