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_id
: TId
331 redef fun hot_location
do return n_id
.location
333 class AImport super Prod end
336 readable var _n_visibility
: AVisibility
337 readable var _n_kwimport
: TKwimport
338 readable var _n_id
: TId
342 readable var _n_visibility
: AVisibility
343 readable var _n_kwimport
: TKwimport
344 readable var _n_kwend
: TKwend
346 class AVisibility super Prod end
347 class APublicVisibility
350 class APrivateVisibility
352 readable var _n_kwprivate
: TKwprivate
354 class AProtectedVisibility
356 readable var _n_kwprotected
: TKwprotected
358 class AIntrudeVisibility
360 readable var _n_kwintrude
: TKwintrude
362 class AClassdef super Prod end
365 readable var _n_doc
: nullable ADoc = null
366 readable var _n_kwredef
: nullable TKwredef = null
367 readable var _n_visibility
: AVisibility
368 readable var _n_classkind
: AClasskind
369 readable var _n_id
: nullable TClassid = null
370 readable var _n_formaldefs
: List[AFormaldef] = new List[AFormaldef]
371 readable var _n_superclasses
: List[ASuperclass] = new List[ASuperclass]
372 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
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
403 readable var _n_id
: TClassid
404 readable var _n_type
: nullable AType = null
408 readable var _n_kwspecial
: nullable TKwspecial = null
409 readable var _n_kwsuper
: nullable TKwsuper = null
410 readable var _n_type
: AType
412 class APropdef super Prod
413 readable var _n_doc
: nullable ADoc = null
417 readable var _n_kwredef
: nullable TKwredef = null
418 readable var _n_visibility
: AVisibility
419 readable var _n_kwvar
: TKwvar
420 readable var _n_id
: nullable TAttrid
421 readable var _n_id2
: nullable TId
422 readable var _n_type
: nullable AType = null
423 readable var _n_readable
: nullable AAble = null
424 readable var _n_writable
: nullable AAble = null
425 readable var _n_expr
: nullable AExpr = null
426 redef fun hot_location
428 if n_id
!= null then return n_id
.location
else return n_id2
.location
433 readable var _n_kwredef
: nullable TKwredef = null
434 readable var _n_visibility
: nullable AVisibility
435 readable var _n_methid
: nullable AMethid = null
436 readable var _n_signature
: nullable ASignature
437 redef fun hot_location
439 if n_methid
!= null then
440 return n_methid
.location
446 class ADeferredMethPropdef
448 readable var _n_kwmeth
: TKwmeth
450 class AInternMethPropdef
452 readable var _n_kwmeth
: TKwmeth
454 class AExternMethPropdef
456 readable var _n_kwmeth
: TKwmeth
457 readable var _n_extern
: nullable TString = null
459 class AConcreteMethPropdef
461 readable var _n_kwmeth
: nullable TKwmeth
462 readable var _n_block
: nullable AExpr = null
464 class AConcreteInitPropdef
465 super AConcreteMethPropdef
466 readable var _n_kwinit
: TKwinit
467 redef fun hot_location
do return n_kwinit
.location
469 class AMainMethPropdef
470 super AConcreteMethPropdef
474 readable var _n_kwredef
: nullable TKwredef = null
475 readable var _n_visibility
: AVisibility
476 readable var _n_kwtype
: TKwtype
477 readable var _n_id
: TClassid
478 readable var _n_type
: AType
480 class AAble super Prod
481 readable var _n_visibility
: nullable AVisibility = null
482 readable var _n_kwredef
: nullable TKwredef = null
486 readable var _n_kwreadable
: TKwreadable
490 readable var _n_kwwritable
: TKwwritable
492 class AMethid super Prod end
495 readable var _n_id
: TId
499 readable var _n_plus
: TPlus
503 readable var _n_minus
: TMinus
507 readable var _n_star
: TStar
511 readable var _n_slash
: TSlash
515 readable var _n_percent
: TPercent
519 readable var _n_eq
: TEq
523 readable var _n_ne
: TNe
527 readable var _n_le
: TLe
531 readable var _n_ge
: TGe
535 readable var _n_lt
: TLt
539 readable var _n_gt
: TGt
543 readable writable var _n_ll
: TLl
547 readable writable var _n_gg
: TGg
551 readable var _n_obra
: TObra
552 readable var _n_cbra
: TCbra
554 class AStarshipMethid
556 readable var _n_starship
: TStarship
560 readable var _n_id
: TId
561 readable var _n_assign
: TAssign
563 class ABraassignMethid
565 readable var _n_obra
: TObra
566 readable var _n_cbra
: TCbra
567 readable var _n_assign
: TAssign
571 readable var _n_params
: List[AParam] = new List[AParam]
572 readable var _n_type
: nullable AType = null
573 readable var _n_closure_decls
: List[AClosureDecl] = new List[AClosureDecl]
577 readable var _n_id
: TId
578 readable var _n_type
: nullable AType = null
579 readable var _n_dotdotdot
: nullable TDotdotdot = null
583 readable var _n_kwbreak
: nullable TKwbreak = null
584 readable var _n_bang
: TBang
585 readable var _n_id
: TId
586 readable var _n_signature
: ASignature
587 readable var _n_expr
: nullable AExpr = null
591 readable var _n_kwnullable
: nullable TKwnullable = null
592 readable var _n_id
: TClassid
593 readable var _n_types
: List[AType] = new List[AType]
597 readable var _n_kwlabel
: TKwlabel
598 readable var _n_id
: TId
600 class AExpr super Prod end
603 readable var _n_expr
: List[AExpr] = new List[AExpr]
607 readable var _n_kwvar
: TKwvar
608 readable var _n_id
: TId
609 readable var _n_type
: nullable AType = null
610 readable var _n_assign
: nullable TAssign = null
611 readable var _n_expr
: nullable AExpr = null
615 readable var _n_kwreturn
: nullable TKwreturn = null
616 readable var _n_expr
: nullable AExpr = null
620 readable var _n_label
: nullable ALabel = null
625 readable var _n_kwbreak
: TKwbreak
626 readable var _n_expr
: nullable AExpr = null
630 readable var _n_kwabort
: TKwabort
635 readable var _n_kwcontinue
: nullable TKwcontinue = null
636 readable var _n_expr
: nullable AExpr = null
641 readable var _n_kwdo
: TKwdo
642 readable var _n_block
: nullable AExpr = null
646 readable var _n_kwif
: TKwif
647 readable var _n_expr
: AExpr
648 readable var _n_then
: nullable AExpr = null
649 readable var _n_else
: nullable AExpr = null
653 readable var _n_kwif
: TKwif
654 readable var _n_expr
: AExpr
655 readable var _n_kwthen
: TKwthen
656 readable var _n_then
: AExpr
657 readable var _n_kwelse
: TKwelse
658 readable var _n_else
: AExpr
663 readable var _n_kwwhile
: TKwwhile
664 readable var _n_expr
: AExpr
665 readable var _n_kwdo
: TKwdo
666 readable var _n_block
: nullable AExpr = null
671 readable var _n_kwloop
: TKwloop
672 readable var _n_block
: nullable AExpr = null
677 readable var _n_kwfor
: TKwfor
678 readable var _n_ids
: List[TId] = new List[TId]
679 readable var _n_expr
: AExpr
680 readable var _n_kwdo
: TKwdo
681 readable var _n_block
: nullable AExpr = null
685 readable var _n_kwassert
: TKwassert
686 readable var _n_id
: nullable TId = null
687 readable var _n_expr
: AExpr
688 readable var _n_else
: nullable AExpr = null
690 class AAssignFormExpr
692 readable var _n_assign
: TAssign
693 readable var _n_value
: AExpr
695 class AReassignFormExpr
697 readable var _n_assign_op
: AAssignOp
698 readable var _n_value
: AExpr
702 readable var _n_kwonce
: TKwonce
706 readable var _n_expr
: AExpr
707 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
711 readable var _n_expr2
: AExpr
718 readable var _n_expr
: AExpr
719 readable var _n_expr2
: AExpr
723 readable var _n_expr
: AExpr
724 readable var _n_expr2
: AExpr
728 readable var _n_expr
: AExpr
729 readable var _n_expr2
: AExpr
733 readable var _n_kwnot
: TKwnot
734 readable var _n_expr
: AExpr
741 readable var _n_expr
: AExpr
742 readable var _n_expr2
: AExpr
767 readable var _n_expr
: AExpr
768 readable var _n_type
: AType
790 readable var _n_minus
: TMinus
794 readable var _n_kwnew
: TKwnew
795 readable var _n_type
: AType
796 readable var _n_id
: nullable TId = null
797 readable var _n_args
: List[AExpr] = new List[AExpr]
801 readable var _n_expr
: AExpr
802 readable var _n_id
: TAttrid
807 class AAttrAssignExpr
809 super AAssignFormExpr
813 readable var _n_id
: TId
814 readable var _n_args
: List[AExpr] = new List[AExpr]
816 class AAttrReassignExpr
819 super AReassignFormExpr
824 class ACallAssignExpr
826 super AAssignFormExpr
828 class ACallReassignExpr
831 super AReassignFormExpr
835 readable var _n_qualified
: nullable AQualified = null
836 readable var _n_kwsuper
: TKwsuper
837 readable var _n_args
: List[AExpr] = new List[AExpr]
841 readable var _n_kwinit
: TKwinit
842 readable var _n_args
: List[AExpr] = new List[AExpr]
846 readable var _n_args
: List[AExpr] = new List[AExpr]
853 super AAssignFormExpr
857 readable var _n_id
: TId
859 class ABraReassignExpr
861 super AReassignFormExpr
863 class AClosureCallExpr
865 readable var _n_id
: TId
866 readable var _n_args
: List[AExpr] = new List[AExpr]
867 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
874 super AAssignFormExpr
876 class AVarReassignExpr
878 super AReassignFormExpr
882 readable var _n_expr
: AExpr
883 readable var _n_expr2
: AExpr
893 readable var _n_exprs
: List[AExpr] = new List[AExpr]
897 readable var _n_kwself
: nullable TKwself
899 class AImplicitSelfExpr
904 readable var _n_kwtrue
: TKwtrue
908 readable var _n_kwfalse
: TKwfalse
912 readable var _n_kwnull
: TKwnull
916 readable var _n_number
: TNumber
920 readable var _n_float
: TFloat
924 readable var _n_char
: TChar
926 class AStringFormExpr
930 super AStringFormExpr
931 readable var _n_string
: TString
933 class AStartStringExpr
934 super AStringFormExpr
935 readable var _n_string
: TStartString
938 super AStringFormExpr
939 readable var _n_string
: TMidString
942 super AStringFormExpr
943 readable var _n_string
: TEndString
945 class ASuperstringExpr
947 readable var _n_exprs
: List[AExpr] = new List[AExpr]
954 readable var _n_expr
: AExpr
958 readable var _n_expr
: AExpr
959 readable var _n_kwas
: TKwas
960 readable var _n_type
: AType
964 readable var _n_expr
: AExpr
965 readable var _n_kwas
: TKwas
966 readable var _n_kwnot
: TKwnot
967 readable var _n_kwnull
: TKwnull
971 readable var _n_kwisset
: TKwisset
973 class AAssignOp super Prod end
976 readable var _n_pluseq
: TPluseq
980 readable var _n_minuseq
: TMinuseq
984 readable var _n_bang
: TBang
985 readable var _n_id
: AClosureId
986 readable var _n_ids
: List[TId] = new List[TId]
987 readable var _n_kwdo
: nullable TKwdo = null
988 readable var _n_expr
: nullable AExpr = null
993 class ASimpleClosureId
995 readable var _n_id
: TId
997 class ABreakClosureId
999 readable var _n_kwbreak
: TKwbreak
1003 readable var _n_id
: List[TId] = new List[TId]
1004 readable var _n_classid
: nullable TClassid = null
1008 readable var _n_comment
: List[TComment] = new List[TComment]
1013 readable var _n_base
: nullable AModule
1014 readable var _n_eof
: EOF