parser: extends grammar to support annotations
[nit.git] / src / parser / parser_abs.nit
index 977ddd2..4c620db 100644 (file)
@@ -47,9 +47,6 @@ end
 class TKwenum
        super Token
 end
-class TKwspecial
-       super Token
-end
 class TKwend
        super Token
 end
@@ -176,6 +173,9 @@ end
 class TKwlabel
        super Token
 end
+class TKwdebug
+       super Token
+end
 class TOpar
        super Token
 end
@@ -260,6 +260,9 @@ end
 class TBang
        super Token
 end
+class TAt
+       super Token
+end
 class TClassid
        super Token
 end
@@ -290,6 +293,15 @@ end
 class TEndString
        super Token
 end
+class TBadChar
+       super Token
+end
+class TBadString
+       super Token
+end
+class TExternCodeSegment
+       super Token
+end
 class EOF
        super Token
 private init noinit do end
@@ -316,29 +328,42 @@ class AClosureDecl super Prod end
 class AType super Prod end
 class ALabel super Prod end
 class AExpr super Prod end
+class AExprs super Prod end
 class AAssignOp super Prod end
 class AClosureDef super Prod end
 class AClosureId super Prod end
+class AModuleName super Prod end
+class AExternCalls super Prod end
+class AExternCall super Prod end
+class AInLanguage super Prod end
+class AExternCodeBlock super Prod end
 class AQualified super Prod end
 class ADoc super Prod end
+class AAnnotations super Prod end
+class AAnnotation super Prod end
+class AAtArg super Prod end
+class AAtid super Prod end
 
 class AModule
        super AModule
     readable var _n_moduledecl: nullable AModuledecl = null
     readable var _n_imports: List[AImport] = new List[AImport]
+    readable var _n_extern_code_blocks: List[AExternCodeBlock] = new List[AExternCodeBlock]
     readable var _n_classdefs: List[AClassdef] = new List[AClassdef]
 end
 class AModuledecl
        super AModuledecl
     readable var _n_doc: nullable ADoc = null
     readable var _n_kwmodule: TKwmodule
-    readable var _n_id: TId
+    readable var _n_name: AModuleName
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AStdImport
        super AImport
     readable var _n_visibility: AVisibility
     readable var _n_kwimport: TKwimport
-    readable var _n_id: TId
+    readable var _n_name: AModuleName
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ANoImport
        super AImport
@@ -369,8 +394,11 @@ class AStdClassdef
     readable var _n_classkind: AClasskind
     readable var _n_id: nullable TClassid = null
     readable var _n_formaldefs: List[AFormaldef] = new List[AFormaldef]
+    readable var _n_annotations: nullable AAnnotations = null
+    readable var _n_extern_code_block: nullable AExternCodeBlock = null
     readable var _n_superclasses: List[ASuperclass] = new List[ASuperclass]
     readable var _n_propdefs: List[APropdef] = new List[APropdef]
+    readable var _n_kwend: TKwend
 end
 class ATopClassdef
        super AClassdef
@@ -397,16 +425,22 @@ class AEnumClasskind
        super AClasskind
     readable var _n_kwenum: TKwenum
 end
+class AExternClasskind
+       super AClasskind
+    readable var _n_kwextern: TKwextern
+    readable var _n_kwclass: nullable TKwclass = null
+end
 class AFormaldef
        super AFormaldef
     readable var _n_id: TClassid
     readable var _n_type: nullable AType = null
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ASuperclass
        super ASuperclass
-    readable var _n_kwspecial: nullable TKwspecial = null
-    readable var _n_kwsuper: nullable TKwsuper = null
+    readable var _n_kwsuper: TKwsuper
     readable var _n_type: AType
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AAttrPropdef
        super APropdef
@@ -419,6 +453,7 @@ class AAttrPropdef
     readable var _n_id: nullable TAttrid = null
     readable var _n_id2: nullable TId = null
     readable var _n_type: nullable AType = null
+    readable var _n_annotations: nullable AAnnotations = null
     readable var _n_expr: nullable AExpr = null
 end
 class AMethPropdef
@@ -437,6 +472,7 @@ class ADeferredMethPropdef
     readable var _n_kwmeth: TKwmeth
     readable var _n_methid: AMethid
     readable var _n_signature: ASignature
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AInternMethPropdef
        super APropdef
@@ -456,6 +492,8 @@ class AExternMethPropdef
     readable var _n_methid: AMethid
     readable var _n_signature: ASignature
     readable var _n_extern: nullable TString = null
+    readable var _n_extern_calls: nullable AExternCalls = null
+    readable var _n_extern_code_block: nullable AExternCodeBlock = null
 end
 class AConcreteMethPropdef
        super APropdef
@@ -465,6 +503,7 @@ class AConcreteMethPropdef
     readable var _n_kwmeth: TKwmeth
     readable var _n_methid: AMethid
     readable var _n_signature: ASignature
+    readable var _n_annotations: nullable AAnnotations = null
     readable var _n_block: nullable AExpr = null
 end
 class AConcreteInitPropdef
@@ -475,8 +514,21 @@ class AConcreteInitPropdef
     readable var _n_kwinit: TKwinit
     readable var _n_methid: nullable AMethid = null
     readable var _n_signature: ASignature
+    readable var _n_annotations: nullable AAnnotations = null
     readable var _n_block: nullable AExpr = null
 end
+class AExternInitPropdef
+       super APropdef
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: AVisibility
+    readable var _n_kwnew: TKwnew
+    readable var _n_methid: nullable AMethid = null
+    readable var _n_signature: ASignature
+    readable var _n_extern: nullable TString = null
+    readable var _n_extern_calls: nullable AExternCalls = null
+    readable var _n_extern_code_block: nullable AExternCodeBlock = null
+end
 class AMainMethPropdef
        super APropdef
     readable var _n_kwredef: nullable TKwredef = null
@@ -490,6 +542,7 @@ class ATypePropdef
     readable var _n_kwtype: TKwtype
     readable var _n_id: TClassid
     readable var _n_type: AType
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AReadAble
        super AAble
@@ -580,7 +633,9 @@ class ABraassignMethid
 end
 class ASignature
        super ASignature
+    readable var _n_opar: nullable TOpar = null
     readable var _n_params: List[AParam] = new List[AParam]
+    readable var _n_cpar: nullable TCpar = null
     readable var _n_type: nullable AType = null
     readable var _n_closure_decls: List[AClosureDecl] = new List[AClosureDecl]
 end
@@ -589,6 +644,7 @@ class AParam
     readable var _n_id: TId
     readable var _n_type: nullable AType = null
     readable var _n_dotdotdot: nullable TDotdotdot = null
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AClosureDecl
        super AClosureDecl
@@ -603,6 +659,7 @@ class AType
     readable var _n_kwnullable: nullable TKwnullable = null
     readable var _n_id: TClassid
     readable var _n_types: List[AType] = new List[AType]
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ALabel
        super ALabel
@@ -612,6 +669,7 @@ end
 class ABlockExpr
        super AExpr
     readable var _n_expr: List[AExpr] = new List[AExpr]
+    readable var _n_kwend: nullable TKwend = null
 end
 class AVardeclExpr
        super AExpr
@@ -620,6 +678,7 @@ class AVardeclExpr
     readable var _n_type: nullable AType = null
     readable var _n_assign: nullable TAssign = null
     readable var _n_expr: nullable AExpr = null
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AReturnExpr
        super AExpr
@@ -681,7 +740,7 @@ end
 class AForExpr
        super AExpr
     readable var _n_kwfor: TKwfor
-    readable var _n_id: TId
+    readable var _n_ids: List[TId] = new List[TId]
     readable var _n_expr: AExpr
     readable var _n_kwdo: TKwdo
     readable var _n_block: nullable AExpr = null
@@ -818,7 +877,7 @@ class ANewExpr
     readable var _n_kwnew: TKwnew
     readable var _n_type: AType
     readable var _n_id: nullable TId = null
-    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_args: AExprs
 end
 class AAttrExpr
        super AExpr
@@ -843,14 +902,14 @@ class ACallExpr
        super AExpr
     readable var _n_expr: AExpr
     readable var _n_id: TId
-    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_args: AExprs
     readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
 end
 class ACallAssignExpr
        super AExpr
     readable var _n_expr: AExpr
     readable var _n_id: TId
-    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_args: AExprs
     readable var _n_assign: TAssign
     readable var _n_value: AExpr
 end
@@ -858,7 +917,7 @@ class ACallReassignExpr
        super AExpr
     readable var _n_expr: AExpr
     readable var _n_id: TId
-    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_args: AExprs
     readable var _n_assign_op: AAssignOp
     readable var _n_value: AExpr
 end
@@ -866,38 +925,38 @@ class ASuperExpr
        super AExpr
     readable var _n_qualified: nullable AQualified = null
     readable var _n_kwsuper: TKwsuper
-    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_args: AExprs
 end
 class AInitExpr
        super AExpr
     readable var _n_expr: AExpr
     readable var _n_kwinit: TKwinit
-    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_args: AExprs
 end
 class ABraExpr
        super AExpr
     readable var _n_expr: AExpr
-    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_args: AExprs
     readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
 end
 class ABraAssignExpr
        super AExpr
     readable var _n_expr: AExpr
-    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_args: AExprs
     readable var _n_assign: TAssign
     readable var _n_value: AExpr
 end
 class ABraReassignExpr
        super AExpr
     readable var _n_expr: AExpr
-    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_args: AExprs
     readable var _n_assign_op: AAssignOp
     readable var _n_value: AExpr
 end
 class AClosureCallExpr
        super AExpr
     readable var _n_id: TId
-    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_args: AExprs
     readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
 end
 class AVarExpr
@@ -920,24 +979,33 @@ class ARangeExpr
        super AExpr
     readable var _n_expr: AExpr
     readable var _n_expr2: AExpr
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ACrangeExpr
        super AExpr
+    readable var _n_obra: TObra
     readable var _n_expr: AExpr
     readable var _n_expr2: AExpr
+    readable var _n_cbra: TCbra
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AOrangeExpr
        super AExpr
+    readable var _n_obra: TObra
     readable var _n_expr: AExpr
     readable var _n_expr2: AExpr
+    readable var _n_cbra: TObra
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AArrayExpr
        super AExpr
-    readable var _n_exprs: List[AExpr] = new List[AExpr]
+    readable var _n_exprs: AExprs
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ASelfExpr
        super AExpr
     readable var _n_kwself: TKwself
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AImplicitSelfExpr
        super AExpr
@@ -945,30 +1013,37 @@ end
 class ATrueExpr
        super AExpr
     readable var _n_kwtrue: TKwtrue
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AFalseExpr
        super AExpr
     readable var _n_kwfalse: TKwfalse
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ANullExpr
        super AExpr
     readable var _n_kwnull: TKwnull
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AIntExpr
        super AExpr
     readable var _n_number: TNumber
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AFloatExpr
        super AExpr
     readable var _n_float: TFloat
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ACharExpr
        super AExpr
     readable var _n_char: TChar
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AStringExpr
        super AExpr
     readable var _n_string: TString
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AStartStringExpr
        super AExpr
@@ -985,23 +1060,31 @@ end
 class ASuperstringExpr
        super AExpr
     readable var _n_exprs: List[AExpr] = new List[AExpr]
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AParExpr
        super AExpr
+    readable var _n_opar: TOpar
     readable var _n_expr: AExpr
+    readable var _n_cpar: TCpar
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AAsCastExpr
        super AExpr
     readable var _n_expr: AExpr
     readable var _n_kwas: TKwas
+    readable var _n_opar: TOpar
     readable var _n_type: AType
+    readable var _n_cpar: TCpar
 end
 class AAsNotnullExpr
        super AExpr
     readable var _n_expr: AExpr
     readable var _n_kwas: TKwas
+    readable var _n_opar: TOpar
     readable var _n_kwnot: TKwnot
     readable var _n_kwnull: TKwnull
+    readable var _n_cpar: TCpar
 end
 class AIssetAttrExpr
        super AExpr
@@ -1009,6 +1092,29 @@ class AIssetAttrExpr
     readable var _n_expr: AExpr
     readable var _n_id: TAttrid
 end
+class ADebugTypeExpr
+       super AExpr
+    readable var _n_kwdebug: TKwdebug
+    readable var _n_kwtype: TKwtype
+    readable var _n_expr: AExpr
+    readable var _n_type: AType
+end
+class AListExprs
+       super AExprs
+    readable var _n_exprs: List[AExpr] = new List[AExpr]
+end
+class AParExprs
+       super AExprs
+    readable var _n_opar: TOpar
+    readable var _n_exprs: List[AExpr] = new List[AExpr]
+    readable var _n_cpar: TCpar
+end
+class ABraExprs
+       super AExprs
+    readable var _n_obra: TObra
+    readable var _n_exprs: List[AExpr] = new List[AExpr]
+    readable var _n_cbra: TCbra
+end
 class APlusAssignOp
        super AAssignOp
     readable var _n_pluseq: TPluseq
@@ -1034,6 +1140,67 @@ class ABreakClosureId
        super AClosureId
     readable var _n_kwbreak: TKwbreak
 end
+class AModuleName
+       super AModuleName
+    readable var _n_quad: nullable TQuad = null
+    readable var _n_path: List[TId] = new List[TId]
+    readable var _n_id: TId
+end
+class AExternCalls
+       super AExternCalls
+    readable var _n_kwimport: TKwimport
+    readable var _n_extern_calls: List[AExternCall] = new List[AExternCall]
+end
+class AExternCall
+       super AExternCall
+end
+class ASuperExternCall
+       super AExternCall
+    readable var _n_kwsuper: TKwsuper
+end
+class ALocalPropExternCall
+       super AExternCall
+    readable var _n_methid: AMethid
+end
+class AFullPropExternCall
+       super AExternCall
+    readable var _n_classid: TClassid
+    readable var _n_quad: nullable TQuad = null
+    readable var _n_methid: AMethid
+end
+class AInitPropExternCall
+       super AExternCall
+    readable var _n_classid: TClassid
+end
+class ACastAsExternCall
+       super AExternCall
+    readable var _n_from_type: AType
+    readable var _n_kwas: TKwas
+    readable var _n_to_type: AType
+end
+class AAsNullableExternCall
+       super AExternCall
+    readable var _n_type: AType
+    readable var _n_kwas: TKwas
+    readable var _n_kwnullable: TKwnullable
+end
+class AAsNotNullableExternCall
+       super AExternCall
+    readable var _n_type: AType
+    readable var _n_kwas: TKwas
+    readable var _n_kwnot: TKwnot
+    readable var _n_kwnullable: TKwnullable
+end
+class AInLanguage
+       super AInLanguage
+    readable var _n_kwin: TKwin
+    readable var _n_string: TString
+end
+class AExternCodeBlock
+       super AExternCodeBlock
+    readable var _n_in_language: nullable AInLanguage = null
+    readable var _n_extern_code_segment: TExternCodeSegment
+end
 class AQualified
        super AQualified
     readable var _n_id: List[TId] = new List[TId]
@@ -1043,9 +1210,68 @@ class ADoc
        super ADoc
     readable var _n_comment: List[TComment] = new List[TComment]
 end
+class AAnnotations
+       super AAnnotations
+    readable var _n_at: nullable TAt = null
+    readable var _n_opar: nullable TOpar = null
+    readable var _n_items: List[AAnnotation] = new List[AAnnotation]
+    readable var _n_cpar: nullable TCpar = null
+end
+class AAnnotation
+       super AAnnotation
+    readable var _n_atid: AAtid
+    readable var _n_opar: nullable TOpar = null
+    readable var _n_args: List[AAtArg] = new List[AAtArg]
+    readable var _n_cpar: nullable TCpar = null
+    readable var _n_annotations: nullable AAnnotations = null
+end
+class ATypeAtArg
+       super AAtArg
+    readable var _n_type: AType
+end
+class AExprAtArg
+       super AAtArg
+    readable var _n_expr: AExpr
+end
+class AAtAtArg
+       super AAtArg
+    readable var _n_annotations: AAnnotations
+end
+class AIdAtid
+       super AAtid
+    readable var _n_id: TId
+end
+class AKwexternAtid
+       super AAtid
+    readable var _n_id: TKwextern
+end
+class AKwinternAtid
+       super AAtid
+    readable var _n_id: TKwintern
+end
+class AKwreadableAtid
+       super AAtid
+    readable var _n_id: TKwreadable
+end
+class AKwwritableAtid
+       super AAtid
+    readable var _n_id: TKwwritable
+end
+class AKwimportAtid
+       super AAtid
+    readable var _n_id: TKwimport
+end
 
 class Start
        super Prod
     readable var _n_base: nullable AModule
     readable var _n_eof: EOF
+    init(
+        n_base: nullable AModule,
+        n_eof: EOF)
+    do
+        _n_base = n_base
+        _n_eof = n_eof
+    end
+
 end