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
402 readable var _n_id
: TClassid
403 readable var _n_type
: nullable AType = null
407 readable var _n_kwspecial
: nullable TKwspecial = null
408 readable var _n_kwsuper
: nullable TKwsuper = null
409 readable var _n_type
: AType
411 class APropdef super Prod
412 readable var _n_doc
: nullable ADoc = null
416 readable var _n_kwredef
: nullable TKwredef = null
417 readable var _n_visibility
: AVisibility
418 readable var _n_kwvar
: TKwvar
419 readable var _n_id
: nullable TAttrid
420 readable var _n_id2
: nullable TId
421 readable var _n_type
: nullable AType = null
422 readable var _n_readable
: nullable AAble = null
423 readable var _n_writable
: nullable AAble = null
424 readable var _n_expr
: nullable AExpr = null
425 redef fun hot_location
427 if n_id
!= null then return n_id
.location
else return n_id2
.location
432 readable var _n_kwredef
: nullable TKwredef = null
433 readable var _n_visibility
: nullable AVisibility
434 readable var _n_methid
: nullable AMethid = null
435 readable var _n_signature
: nullable ASignature
436 redef fun hot_location
438 if n_methid
!= null then
439 return n_methid
.location
445 class ADeferredMethPropdef
447 readable var _n_kwmeth
: TKwmeth
449 class AInternMethPropdef
451 readable var _n_kwmeth
: TKwmeth
453 class AExternMethPropdef
455 readable var _n_kwmeth
: TKwmeth
456 readable var _n_extern
: nullable TString = null
458 class AConcreteMethPropdef
460 readable var _n_kwmeth
: nullable TKwmeth
461 readable var _n_block
: nullable AExpr = null
463 class AConcreteInitPropdef
464 super AConcreteMethPropdef
465 readable var _n_kwinit
: TKwinit
466 redef fun hot_location
do return n_kwinit
.location
468 class AMainMethPropdef
469 super AConcreteMethPropdef
473 readable var _n_kwredef
: nullable TKwredef = null
474 readable var _n_visibility
: AVisibility
475 readable var _n_kwtype
: TKwtype
476 readable var _n_id
: TClassid
477 readable var _n_type
: AType
479 class AAble super Prod
480 readable var _n_visibility
: nullable AVisibility = null
481 readable var _n_kwredef
: nullable TKwredef = null
485 readable var _n_kwreadable
: TKwreadable
489 readable var _n_kwwritable
: TKwwritable
491 class AMethid super Prod end
494 readable var _n_id
: TId
498 readable var _n_plus
: TPlus
502 readable var _n_minus
: TMinus
506 readable var _n_star
: TStar
510 readable var _n_slash
: TSlash
514 readable var _n_percent
: TPercent
518 readable var _n_eq
: TEq
522 readable var _n_ne
: TNe
526 readable var _n_le
: TLe
530 readable var _n_ge
: TGe
534 readable var _n_lt
: TLt
538 readable var _n_gt
: TGt
542 readable writable var _n_ll
: TLl
546 readable writable var _n_gg
: TGg
550 readable var _n_obra
: TObra
551 readable var _n_cbra
: TCbra
553 class AStarshipMethid
555 readable var _n_starship
: TStarship
559 readable var _n_id
: TId
560 readable var _n_assign
: TAssign
562 class ABraassignMethid
564 readable var _n_obra
: TObra
565 readable var _n_cbra
: TCbra
566 readable var _n_assign
: TAssign
570 readable var _n_params
: List[AParam] = new List[AParam]
571 readable var _n_type
: nullable AType = null
572 readable var _n_closure_decls
: List[AClosureDecl] = new List[AClosureDecl]
576 readable var _n_id
: TId
577 readable var _n_type
: nullable AType = null
578 readable var _n_dotdotdot
: nullable TDotdotdot = null
582 readable var _n_kwbreak
: nullable TKwbreak = null
583 readable var _n_bang
: TBang
584 readable var _n_id
: TId
585 readable var _n_signature
: ASignature
586 readable var _n_expr
: nullable AExpr = null
590 readable var _n_kwnullable
: nullable TKwnullable = null
591 readable var _n_id
: TClassid
592 readable var _n_types
: List[AType] = new List[AType]
596 readable var _n_kwlabel
: TKwlabel
597 readable var _n_id
: TId
599 class AExpr super Prod end
602 readable var _n_expr
: List[AExpr] = new List[AExpr]
606 readable var _n_kwvar
: TKwvar
607 readable var _n_id
: TId
608 readable var _n_type
: nullable AType = null
609 readable var _n_assign
: nullable TAssign = null
610 readable var _n_expr
: nullable AExpr = null
614 readable var _n_kwreturn
: nullable TKwreturn = null
615 readable var _n_expr
: nullable AExpr = null
619 readable var _n_label
: nullable ALabel = null
624 readable var _n_kwbreak
: TKwbreak
625 readable var _n_expr
: nullable AExpr = null
629 readable var _n_kwabort
: TKwabort
634 readable var _n_kwcontinue
: nullable TKwcontinue = null
635 readable var _n_expr
: nullable AExpr = null
640 readable var _n_kwdo
: TKwdo
641 readable var _n_block
: nullable AExpr = null
645 readable var _n_kwif
: TKwif
646 readable var _n_expr
: AExpr
647 readable var _n_then
: nullable AExpr = null
648 readable var _n_else
: nullable AExpr = null
652 readable var _n_kwif
: TKwif
653 readable var _n_expr
: AExpr
654 readable var _n_kwthen
: TKwthen
655 readable var _n_then
: AExpr
656 readable var _n_kwelse
: TKwelse
657 readable var _n_else
: AExpr
662 readable var _n_kwwhile
: TKwwhile
663 readable var _n_expr
: AExpr
664 readable var _n_kwdo
: TKwdo
665 readable var _n_block
: nullable AExpr = null
670 readable var _n_kwloop
: TKwloop
671 readable var _n_block
: nullable AExpr = null
676 readable var _n_kwfor
: TKwfor
677 readable var _n_ids
: List[TId] = new List[TId]
678 readable var _n_expr
: AExpr
679 readable var _n_kwdo
: TKwdo
680 readable var _n_block
: nullable AExpr = null
684 readable var _n_kwassert
: TKwassert
685 readable var _n_id
: nullable TId = null
686 readable var _n_expr
: AExpr
687 readable var _n_else
: nullable AExpr = null
689 class AAssignFormExpr
691 readable var _n_assign
: TAssign
692 readable var _n_value
: AExpr
694 class AReassignFormExpr
696 readable var _n_assign_op
: AAssignOp
697 readable var _n_value
: AExpr
701 readable var _n_kwonce
: TKwonce
705 readable var _n_expr
: AExpr
706 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
710 readable var _n_expr2
: AExpr
717 readable var _n_expr
: AExpr
718 readable var _n_expr2
: AExpr
722 readable var _n_expr
: AExpr
723 readable var _n_expr2
: AExpr
727 readable var _n_expr
: AExpr
728 readable var _n_expr2
: AExpr
732 readable var _n_kwnot
: TKwnot
733 readable var _n_expr
: AExpr
740 readable var _n_expr
: AExpr
741 readable var _n_expr2
: AExpr
766 readable var _n_expr
: AExpr
767 readable var _n_type
: AType
789 readable var _n_minus
: TMinus
793 readable var _n_kwnew
: TKwnew
794 readable var _n_type
: AType
795 readable var _n_id
: nullable TId = null
796 readable var _n_args
: List[AExpr] = new List[AExpr]
800 readable var _n_expr
: AExpr
801 readable var _n_id
: TAttrid
806 class AAttrAssignExpr
808 super AAssignFormExpr
812 readable var _n_id
: TId
813 readable var _n_args
: List[AExpr] = new List[AExpr]
815 class AAttrReassignExpr
818 super AReassignFormExpr
823 class ACallAssignExpr
825 super AAssignFormExpr
827 class ACallReassignExpr
830 super AReassignFormExpr
834 readable var _n_qualified
: nullable AQualified = null
835 readable var _n_kwsuper
: TKwsuper
836 readable var _n_args
: List[AExpr] = new List[AExpr]
840 readable var _n_kwinit
: TKwinit
841 readable var _n_args
: List[AExpr] = new List[AExpr]
845 readable var _n_args
: List[AExpr] = new List[AExpr]
852 super AAssignFormExpr
856 readable var _n_id
: TId
858 class ABraReassignExpr
860 super AReassignFormExpr
862 class AClosureCallExpr
864 readable var _n_id
: TId
865 readable var _n_args
: List[AExpr] = new List[AExpr]
866 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
873 super AAssignFormExpr
875 class AVarReassignExpr
877 super AReassignFormExpr
881 readable var _n_expr
: AExpr
882 readable var _n_expr2
: AExpr
892 readable var _n_exprs
: List[AExpr] = new List[AExpr]
896 readable var _n_kwself
: nullable TKwself
898 class AImplicitSelfExpr
903 readable var _n_kwtrue
: TKwtrue
907 readable var _n_kwfalse
: TKwfalse
911 readable var _n_kwnull
: TKwnull
915 readable var _n_number
: TNumber
919 readable var _n_float
: TFloat
923 readable var _n_char
: TChar
925 class AStringFormExpr
929 super AStringFormExpr
930 readable var _n_string
: TString
932 class AStartStringExpr
933 super AStringFormExpr
934 readable var _n_string
: TStartString
937 super AStringFormExpr
938 readable var _n_string
: TMidString
941 super AStringFormExpr
942 readable var _n_string
: TEndString
944 class ASuperstringExpr
946 readable var _n_exprs
: List[AExpr] = new List[AExpr]
953 readable var _n_expr
: AExpr
957 readable var _n_expr
: AExpr
958 readable var _n_kwas
: TKwas
959 readable var _n_type
: AType
963 readable var _n_expr
: AExpr
964 readable var _n_kwas
: TKwas
965 readable var _n_kwnot
: TKwnot
966 readable var _n_kwnull
: TKwnull
970 readable var _n_kwisset
: TKwisset
972 class AAssignOp super Prod end
975 readable var _n_pluseq
: TPluseq
979 readable var _n_minuseq
: TMinuseq
983 readable var _n_bang
: TBang
984 readable var _n_id
: AClosureId
985 readable var _n_ids
: List[TId] = new List[TId]
986 readable var _n_kwdo
: nullable TKwdo = null
987 readable var _n_expr
: nullable AExpr = null
992 class ASimpleClosureId
994 readable var _n_id
: TId
996 class ABreakClosureId
998 readable var _n_kwbreak
: TKwbreak
1002 readable var _n_quad
: nullable TQuad = null
1003 readable var _n_path
: List[TId] = new List[TId]
1004 readable var _n_id
: TId
1008 readable var _n_quad
: nullable TQuad = null
1009 readable var _n_id
: List[TId] = new List[TId]
1010 readable var _n_classid
: nullable TClassid = null
1014 readable var _n_comment
: List[TComment] = new List[TComment]
1019 readable var _n_base
: nullable AModule
1020 readable var _n_eof
: EOF