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)
32 # Ancestor of all tokens
37 # Ancestor of all productions
40 fun location
=(l
: Location) do _location
= l
311 private init noinit
do end
315 private init noinit
do end
320 readable var _n_moduledecl
: nullable AModuledecl = null
321 readable var _n_imports
: List[AImport] = new List[AImport]
322 readable var _n_classdefs
: List[AClassdef] = new List[AClassdef]
326 readable var _n_doc
: nullable ADoc = null
327 readable var _n_kwmodule
: TKwmodule
328 readable var _n_id
: TId
330 class AImport super Prod end
333 readable var _n_visibility
: AVisibility
334 readable var _n_kwimport
: TKwimport
335 readable var _n_id
: TId
339 readable var _n_visibility
: AVisibility
340 readable var _n_kwimport
: TKwimport
341 readable var _n_kwend
: TKwend
343 class AVisibility super Prod end
344 class APublicVisibility
347 class APrivateVisibility
349 readable var _n_kwprivate
: TKwprivate
351 class AProtectedVisibility
353 readable var _n_kwprotected
: TKwprotected
355 class AIntrudeVisibility
357 readable var _n_kwintrude
: TKwintrude
359 class AClassdef super Prod end
362 readable var _n_doc
: nullable ADoc = null
363 readable var _n_kwredef
: nullable TKwredef = null
364 readable var _n_visibility
: AVisibility
365 readable var _n_classkind
: AClasskind
366 readable var _n_id
: nullable TClassid = null
367 readable var _n_formaldefs
: List[AFormaldef] = new List[AFormaldef]
368 readable var _n_superclasses
: List[ASuperclass] = new List[ASuperclass]
369 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
373 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
377 readable var _n_propdefs
: List[APropdef] = new List[APropdef]
379 class AClasskind super Prod end
380 class AConcreteClasskind
382 readable var _n_kwclass
: TKwclass
384 class AAbstractClasskind
386 readable var _n_kwabstract
: TKwabstract
387 readable var _n_kwclass
: TKwclass
389 class AInterfaceClasskind
391 readable var _n_kwinterface
: TKwinterface
395 readable var _n_kwenum
: TKwenum
399 readable var _n_id
: TClassid
400 readable var _n_type
: nullable AType = null
404 readable var _n_kwspecial
: nullable TKwspecial = null
405 readable var _n_kwsuper
: nullable TKwsuper = null
406 readable var _n_type
: AType
408 class APropdef super Prod
409 readable var _n_doc
: nullable ADoc = null
413 readable var _n_kwredef
: nullable TKwredef = null
414 readable var _n_visibility
: AVisibility
415 readable var _n_kwvar
: TKwvar
416 readable var _n_id
: nullable TAttrid
417 readable var _n_id2
: nullable TId
418 readable var _n_type
: nullable AType = null
419 readable var _n_readable
: nullable AAble = null
420 readable var _n_writable
: nullable AAble = null
421 readable var _n_expr
: nullable AExpr = null
425 readable var _n_kwredef
: nullable TKwredef = null
426 readable var _n_visibility
: nullable AVisibility
427 readable var _n_methid
: nullable AMethid = null
428 readable var _n_signature
: nullable ASignature
430 class ADeferredMethPropdef
432 readable var _n_kwmeth
: TKwmeth
434 class AInternMethPropdef
436 readable var _n_kwmeth
: TKwmeth
438 class AExternMethPropdef
440 readable var _n_kwmeth
: TKwmeth
441 readable var _n_extern
: nullable TString = null
443 class AConcreteMethPropdef
445 readable var _n_kwmeth
: nullable TKwmeth
446 readable var _n_block
: nullable AExpr = null
448 class AConcreteInitPropdef
449 super AConcreteMethPropdef
450 readable var _n_kwinit
: TKwinit
452 class AMainMethPropdef
453 super AConcreteMethPropdef
457 readable var _n_kwredef
: nullable TKwredef = null
458 readable var _n_visibility
: AVisibility
459 readable var _n_kwtype
: TKwtype
460 readable var _n_id
: TClassid
461 readable var _n_type
: AType
463 class AAble super Prod
464 readable var _n_visibility
: nullable AVisibility = null
465 readable var _n_kwredef
: nullable TKwredef = null
469 readable var _n_kwreadable
: TKwreadable
473 readable var _n_kwwritable
: TKwwritable
475 class AMethid super Prod end
478 readable var _n_id
: TId
482 readable var _n_plus
: TPlus
486 readable var _n_minus
: TMinus
490 readable var _n_star
: TStar
494 readable var _n_slash
: TSlash
498 readable var _n_percent
: TPercent
502 readable var _n_eq
: TEq
506 readable var _n_ne
: TNe
510 readable var _n_le
: TLe
514 readable var _n_ge
: TGe
518 readable var _n_lt
: TLt
522 readable var _n_gt
: TGt
526 readable writable var _n_ll
: TLl
530 readable writable var _n_gg
: TGg
534 readable var _n_obra
: TObra
535 readable var _n_cbra
: TCbra
537 class AStarshipMethid
539 readable var _n_starship
: TStarship
543 readable var _n_id
: TId
544 readable var _n_assign
: TAssign
546 class ABraassignMethid
548 readable var _n_obra
: TObra
549 readable var _n_cbra
: TCbra
550 readable var _n_assign
: TAssign
554 readable var _n_params
: List[AParam] = new List[AParam]
555 readable var _n_type
: nullable AType = null
556 readable var _n_closure_decls
: List[AClosureDecl] = new List[AClosureDecl]
560 readable var _n_id
: TId
561 readable var _n_type
: nullable AType = null
562 readable var _n_dotdotdot
: nullable TDotdotdot = null
566 readable var _n_kwbreak
: nullable TKwbreak = null
567 readable var _n_bang
: TBang
568 readable var _n_id
: TId
569 readable var _n_signature
: ASignature
570 readable var _n_expr
: nullable AExpr = null
574 readable var _n_kwnullable
: nullable TKwnullable = null
575 readable var _n_id
: TClassid
576 readable var _n_types
: List[AType] = new List[AType]
580 readable var _n_kwlabel
: TKwlabel
581 readable var _n_id
: TId
583 class AExpr super Prod end
586 readable var _n_expr
: List[AExpr] = new List[AExpr]
590 readable var _n_kwvar
: TKwvar
591 readable var _n_id
: TId
592 readable var _n_type
: nullable AType = null
593 readable var _n_assign
: nullable TAssign = null
594 readable var _n_expr
: nullable AExpr = null
598 readable var _n_kwreturn
: nullable TKwreturn = null
599 readable var _n_expr
: nullable AExpr = null
603 readable var _n_label
: nullable ALabel = null
608 readable var _n_kwbreak
: TKwbreak
609 readable var _n_expr
: nullable AExpr = null
613 readable var _n_kwabort
: TKwabort
618 readable var _n_kwcontinue
: nullable TKwcontinue = null
619 readable var _n_expr
: nullable AExpr = null
624 readable var _n_kwdo
: TKwdo
625 readable var _n_block
: nullable AExpr = null
629 readable var _n_kwif
: TKwif
630 readable var _n_expr
: AExpr
631 readable var _n_then
: nullable AExpr = null
632 readable var _n_else
: nullable AExpr = null
636 readable var _n_kwif
: TKwif
637 readable var _n_expr
: AExpr
638 readable var _n_kwthen
: TKwthen
639 readable var _n_then
: AExpr
640 readable var _n_kwelse
: TKwelse
641 readable var _n_else
: AExpr
646 readable var _n_kwwhile
: TKwwhile
647 readable var _n_expr
: AExpr
648 readable var _n_kwdo
: TKwdo
649 readable var _n_block
: nullable AExpr = null
654 readable var _n_kwloop
: TKwloop
655 readable var _n_block
: nullable AExpr = null
660 readable var _n_kwfor
: TKwfor
661 readable var _n_id
: TId
662 readable var _n_expr
: AExpr
663 readable var _n_kwdo
: TKwdo
664 readable var _n_block
: nullable AExpr = null
668 readable var _n_kwassert
: TKwassert
669 readable var _n_id
: nullable TId = null
670 readable var _n_expr
: AExpr
671 readable var _n_else
: nullable AExpr = null
673 class AAssignFormExpr
675 readable var _n_assign
: TAssign
676 readable var _n_value
: AExpr
678 class AReassignFormExpr
680 readable var _n_assign_op
: AAssignOp
681 readable var _n_value
: AExpr
685 readable var _n_kwonce
: TKwonce
689 readable var _n_expr
: AExpr
690 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
694 readable var _n_expr2
: AExpr
701 readable var _n_expr
: AExpr
702 readable var _n_expr2
: AExpr
706 readable var _n_expr
: AExpr
707 readable var _n_expr2
: AExpr
711 readable var _n_expr
: AExpr
712 readable var _n_expr2
: AExpr
716 readable var _n_kwnot
: TKwnot
717 readable var _n_expr
: AExpr
724 readable var _n_expr
: AExpr
725 readable var _n_expr2
: AExpr
750 readable var _n_expr
: AExpr
751 readable var _n_type
: AType
773 readable var _n_minus
: TMinus
777 readable var _n_kwnew
: TKwnew
778 readable var _n_type
: AType
779 readable var _n_id
: nullable TId = null
780 readable var _n_args
: List[AExpr] = new List[AExpr]
784 readable var _n_expr
: AExpr
785 readable var _n_id
: TAttrid
790 class AAttrAssignExpr
792 super AAssignFormExpr
796 readable var _n_id
: TId
797 readable var _n_args
: List[AExpr] = new List[AExpr]
799 class AAttrReassignExpr
802 super AReassignFormExpr
807 class ACallAssignExpr
809 super AAssignFormExpr
811 class ACallReassignExpr
814 super AReassignFormExpr
818 readable var _n_qualified
: nullable AQualified = null
819 readable var _n_kwsuper
: TKwsuper
820 readable var _n_args
: List[AExpr] = new List[AExpr]
824 readable var _n_kwinit
: TKwinit
825 readable var _n_args
: List[AExpr] = new List[AExpr]
829 readable var _n_args
: List[AExpr] = new List[AExpr]
836 super AAssignFormExpr
840 readable var _n_id
: TId
842 class ABraReassignExpr
844 super AReassignFormExpr
846 class AClosureCallExpr
848 readable var _n_id
: TId
849 readable var _n_args
: List[AExpr] = new List[AExpr]
850 readable var _n_closure_defs
: List[AClosureDef] = new List[AClosureDef]
857 super AAssignFormExpr
859 class AVarReassignExpr
861 super AReassignFormExpr
865 readable var _n_expr
: AExpr
866 readable var _n_expr2
: AExpr
876 readable var _n_exprs
: List[AExpr] = new List[AExpr]
880 readable var _n_kwself
: nullable TKwself
882 class AImplicitSelfExpr
887 readable var _n_kwtrue
: TKwtrue
891 readable var _n_kwfalse
: TKwfalse
895 readable var _n_kwnull
: TKwnull
899 readable var _n_number
: TNumber
903 readable var _n_float
: TFloat
907 readable var _n_char
: TChar
909 class AStringFormExpr
913 super AStringFormExpr
914 readable var _n_string
: TString
916 class AStartStringExpr
917 super AStringFormExpr
918 readable var _n_string
: TStartString
921 super AStringFormExpr
922 readable var _n_string
: TMidString
925 super AStringFormExpr
926 readable var _n_string
: TEndString
928 class ASuperstringExpr
930 readable var _n_exprs
: List[AExpr] = new List[AExpr]
937 readable var _n_expr
: AExpr
941 readable var _n_expr
: AExpr
942 readable var _n_kwas
: TKwas
943 readable var _n_type
: AType
947 readable var _n_expr
: AExpr
948 readable var _n_kwas
: TKwas
949 readable var _n_kwnot
: TKwnot
950 readable var _n_kwnull
: TKwnull
954 readable var _n_kwisset
: TKwisset
956 class AAssignOp super Prod end
959 readable var _n_pluseq
: TPluseq
963 readable var _n_minuseq
: TMinuseq
967 readable var _n_bang
: TBang
968 readable var _n_id
: AClosureId
969 readable var _n_ids
: List[TId] = new List[TId]
970 readable var _n_kwdo
: nullable TKwdo = null
971 readable var _n_expr
: nullable AExpr = null
976 class ASimpleClosureId
978 readable var _n_id
: TId
980 class ABreakClosureId
982 readable var _n_kwbreak
: TKwbreak
986 readable var _n_id
: List[TId] = new List[TId]
987 readable var _n_classid
: nullable TClassid = null
991 readable var _n_comment
: List[TComment] = new List[TComment]
996 readable var _n_base
: nullable AModule
997 readable var _n_eof
: EOF