parser: extends grammar to support annotations
[nit.git] / src / parser / parser_abs.nit
index 26f5641..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,19 +328,27 @@ 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
@@ -336,12 +356,14 @@ class AModuledecl
     readable var _n_doc: nullable ADoc = null
     readable var _n_kwmodule: TKwmodule
     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_name: AModuleName
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ANoImport
        super AImport
@@ -372,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
@@ -403,17 +428,19 @@ 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
@@ -426,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
@@ -444,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
@@ -464,6 +493,7 @@ class AExternMethPropdef
     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
@@ -473,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
@@ -483,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
@@ -498,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
@@ -588,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
@@ -597,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
@@ -611,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
@@ -620,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
@@ -628,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
@@ -826,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
@@ -851,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
@@ -866,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
@@ -874,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
@@ -928,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
@@ -953,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
@@ -993,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
@@ -1017,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
@@ -1093,6 +1191,16 @@ class AAsNotNullableExternCall
     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]
@@ -1102,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