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 redef fun hot_location
do return n_id
.location
376 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
380 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
382 class AClasskind super Prod end
383 class AConcreteClasskind
385 readable var _n_kwclass
: TKwclass
387 class AAbstractClasskind
389 readable var _n_kwabstract
: TKwabstract
390 readable var _n_kwclass
: TKwclass
392 class AInterfaceClasskind
394 readable var _n_kwinterface
: TKwinterface
398 readable var _n_kwenum
: TKwenum
400 class AExternClasskind
402 readable var _n_kwextern
: TKwextern
406 readable var _n_id
: TClassid
407 readable var _n_type
: nullable AType = null
411 readable var _n_kwspecial
: nullable TKwspecial = null
412 readable var _n_kwsuper
: nullable TKwsuper = null
413 readable var _n_type
: AType
415 class APropdef super Prod
416 readable var _n_doc
: nullable ADoc = null
420 readable var _n_kwredef
: nullable TKwredef = null
421 readable var _n_visibility
: AVisibility
422 readable var _n_kwvar
: TKwvar
423 readable var _n_id
: nullable TAttrid
424 readable var _n_id2
: nullable TId
425 readable var _n_type
: nullable AType = null
426 readable var _n_readable
: nullable AAble = null
427 readable var _n_writable
: nullable AAble = null
428 readable var _n_expr
: nullable AExpr = null
429 redef fun hot_location
431 if n_id
!= null then return n_id
.location
else return n_id2
.location
436 readable var _n_kwredef
: nullable TKwredef = null
437 readable var _n_visibility
: nullable AVisibility
438 readable var _n_methid
: nullable AMethid = null
439 readable var _n_signature
: nullable ASignature
440 redef fun hot_location
442 if n_methid
!= null then
443 return n_methid
.location
449 class ADeferredMethPropdef
451 readable var _n_kwmeth
: TKwmeth
453 class AInternMethPropdef
455 readable var _n_kwmeth
: TKwmeth
459 readable var _n_extern
: nullable TString = null
460 readable var _n_extern_calls
: nullable AExternCalls = null
462 class AExternMethPropdef
465 readable var _n_kwmeth
: TKwmeth
467 class AConcreteMethPropdef
469 readable var _n_kwmeth
: nullable TKwmeth
470 readable var _n_block
: nullable AExpr = null
474 class AConcreteInitPropdef
475 super AConcreteMethPropdef
478 readable var _n_kwinit
: TKwinit
479 redef fun hot_location
do return n_kwinit
.location
481 class AExternInitPropdef
485 readable var _n_kwnew
: TKwnew
487 class AMainMethPropdef
488 super AConcreteMethPropdef
492 readable var _n_kwimport
: TKwimport
493 readable var _n_extern_calls
: List[AExternCall] = new List[AExternCall]
498 class APropExternCall
501 class ALocalPropExternCall
502 special APropExternCall
503 readable var _n_methid
: AMethid
505 class AFullPropExternCall
506 special APropExternCall
507 readable var _n_classid
: TClassid
508 readable var _n_quad
: nullable TQuad = null
509 readable var _n_methid
: AMethid
511 class AInitPropExternCall
512 special APropExternCall
513 readable var _n_classid
: TClassid
515 class ASuperExternCall
517 readable var _n_kwsuper
: TKwsuper
519 class ACastExternCall
522 class ACastAsExternCall
523 special ACastExternCall
524 readable var _n_from_type
: AType
525 readable var _n_kwas
: TKwas
526 readable var _n_to_type
: AType
528 class AAsNullableExternCall
529 special ACastExternCall
530 readable var _n_type
: AType
531 readable var _n_kwas
: TKwas
532 readable var _n_kwnullable
: TKwnullable
534 class AAsNotNullableExternCall
535 special ACastExternCall
536 readable var _n_type
: AType
537 readable var _n_kwas
: TKwas
538 readable var _n_kwnot
: TKwnot
539 readable var _n_kwnullable
: TKwnullable
543 readable var _n_kwredef
: nullable TKwredef = null
544 readable var _n_visibility
: AVisibility
545 readable var _n_kwtype
: TKwtype
546 readable var _n_id
: TClassid
547 readable var _n_type
: AType
549 class AAble super Prod
550 readable var _n_visibility
: nullable AVisibility = null
551 readable var _n_kwredef
: nullable TKwredef = null
555 readable var _n_kwreadable
: TKwreadable
559 readable var _n_kwwritable
: TKwwritable
561 class AMethid super Prod end
564 readable var _n_id
: TId
568 readable var _n_plus
: TPlus
572 readable var _n_minus
: TMinus
576 readable var _n_star
: TStar
580 readable var _n_slash
: TSlash
584 readable var _n_percent
: TPercent
588 readable var _n_eq
: TEq
592 readable var _n_ne
: TNe
596 readable var _n_le
: TLe
600 readable var _n_ge
: TGe
604 readable var _n_lt
: TLt
608 readable var _n_gt
: TGt
612 readable writable var _n_ll
: TLl
616 readable writable var _n_gg
: TGg
620 readable var _n_obra
: TObra
621 readable var _n_cbra
: TCbra
623 class AStarshipMethid
625 readable var _n_starship
: TStarship
629 readable var _n_id
: TId
630 readable var _n_assign
: TAssign
632 class ABraassignMethid
634 readable var _n_obra
: TObra
635 readable var _n_cbra
: TCbra
636 readable var _n_assign
: TAssign
640 readable var _n_params
: List[AParam] = new List[AParam]
641 readable var _n_type
: nullable AType = null
642 readable var _n_closure_decls
: List[AClosureDecl] = new List[AClosureDecl]
646 readable var _n_id
: TId
647 readable var _n_type
: nullable AType = null
648 readable var _n_dotdotdot
: nullable TDotdotdot = null
652 readable var _n_kwbreak
: nullable TKwbreak = null
653 readable var _n_bang
: TBang
654 readable var _n_id
: TId
655 readable var _n_signature
: ASignature
656 readable var _n_expr
: nullable AExpr = null
660 readable var _n_kwnullable
: nullable TKwnullable = null
661 readable var _n_id
: TClassid
662 readable var _n_types
: List[AType] = new List[AType]
666 readable var _n_kwlabel
: TKwlabel
667 readable var _n_id
: TId
669 class AExpr super Prod end
672 readable var _n_expr
: List[AExpr] = new List[AExpr]
676 readable var _n_kwvar
: TKwvar
677 readable var _n_id
: TId
678 readable var _n_type
: nullable AType = null
679 readable var _n_assign
: nullable TAssign = null
680 readable var _n_expr
: nullable AExpr = null
684 readable var _n_kwreturn
: nullable TKwreturn = null
685 readable var _n_expr
: nullable AExpr = null
689 readable var _n_label
: nullable ALabel = null
694 readable var _n_kwbreak
: TKwbreak
695 readable var _n_expr
: nullable AExpr = null
699 readable var _n_kwabort
: TKwabort
704 readable var _n_kwcontinue
: nullable TKwcontinue = null
705 readable var _n_expr
: nullable AExpr = null
710 readable var _n_kwdo
: TKwdo
711 readable var _n_block
: nullable AExpr = null
715 readable var _n_kwif
: TKwif
716 readable var _n_expr
: AExpr
717 readable var _n_then
: nullable AExpr = null
718 readable var _n_else
: nullable AExpr = null
722 readable var _n_kwif
: TKwif
723 readable var _n_expr
: AExpr
724 readable var _n_kwthen
: TKwthen
725 readable var _n_then
: AExpr
726 readable var _n_kwelse
: TKwelse
727 readable var _n_else
: AExpr
732 readable var _n_kwwhile
: TKwwhile
733 readable var _n_expr
: AExpr
734 readable var _n_kwdo
: TKwdo
735 readable var _n_block
: nullable AExpr = null
740 readable var _n_kwloop
: TKwloop
741 readable var _n_block
: nullable AExpr = null
746 readable var _n_kwfor
: TKwfor
747 readable var _n_ids
: List[TId] = new List[TId]
748 readable var _n_expr
: AExpr
749 readable var _n_kwdo
: TKwdo
750 readable var _n_block
: nullable AExpr = null
754 readable var _n_kwassert
: TKwassert
755 readable var _n_id
: nullable TId = null
756 readable var _n_expr
: AExpr
757 readable var _n_else
: nullable AExpr = null
759 class AAssignFormExpr
761 readable var _n_assign
: TAssign
762 readable var _n_value
: AExpr
764 class AReassignFormExpr
766 readable var _n_assign_op
: AAssignOp
767 readable var _n_value
: AExpr
771 readable var _n_kwonce
: TKwonce
775 readable var _n_expr
: AExpr
776 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
780 readable var _n_expr2
: AExpr
787 readable var _n_expr
: AExpr
788 readable var _n_expr2
: AExpr
792 readable var _n_expr
: AExpr
793 readable var _n_expr2
: AExpr
797 readable var _n_expr
: AExpr
798 readable var _n_expr2
: AExpr
802 readable var _n_kwnot
: TKwnot
803 readable var _n_expr
: AExpr
810 readable var _n_expr
: AExpr
811 readable var _n_expr2
: AExpr
836 readable var _n_expr
: AExpr
837 readable var _n_type
: AType
859 readable var _n_minus
: TMinus
863 readable var _n_kwnew
: TKwnew
864 readable var _n_type
: AType
865 readable var _n_id
: nullable TId = null
866 readable var _n_args
: List[AExpr] = new List[AExpr]
870 readable var _n_expr
: AExpr
871 readable var _n_id
: TAttrid
876 class AAttrAssignExpr
878 super AAssignFormExpr
882 readable var _n_id
: TId
883 readable var _n_args
: List[AExpr] = new List[AExpr]
885 class AAttrReassignExpr
888 super AReassignFormExpr
893 class ACallAssignExpr
895 super AAssignFormExpr
897 class ACallReassignExpr
900 super AReassignFormExpr
904 readable var _n_qualified
: nullable AQualified = null
905 readable var _n_kwsuper
: TKwsuper
906 readable var _n_args
: List[AExpr] = new List[AExpr]
910 readable var _n_kwinit
: TKwinit
911 readable var _n_args
: List[AExpr] = new List[AExpr]
915 readable var _n_args
: List[AExpr] = new List[AExpr]
922 super AAssignFormExpr
926 readable var _n_id
: TId
928 class ABraReassignExpr
930 super AReassignFormExpr
932 class AClosureCallExpr
934 readable var _n_id
: TId
935 readable var _n_args
: List[AExpr] = new List[AExpr]
936 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
943 super AAssignFormExpr
945 class AVarReassignExpr
947 super AReassignFormExpr
951 readable var _n_expr
: AExpr
952 readable var _n_expr2
: AExpr
962 readable var _n_exprs
: List[AExpr] = new List[AExpr]
966 readable var _n_kwself
: nullable TKwself
968 class AImplicitSelfExpr
973 readable var _n_kwtrue
: TKwtrue
977 readable var _n_kwfalse
: TKwfalse
981 readable var _n_kwnull
: TKwnull
985 readable var _n_number
: TNumber
989 readable var _n_float
: TFloat
993 readable var _n_char
: TChar
995 class AStringFormExpr
999 super AStringFormExpr
1000 readable var _n_string
: TString
1002 class AStartStringExpr
1003 super AStringFormExpr
1004 readable var _n_string
: TStartString
1006 class AMidStringExpr
1007 super AStringFormExpr
1008 readable var _n_string
: TMidString
1010 class AEndStringExpr
1011 super AStringFormExpr
1012 readable var _n_string
: TEndString
1014 class ASuperstringExpr
1016 readable var _n_exprs
: List[AExpr] = new List[AExpr]
1023 readable var _n_expr
: AExpr
1027 readable var _n_expr
: AExpr
1028 readable var _n_kwas
: TKwas
1029 readable var _n_type
: AType
1031 class AAsNotnullExpr
1033 readable var _n_expr
: AExpr
1034 readable var _n_kwas
: TKwas
1035 readable var _n_kwnot
: TKwnot
1036 readable var _n_kwnull
: TKwnull
1038 class AIssetAttrExpr
1040 readable var _n_kwisset
: TKwisset
1042 class AAssignOp super Prod end
1045 readable var _n_pluseq
: TPluseq
1047 class AMinusAssignOp
1049 readable var _n_minuseq
: TMinuseq
1053 readable var _n_bang
: TBang
1054 readable var _n_id
: AClosureId
1055 readable var _n_ids
: List[TId] = new List[TId]
1056 readable var _n_kwdo
: nullable TKwdo = null
1057 readable var _n_expr
: nullable AExpr = null
1062 class ASimpleClosureId
1064 readable var _n_id
: TId
1066 class ABreakClosureId
1068 readable var _n_kwbreak
: TKwbreak
1072 readable var _n_quad
: nullable TQuad = null
1073 readable var _n_path
: List[TId] = new List[TId]
1074 readable var _n_id
: TId
1078 readable var _n_quad
: nullable TQuad = null
1079 readable var _n_id
: List[TId] = new List[TId]
1080 readable var _n_classid
: nullable TClassid = null
1084 readable var _n_comment
: List[TComment] = new List[TComment]
1089 readable var _n_base
: nullable AModule
1090 readable var _n_eof
: EOF