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
39 # Ancestor of all productions
42 fun location
=(l
: Location) do _location
= l
313 private init noinit
do end
317 private init noinit
do end
322 readable var _n_moduledecl
: nullable AModuledecl = null
323 readable var _n_imports
: List[AImport] = new List[AImport]
324 readable var _n_classdefs
: List[AClassdef] = new List[AClassdef]
328 readable var _n_doc
: nullable ADoc = null
329 readable var _n_kwmodule
: TKwmodule
330 readable var _n_name
: AModuleName
332 class AImport super Prod end
335 readable var _n_visibility
: AVisibility
336 readable var _n_kwimport
: TKwimport
337 readable var _n_name
: AModuleName
341 readable var _n_visibility
: AVisibility
342 readable var _n_kwimport
: TKwimport
343 readable var _n_kwend
: TKwend
345 class AVisibility super Prod end
346 class APublicVisibility
349 class APrivateVisibility
351 readable var _n_kwprivate
: TKwprivate
353 class AProtectedVisibility
355 readable var _n_kwprotected
: TKwprotected
357 class AIntrudeVisibility
359 readable var _n_kwintrude
: TKwintrude
361 class AClassdef super Prod end
364 readable var _n_doc
: nullable ADoc = null
365 readable var _n_kwredef
: nullable TKwredef = null
366 readable var _n_visibility
: AVisibility
367 readable var _n_classkind
: AClasskind
368 readable var _n_id
: nullable TClassid = null
369 readable var _n_formaldefs
: List[AFormaldef] = new List[AFormaldef]
370 readable var _n_superclasses
: List[ASuperclass] = new List[ASuperclass]
371 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
372 readable var _n_kwend
: TKwend
373 redef fun hot_location
do return n_id
.location
377 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
381 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
383 class AClasskind super Prod end
384 class AConcreteClasskind
386 readable var _n_kwclass
: TKwclass
388 class AAbstractClasskind
390 readable var _n_kwabstract
: TKwabstract
391 readable var _n_kwclass
: TKwclass
393 class AInterfaceClasskind
395 readable var _n_kwinterface
: TKwinterface
399 readable var _n_kwenum
: TKwenum
401 class AExternClasskind
403 readable var _n_kwextern
: TKwextern
407 readable var _n_id
: TClassid
408 readable var _n_type
: nullable AType = null
412 readable var _n_kwspecial
: nullable TKwspecial = null
413 readable var _n_kwsuper
: nullable TKwsuper = null
414 readable var _n_type
: AType
416 class APropdef super Prod
417 readable var _n_doc
: nullable ADoc = null
421 readable var _n_kwredef
: nullable TKwredef = null
422 readable var _n_visibility
: AVisibility
423 readable var _n_kwvar
: TKwvar
424 readable var _n_id
: nullable TAttrid
425 readable var _n_id2
: nullable TId
426 readable var _n_type
: nullable AType = null
427 readable var _n_readable
: nullable AAble = null
428 readable var _n_writable
: nullable AAble = null
429 readable var _n_expr
: nullable AExpr = null
430 redef fun hot_location
432 if n_id
!= null then return n_id
.location
else return n_id2
.location
437 readable var _n_kwredef
: nullable TKwredef = null
438 readable var _n_visibility
: nullable AVisibility
439 readable var _n_methid
: nullable AMethid = null
440 readable var _n_signature
: nullable ASignature
441 redef fun hot_location
443 if n_methid
!= null then
444 return n_methid
.location
450 class ADeferredMethPropdef
452 readable var _n_kwmeth
: TKwmeth
454 class AInternMethPropdef
456 readable var _n_kwmeth
: TKwmeth
460 readable var _n_extern
: nullable TString = null
461 readable var _n_extern_calls
: nullable AExternCalls = null
463 class AExternMethPropdef
466 readable var _n_kwmeth
: TKwmeth
468 class AConcreteMethPropdef
470 readable var _n_kwmeth
: nullable TKwmeth
471 readable var _n_block
: nullable AExpr = null
475 class AConcreteInitPropdef
476 super AConcreteMethPropdef
479 readable var _n_kwinit
: TKwinit
480 redef fun hot_location
do return n_kwinit
.location
482 class AExternInitPropdef
486 readable var _n_kwnew
: TKwnew
488 class AMainMethPropdef
489 super AConcreteMethPropdef
493 readable var _n_kwimport
: TKwimport
494 readable var _n_extern_calls
: List[AExternCall] = new List[AExternCall]
499 class APropExternCall
502 class ALocalPropExternCall
503 special APropExternCall
504 readable var _n_methid
: AMethid
506 class AFullPropExternCall
507 special APropExternCall
508 readable var _n_classid
: TClassid
509 readable var _n_quad
: nullable TQuad = null
510 readable var _n_methid
: AMethid
512 class AInitPropExternCall
513 special APropExternCall
514 readable var _n_classid
: TClassid
516 class ASuperExternCall
518 readable var _n_kwsuper
: TKwsuper
520 class ACastExternCall
523 class ACastAsExternCall
524 special ACastExternCall
525 readable var _n_from_type
: AType
526 readable var _n_kwas
: TKwas
527 readable var _n_to_type
: AType
529 class AAsNullableExternCall
530 special ACastExternCall
531 readable var _n_type
: AType
532 readable var _n_kwas
: TKwas
533 readable var _n_kwnullable
: TKwnullable
535 class AAsNotNullableExternCall
536 special ACastExternCall
537 readable var _n_type
: AType
538 readable var _n_kwas
: TKwas
539 readable var _n_kwnot
: TKwnot
540 readable var _n_kwnullable
: TKwnullable
544 readable var _n_kwredef
: nullable TKwredef = null
545 readable var _n_visibility
: AVisibility
546 readable var _n_kwtype
: TKwtype
547 readable var _n_id
: TClassid
548 readable var _n_type
: AType
550 class AAble super Prod
551 readable var _n_visibility
: nullable AVisibility = null
552 readable var _n_kwredef
: nullable TKwredef = null
556 readable var _n_kwreadable
: TKwreadable
560 readable var _n_kwwritable
: TKwwritable
562 class AMethid super Prod end
565 readable var _n_id
: TId
569 readable var _n_plus
: TPlus
573 readable var _n_minus
: TMinus
577 readable var _n_star
: TStar
581 readable var _n_slash
: TSlash
585 readable var _n_percent
: TPercent
589 readable var _n_eq
: TEq
593 readable var _n_ne
: TNe
597 readable var _n_le
: TLe
601 readable var _n_ge
: TGe
605 readable var _n_lt
: TLt
609 readable var _n_gt
: TGt
613 readable writable var _n_ll
: TLl
617 readable writable var _n_gg
: TGg
621 readable var _n_obra
: TObra
622 readable var _n_cbra
: TCbra
624 class AStarshipMethid
626 readable var _n_starship
: TStarship
630 readable var _n_id
: TId
631 readable var _n_assign
: TAssign
633 class ABraassignMethid
635 readable var _n_obra
: TObra
636 readable var _n_cbra
: TCbra
637 readable var _n_assign
: TAssign
641 readable var _n_params
: List[AParam] = new List[AParam]
642 readable var _n_type
: nullable AType = null
643 readable var _n_closure_decls
: List[AClosureDecl] = new List[AClosureDecl]
647 readable var _n_id
: TId
648 readable var _n_type
: nullable AType = null
649 readable var _n_dotdotdot
: nullable TDotdotdot = null
653 readable var _n_kwbreak
: nullable TKwbreak = null
654 readable var _n_bang
: TBang
655 readable var _n_id
: TId
656 readable var _n_signature
: ASignature
657 readable var _n_expr
: nullable AExpr = null
661 readable var _n_kwnullable
: nullable TKwnullable = null
662 readable var _n_id
: TClassid
663 readable var _n_types
: List[AType] = new List[AType]
667 readable var _n_kwlabel
: TKwlabel
668 readable var _n_id
: TId
670 class AExpr super Prod end
673 readable var _n_expr
: List[AExpr] = new List[AExpr]
674 readable var _n_kwend
: nullable TKwend = null
678 readable var _n_kwvar
: TKwvar
679 readable var _n_id
: TId
680 readable var _n_type
: nullable AType = null
681 readable var _n_assign
: nullable TAssign = null
682 readable var _n_expr
: nullable AExpr = null
686 readable var _n_kwreturn
: nullable TKwreturn = null
687 readable var _n_expr
: nullable AExpr = null
691 readable var _n_label
: nullable ALabel = null
696 readable var _n_kwbreak
: TKwbreak
697 readable var _n_expr
: nullable AExpr = null
701 readable var _n_kwabort
: TKwabort
706 readable var _n_kwcontinue
: nullable TKwcontinue = null
707 readable var _n_expr
: nullable AExpr = null
712 readable var _n_kwdo
: TKwdo
713 readable var _n_block
: nullable AExpr = null
717 readable var _n_kwif
: TKwif
718 readable var _n_expr
: AExpr
719 readable var _n_then
: nullable AExpr = null
720 readable var _n_else
: nullable AExpr = null
724 readable var _n_kwif
: TKwif
725 readable var _n_expr
: AExpr
726 readable var _n_kwthen
: TKwthen
727 readable var _n_then
: AExpr
728 readable var _n_kwelse
: TKwelse
729 readable var _n_else
: AExpr
734 readable var _n_kwwhile
: TKwwhile
735 readable var _n_expr
: AExpr
736 readable var _n_kwdo
: TKwdo
737 readable var _n_block
: nullable AExpr = null
742 readable var _n_kwloop
: TKwloop
743 readable var _n_block
: nullable AExpr = null
748 readable var _n_kwfor
: TKwfor
749 readable var _n_ids
: List[TId] = new List[TId]
750 readable var _n_expr
: AExpr
751 readable var _n_kwdo
: TKwdo
752 readable var _n_block
: nullable AExpr = null
756 readable var _n_kwassert
: TKwassert
757 readable var _n_id
: nullable TId = null
758 readable var _n_expr
: AExpr
759 readable var _n_else
: nullable AExpr = null
761 class AAssignFormExpr
763 readable var _n_assign
: TAssign
764 readable var _n_value
: AExpr
766 class AReassignFormExpr
768 readable var _n_assign_op
: AAssignOp
769 readable var _n_value
: AExpr
773 readable var _n_kwonce
: TKwonce
777 readable var _n_expr
: AExpr
778 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
782 readable var _n_expr2
: AExpr
789 readable var _n_expr
: AExpr
790 readable var _n_expr2
: AExpr
794 readable var _n_expr
: AExpr
795 readable var _n_expr2
: AExpr
799 readable var _n_expr
: AExpr
800 readable var _n_expr2
: AExpr
804 readable var _n_kwnot
: TKwnot
805 readable var _n_expr
: AExpr
812 readable var _n_expr
: AExpr
813 readable var _n_expr2
: AExpr
838 readable var _n_expr
: AExpr
839 readable var _n_type
: AType
861 readable var _n_minus
: TMinus
865 readable var _n_kwnew
: TKwnew
866 readable var _n_type
: AType
867 readable var _n_id
: nullable TId = null
868 readable var _n_args
: List[AExpr] = new List[AExpr]
872 readable var _n_expr
: AExpr
873 readable var _n_id
: TAttrid
878 class AAttrAssignExpr
880 super AAssignFormExpr
884 readable var _n_id
: TId
885 readable var _n_args
: List[AExpr] = new List[AExpr]
887 class AAttrReassignExpr
890 super AReassignFormExpr
895 class ACallAssignExpr
897 super AAssignFormExpr
899 class ACallReassignExpr
902 super AReassignFormExpr
906 readable var _n_qualified
: nullable AQualified = null
907 readable var _n_kwsuper
: TKwsuper
908 readable var _n_args
: List[AExpr] = new List[AExpr]
912 readable var _n_kwinit
: TKwinit
913 readable var _n_args
: List[AExpr] = new List[AExpr]
917 readable var _n_args
: List[AExpr] = new List[AExpr]
924 super AAssignFormExpr
928 readable var _n_id
: TId
930 class ABraReassignExpr
932 super AReassignFormExpr
934 class AClosureCallExpr
936 readable var _n_id
: TId
937 readable var _n_args
: List[AExpr] = new List[AExpr]
938 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
945 super AAssignFormExpr
947 class AVarReassignExpr
949 super AReassignFormExpr
953 readable var _n_expr
: AExpr
954 readable var _n_expr2
: AExpr
964 readable var _n_exprs
: List[AExpr] = new List[AExpr]
968 readable var _n_kwself
: nullable TKwself
970 class AImplicitSelfExpr
975 readable var _n_kwtrue
: TKwtrue
979 readable var _n_kwfalse
: TKwfalse
983 readable var _n_kwnull
: TKwnull
987 readable var _n_number
: TNumber
991 readable var _n_float
: TFloat
995 readable var _n_char
: TChar
997 class AStringFormExpr
1001 super AStringFormExpr
1002 readable var _n_string
: TString
1004 class AStartStringExpr
1005 super AStringFormExpr
1006 readable var _n_string
: TStartString
1008 class AMidStringExpr
1009 super AStringFormExpr
1010 readable var _n_string
: TMidString
1012 class AEndStringExpr
1013 super AStringFormExpr
1014 readable var _n_string
: TEndString
1016 class ASuperstringExpr
1018 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1025 readable var _n_expr
: AExpr
1029 readable var _n_expr
: AExpr
1030 readable var _n_kwas
: TKwas
1031 readable var _n_type
: AType
1033 class AAsNotnullExpr
1035 readable var _n_expr
: AExpr
1036 readable var _n_kwas
: TKwas
1037 readable var _n_kwnot
: TKwnot
1038 readable var _n_kwnull
: TKwnull
1040 class AIssetAttrExpr
1042 readable var _n_kwisset
: TKwisset
1044 class AAssignOp super Prod end
1047 readable var _n_pluseq
: TPluseq
1049 class AMinusAssignOp
1051 readable var _n_minuseq
: TMinuseq
1055 readable var _n_bang
: TBang
1056 readable var _n_id
: AClosureId
1057 readable var _n_ids
: List[TId] = new List[TId]
1058 readable var _n_kwdo
: nullable TKwdo = null
1059 readable var _n_expr
: nullable AExpr = null
1060 redef fun hot_location
do return n_id
.location
1065 class ASimpleClosureId
1067 readable var _n_id
: TId
1069 class ABreakClosureId
1071 readable var _n_kwbreak
: TKwbreak
1075 readable var _n_quad
: nullable TQuad = null
1076 readable var _n_path
: List[TId] = new List[TId]
1077 readable var _n_id
: TId
1081 readable var _n_quad
: nullable TQuad = null
1082 readable var _n_id
: List[TId] = new List[TId]
1083 readable var _n_classid
: nullable TClassid = null
1087 readable var _n_comment
: List[TComment] = new List[TComment]
1092 readable var _n_base
: nullable AModule
1093 readable var _n_eof
: EOF