547fb82a7a2a3283e5ca2d3b1d28609ffdcfc359
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}'"
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 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 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 class AClassdef super Prod end
424 readable var _n_doc
: nullable ADoc = null
425 readable var _n_kwredef
: nullable TKwredef = null
426 readable var _n_visibility
: AVisibility
427 readable var _n_classkind
: AClasskind
428 readable var _n_id
: nullable TClassid = null
429 readable var _n_formaldefs
: List[AFormaldef] = new List[AFormaldef]
430 readable var _n_superclasses
: List[ASuperclass] = new List[ASuperclass]
431 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
432 readable var _n_kwend
: TKwend
433 redef fun hot_location
do return n_id
.location
437 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
441 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
443 class AClasskind super Prod end
444 class AConcreteClasskind
446 readable var _n_kwclass
: TKwclass
448 class AAbstractClasskind
450 readable var _n_kwabstract
: TKwabstract
451 readable var _n_kwclass
: TKwclass
453 class AInterfaceClasskind
455 readable var _n_kwinterface
: TKwinterface
459 readable var _n_kwenum
: TKwenum
461 class AExternClasskind
463 readable var _n_kwextern
: TKwextern
467 readable var _n_id
: TClassid
468 readable var _n_type
: nullable AType = null
472 readable var _n_kwspecial
: nullable TKwspecial = null
473 readable var _n_kwsuper
: nullable TKwsuper = null
474 readable var _n_type
: AType
476 class APropdef super Prod
477 readable var _n_doc
: nullable ADoc = null
481 readable var _n_kwredef
: nullable TKwredef = null
482 readable var _n_visibility
: AVisibility
483 readable var _n_kwvar
: TKwvar
484 readable var _n_id
: nullable TAttrid
485 readable var _n_id2
: nullable TId
486 readable var _n_type
: nullable AType = null
487 readable var _n_readable
: nullable AAble = null
488 readable var _n_writable
: nullable AAble = null
489 readable var _n_expr
: nullable AExpr = null
490 redef fun hot_location
492 if n_id
!= null then return n_id
.location
else return n_id2
.location
497 readable var _n_kwredef
: nullable TKwredef = null
498 readable var _n_visibility
: nullable AVisibility
499 readable var _n_methid
: nullable AMethid = null
500 readable var _n_signature
: nullable ASignature
501 redef fun hot_location
503 if n_methid
!= null then
504 return n_methid
.location
510 class ADeferredMethPropdef
512 readable var _n_kwmeth
: TKwmeth
514 class AInternMethPropdef
516 readable var _n_kwmeth
: TKwmeth
520 readable var _n_extern
: nullable TString = null
521 readable var _n_extern_calls
: nullable AExternCalls = null
523 class AExternMethPropdef
526 readable var _n_kwmeth
: TKwmeth
528 class AConcreteMethPropdef
530 readable var _n_kwmeth
: nullable TKwmeth
531 readable var _n_block
: nullable AExpr = null
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]
559 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 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 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 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_params
: List[AParam] = new List[AParam]
702 readable var _n_type
: nullable AType = null
703 readable var _n_closure_decls
: List[AClosureDecl] = new List[AClosureDecl]
707 readable var _n_id
: TId
708 readable var _n_type
: nullable AType = null
709 readable var _n_dotdotdot
: nullable TDotdotdot = null
713 readable var _n_kwbreak
: nullable TKwbreak = null
714 readable var _n_bang
: TBang
715 readable var _n_id
: TId
716 readable var _n_signature
: ASignature
717 readable var _n_expr
: nullable AExpr = null
721 readable var _n_kwnullable
: nullable TKwnullable = null
722 readable var _n_id
: TClassid
723 readable var _n_types
: List[AType] = new List[AType]
727 readable var _n_kwlabel
: TKwlabel
728 readable var _n_id
: TId
730 class AExpr super Prod end
733 readable var _n_expr
: List[AExpr] = new List[AExpr]
734 readable var _n_kwend
: nullable TKwend = null
738 readable var _n_kwvar
: TKwvar
739 readable var _n_id
: TId
740 readable var _n_type
: nullable AType = null
741 readable var _n_assign
: nullable TAssign = null
742 readable var _n_expr
: nullable AExpr = null
746 readable var _n_kwreturn
: nullable TKwreturn = null
747 readable var _n_expr
: nullable AExpr = null
751 readable var _n_label
: nullable ALabel = null
756 readable var _n_kwbreak
: TKwbreak
757 readable var _n_expr
: nullable AExpr = null
761 readable var _n_kwabort
: TKwabort
766 readable var _n_kwcontinue
: nullable TKwcontinue = null
767 readable var _n_expr
: nullable AExpr = null
772 readable var _n_kwdo
: TKwdo
773 readable var _n_block
: nullable AExpr = null
777 readable var _n_kwif
: TKwif
778 readable var _n_expr
: AExpr
779 readable var _n_then
: nullable AExpr = null
780 readable var _n_else
: nullable AExpr = null
784 readable var _n_kwif
: TKwif
785 readable var _n_expr
: AExpr
786 readable var _n_kwthen
: TKwthen
787 readable var _n_then
: AExpr
788 readable var _n_kwelse
: TKwelse
789 readable var _n_else
: AExpr
794 readable var _n_kwwhile
: TKwwhile
795 readable var _n_expr
: AExpr
796 readable var _n_kwdo
: TKwdo
797 readable var _n_block
: nullable AExpr = null
802 readable var _n_kwloop
: TKwloop
803 readable var _n_block
: nullable AExpr = null
808 readable var _n_kwfor
: TKwfor
809 readable var _n_ids
: List[TId] = new List[TId]
810 readable var _n_expr
: AExpr
811 readable var _n_kwdo
: TKwdo
812 readable var _n_block
: nullable AExpr = null
816 readable var _n_kwassert
: TKwassert
817 readable var _n_id
: nullable TId = null
818 readable var _n_expr
: AExpr
819 readable var _n_else
: nullable AExpr = null
821 class AAssignFormExpr
823 readable var _n_assign
: TAssign
824 readable var _n_value
: AExpr
826 class AReassignFormExpr
828 readable var _n_assign_op
: AAssignOp
829 readable var _n_value
: AExpr
833 readable var _n_kwonce
: TKwonce
837 readable var _n_expr
: AExpr
838 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
842 readable var _n_expr2
: AExpr
849 readable var _n_expr
: AExpr
850 readable var _n_expr2
: AExpr
854 readable var _n_expr
: AExpr
855 readable var _n_expr2
: AExpr
859 readable var _n_expr
: AExpr
860 readable var _n_expr2
: AExpr
864 readable var _n_kwnot
: TKwnot
865 readable var _n_expr
: AExpr
872 readable var _n_expr
: AExpr
873 readable var _n_expr2
: AExpr
898 readable var _n_expr
: AExpr
899 readable var _n_type
: AType
921 readable var _n_minus
: TMinus
925 readable var _n_kwnew
: TKwnew
926 readable var _n_type
: AType
927 readable var _n_id
: nullable TId = null
928 readable var _n_args
: List[AExpr] = new List[AExpr]
932 readable var _n_expr
: AExpr
933 readable var _n_id
: TAttrid
938 class AAttrAssignExpr
940 super AAssignFormExpr
944 readable var _n_id
: TId
945 readable var _n_args
: List[AExpr] = new List[AExpr]
947 class AAttrReassignExpr
950 super AReassignFormExpr
955 class ACallAssignExpr
957 super AAssignFormExpr
959 class ACallReassignExpr
962 super AReassignFormExpr
966 readable var _n_qualified
: nullable AQualified = null
967 readable var _n_kwsuper
: TKwsuper
968 readable var _n_args
: List[AExpr] = new List[AExpr]
972 readable var _n_kwinit
: TKwinit
973 readable var _n_args
: List[AExpr] = new List[AExpr]
977 readable var _n_args
: List[AExpr] = new List[AExpr]
984 super AAssignFormExpr
988 readable var _n_id
: TId
990 class ABraReassignExpr
992 super AReassignFormExpr
994 class AClosureCallExpr
996 readable var _n_id
: TId
997 readable var _n_args
: List[AExpr] = new List[AExpr]
998 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
1003 class AVarAssignExpr
1005 super AAssignFormExpr
1007 class AVarReassignExpr
1009 super AReassignFormExpr
1013 readable var _n_expr
: AExpr
1014 readable var _n_expr2
: AExpr
1024 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1028 readable var _n_kwself
: nullable TKwself
1030 class AImplicitSelfExpr
1035 readable var _n_kwtrue
: TKwtrue
1039 readable var _n_kwfalse
: TKwfalse
1043 readable var _n_kwnull
: TKwnull
1047 readable var _n_number
: TNumber
1051 readable var _n_float
: TFloat
1055 readable var _n_char
: TChar
1057 class AStringFormExpr
1061 super AStringFormExpr
1062 readable var _n_string
: TString
1064 class AStartStringExpr
1065 super AStringFormExpr
1066 readable var _n_string
: TStartString
1068 class AMidStringExpr
1069 super AStringFormExpr
1070 readable var _n_string
: TMidString
1072 class AEndStringExpr
1073 super AStringFormExpr
1074 readable var _n_string
: TEndString
1076 class ASuperstringExpr
1078 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1085 readable var _n_expr
: AExpr
1089 readable var _n_expr
: AExpr
1090 readable var _n_kwas
: TKwas
1091 readable var _n_type
: AType
1093 class AAsNotnullExpr
1095 readable var _n_expr
: AExpr
1096 readable var _n_kwas
: TKwas
1097 readable var _n_kwnot
: TKwnot
1098 readable var _n_kwnull
: TKwnull
1100 class AIssetAttrExpr
1102 readable var _n_kwisset
: TKwisset
1104 class AAssignOp super Prod end
1107 readable var _n_pluseq
: TPluseq
1109 class AMinusAssignOp
1111 readable var _n_minuseq
: TMinuseq
1115 readable var _n_bang
: TBang
1116 readable var _n_id
: AClosureId
1117 readable var _n_ids
: List[TId] = new List[TId]
1118 readable var _n_kwdo
: nullable TKwdo = null
1119 readable var _n_expr
: nullable AExpr = null
1120 redef fun hot_location
do return n_id
.location
1125 class ASimpleClosureId
1127 readable var _n_id
: TId
1129 class ABreakClosureId
1131 readable var _n_kwbreak
: TKwbreak
1135 readable var _n_quad
: nullable TQuad = null
1136 readable var _n_path
: List[TId] = new List[TId]
1137 readable var _n_id
: TId
1141 readable var _n_quad
: nullable TQuad = null
1142 readable var _n_id
: List[TId] = new List[TId]
1143 readable var _n_classid
: nullable TClassid = null
1147 readable var _n_comment
: List[TComment] = new List[TComment]
1152 readable var _n_base
: nullable AModule
1153 readable var _n_eof
: EOF