module Hydra.Sources.Tier4.Langs.Java.Syntax where
import Hydra.Sources.Tier3.All
import Hydra.Dsl.Types as Types
import Hydra.Dsl.Annotations
import Hydra.Dsl.Bootstrap
javaSyntaxModule :: Module
javaSyntaxModule :: Module
javaSyntaxModule = Namespace
-> [Element] -> [Module] -> [Module] -> Maybe String -> Module
Module Namespace
ns [Element]
elements [Module
hydraCoreModule] [Module]
tier0Modules (Maybe String -> Module) -> Maybe String -> Module
forall a b. (a -> b) -> a -> b
$
String -> Maybe String
forall a. a -> Maybe a
Just (String
"A Java syntax module. Based on the Oracle Java SE 12 BNF:\n" String -> String -> String
forall a. [a] -> [a] -> [a]
++
String
" https://docs.oracle.com/javase/specs/jls/se12/html/jls-19.html\n" String -> String -> String
forall a. [a] -> [a] -> [a]
++
String
"Note: all *WithComments types were added manually, rather than derived from the BNF, which does not allow for comments.")
where
ns :: Namespace
ns = String -> Namespace
Namespace String
"hydra/langs/java/syntax"
def :: String -> Type -> Element
def = Namespace -> String -> Type -> Element
datatype Namespace
ns
java :: String -> Type
java = Namespace -> String -> Type
typeref Namespace
ns
elements :: [Element]
elements = [
String -> Type -> Element
def String
"Identifier" Type
string,
String -> Type -> Element
def String
"TypeIdentifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier",
String -> Type -> Element
def String
"Literal" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
String
"null"String -> Type -> FieldType
>: Type
unit,
String
"integer"String -> Type -> FieldType
>: String -> Type
java String
"IntegerLiteral",
String
"floatingPoint"String -> Type -> FieldType
>: String -> Type
java String
"FloatingPointLiteral",
String
"boolean"String -> Type -> FieldType
>: Type
boolean,
String
"character"String -> Type -> FieldType
>: Type
uint16,
String
"string"String -> Type -> FieldType
>: String -> Type
java String
"StringLiteral"],
String -> Type -> Element
def String
"IntegerLiteral" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
String -> Type -> Type
doc String
"Note: this is an approximation which ignores encoding"
Type
bigint,
String -> Type -> Element
def String
"FloatingPointLiteral" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
String -> Type -> Type
doc String
"Note: this is an approximation which ignores encoding"
Type
bigfloat,
String -> Type -> Element
def String
"StringLiteral" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
String -> Type -> Type
doc String
"Note: this is an approximation which ignores encoding"
Type
string,
String -> Type -> Element
def String
"Type" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"primitive"String -> Type -> FieldType
>: String -> Type
java String
"PrimitiveTypeWithAnnotations",
String
"reference"String -> Type -> FieldType
>: String -> Type
java String
"ReferenceType"],
String -> Type -> Element
def String
"PrimitiveTypeWithAnnotations" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"PrimitiveType",
String
"annotations"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation"],
String -> Type -> Element
def String
"PrimitiveType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"numeric"String -> Type -> FieldType
>: String -> Type
java String
"NumericType",
String
"boolean"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"NumericType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"integral"String -> Type -> FieldType
>: String -> Type
java String
"IntegralType",
String
"floatingPoint"String -> Type -> FieldType
>: String -> Type
java String
"FloatingPointType"],
String -> Type -> Element
def String
"IntegralType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [String] -> Type
enum [
String
"byte", String
"short", String
"int", String
"long", String
"char"],
String -> Type -> Element
def String
"FloatingPointType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [String] -> Type
enum [
String
"float", String
"double"],
String -> Type -> Element
def String
"ReferenceType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"classOrInterface"String -> Type -> FieldType
>: String -> Type
java String
"ClassOrInterfaceType",
String
"variable"String -> Type -> FieldType
>: String -> Type
java String
"TypeVariable",
String
"array"String -> Type -> FieldType
>: String -> Type
java String
"ArrayType"],
String -> Type -> Element
def String
"ClassOrInterfaceType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"class"String -> Type -> FieldType
>: String -> Type
java String
"ClassType",
String
"interface"String -> Type -> FieldType
>: String -> Type
java String
"InterfaceType"],
String -> Type -> Element
def String
"ClassType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"annotations"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String
"qualifier"String -> Type -> FieldType
>: String -> Type
java String
"ClassTypeQualifier",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"TypeIdentifier",
String
"arguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgument"],
String -> Type -> Element
def String
"ClassTypeQualifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"none"String -> Type -> FieldType
>: Type
unit,
String
"package"String -> Type -> FieldType
>: String -> Type
java String
"PackageName",
String
"parent"String -> Type -> FieldType
>: String -> Type
java String
"ClassOrInterfaceType"],
String -> Type -> Element
def String
"InterfaceType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ClassType",
String -> Type -> Element
def String
"TypeVariable" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"annotations"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"TypeIdentifier"],
String -> Type -> Element
def String
"ArrayType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"dims"String -> Type -> FieldType
>: String -> Type
java String
"Dims",
String
"variant"String -> Type -> FieldType
>: String -> Type
java String
"ArrayType.Variant"],
String -> Type -> Element
def String
"ArrayType.Variant" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"primitive"String -> Type -> FieldType
>: String -> Type
java String
"PrimitiveTypeWithAnnotations",
String
"classOrInterface"String -> Type -> FieldType
>: String -> Type
java String
"ClassOrInterfaceType",
String
"variable"String -> Type -> FieldType
>: String -> Type
java String
"TypeVariable"],
String -> Type -> Element
def String
"Dims" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String -> Type -> Element
def String
"TypeParameter" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeParameterModifier",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"TypeIdentifier",
String
"bound"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeBound"],
String -> Type -> Element
def String
"TypeParameterModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String -> Type -> Element
def String
"TypeBound" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"variable"String -> Type -> FieldType
>: String -> Type
java String
"TypeVariable",
String
"classOrInterface"String -> Type -> FieldType
>: String -> Type
java String
"TypeBound.ClassOrInterface"],
String -> Type -> Element
def String
"TypeBound.ClassOrInterface" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"ClassOrInterfaceType",
String
"additional"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"AdditionalBound"],
String -> Type -> Element
def String
"AdditionalBound" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"InterfaceType",
String -> Type -> Element
def String
"TypeArgument" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"reference"String -> Type -> FieldType
>: String -> Type
java String
"ReferenceType",
String
"wildcard"String -> Type -> FieldType
>: String -> Type
java String
"Wildcard"],
String -> Type -> Element
def String
"Wildcard" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"annotations"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String
"wildcard"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"WildcardBounds"],
String -> Type -> Element
def String
"WildcardBounds" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"extends"String -> Type -> FieldType
>: String -> Type
java String
"ReferenceType",
String
"super"String -> Type -> FieldType
>: String -> Type
java String
"ReferenceType"],
String -> Type -> Element
def String
"ModuleName" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier",
String
"name"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ModuleName"],
String -> Type -> Element
def String
"PackageName" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier",
String -> Type -> Element
def String
"TypeName" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"TypeIdentifier",
String
"qualifier"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"PackageOrTypeName"],
String -> Type -> Element
def String
"ExpressionName" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"qualifier"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"AmbiguousName",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"MethodName" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier",
String -> Type -> Element
def String
"PackageOrTypeName" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier",
String -> Type -> Element
def String
"AmbiguousName" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier",
String -> Type -> Element
def String
"CompilationUnit" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"ordinary"String -> Type -> FieldType
>: String -> Type
java String
"OrdinaryCompilationUnit",
String
"modular"String -> Type -> FieldType
>: String -> Type
java String
"ModularCompilationUnit"],
String -> Type -> Element
def String
"OrdinaryCompilationUnit" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"package"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"PackageDeclaration",
String
"imports"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ImportDeclaration",
String
"types"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeDeclarationWithComments"],
String -> Type -> Element
def String
"ModularCompilationUnit" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"imports"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ImportDeclaration",
String
"module"String -> Type -> FieldType
>: String -> Type
java String
"ModuleDeclaration"],
String -> Type -> Element
def String
"PackageDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"PackageModifier",
String
"identifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"PackageModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String -> Type -> Element
def String
"ImportDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"singleType"String -> Type -> FieldType
>: String -> Type
java String
"SingleTypeImportDeclaration",
String
"typeImportOnDemand"String -> Type -> FieldType
>: String -> Type
java String
"TypeImportOnDemandDeclaration",
String
"singleStaticImport"String -> Type -> FieldType
>: String -> Type
java String
"SingleStaticImportDeclaration",
String
"staticImportOnDemand"String -> Type -> FieldType
>: String -> Type
java String
"StaticImportOnDemandDeclaration"],
String -> Type -> Element
def String
"SingleTypeImportDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeName",
String -> Type -> Element
def String
"TypeImportOnDemandDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"PackageOrTypeName",
String -> Type -> Element
def String
"SingleStaticImportDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"typeName"String -> Type -> FieldType
>: String -> Type
java String
"TypeName",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"StaticImportOnDemandDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeName",
String -> Type -> Element
def String
"TypeDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"class"String -> Type -> FieldType
>: String -> Type
java String
"ClassDeclaration",
String
"interface"String -> Type -> FieldType
>: String -> Type
java String
"InterfaceDeclaration",
String
"none"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"TypeDeclarationWithComments" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
String
"value"String -> Type -> FieldType
>: String -> Type
java String
"TypeDeclaration",
String
"comments"String -> Type -> FieldType
>: Type -> Type
optional Type
string],
String -> Type -> Element
def String
"ModuleDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"annotations"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String
"open"String -> Type -> FieldType
>: Type
boolean,
String
"identifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier",
String
"directives"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ModuleDirective"],
String -> Type -> Element
def String
"ModuleDirective" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"requires"String -> Type -> FieldType
>: String -> Type
java String
"ModuleDirective.Requires",
String
"exports"String -> Type -> FieldType
>: String -> Type
java String
"ModuleDirective.ExportsOrOpens",
String
"opens"String -> Type -> FieldType
>: String -> Type
java String
"ModuleDirective.ExportsOrOpens",
String
"uses"String -> Type -> FieldType
>: String -> Type
java String
"TypeName",
String
"provides"String -> Type -> FieldType
>: String -> Type
java String
"ModuleDirective.Provides"],
String -> Type -> Element
def String
"ModuleDirective.Requires" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"RequiresModifier",
String
"module"String -> Type -> FieldType
>: String -> Type
java String
"ModuleName"],
String -> Type -> Element
def String
"ModuleDirective.ExportsOrOpens" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"package"String -> Type -> FieldType
>: String -> Type
java String
"PackageName",
String
"modules"String -> Type -> FieldType
>:
String -> Type -> Type
doc String
"At least one module" (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$
Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ModuleName"],
String -> Type -> Element
def String
"ModuleDirective.Provides" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"to"String -> Type -> FieldType
>: String -> Type
java String
"TypeName",
String
"with"String -> Type -> FieldType
>:
String -> Type -> Type
doc String
"At least one type" (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$
Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeName"],
String -> Type -> Element
def String
"RequiresModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [String] -> Type
enum [
String
"transitive", String
"static"],
String -> Type -> Element
def String
"ClassDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"normal"String -> Type -> FieldType
>: String -> Type
java String
"NormalClassDeclaration",
String
"enum"String -> Type -> FieldType
>: String -> Type
java String
"EnumDeclaration"],
String -> Type -> Element
def String
"NormalClassDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ClassModifier",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"TypeIdentifier",
String
"parameters"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeParameter",
String
"extends"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ClassType",
String
"implements"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"InterfaceType",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"ClassBody"],
String -> Type -> Element
def String
"ClassModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"annotation"String -> Type -> FieldType
>: String -> Type
java String
"Annotation",
String
"public"String -> Type -> FieldType
>: Type
unit,
String
"protected"String -> Type -> FieldType
>: Type
unit,
String
"private"String -> Type -> FieldType
>: Type
unit,
String
"abstract"String -> Type -> FieldType
>: Type
unit,
String
"static"String -> Type -> FieldType
>: Type
unit,
String
"final"String -> Type -> FieldType
>: Type
unit,
String
"strictfp"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"ClassBody" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ClassBodyDeclarationWithComments",
String -> Type -> Element
def String
"ClassBodyDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"classMember"String -> Type -> FieldType
>: String -> Type
java String
"ClassMemberDeclaration",
String
"instanceInitializer"String -> Type -> FieldType
>: String -> Type
java String
"InstanceInitializer",
String
"staticInitializer"String -> Type -> FieldType
>: String -> Type
java String
"StaticInitializer",
String
"constructorDeclaration"String -> Type -> FieldType
>: String -> Type
java String
"ConstructorDeclaration"],
String -> Type -> Element
def String
"ClassBodyDeclarationWithComments" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
String
"value"String -> Type -> FieldType
>: String -> Type
java String
"ClassBodyDeclaration",
String
"comments"String -> Type -> FieldType
>: Type -> Type
optional Type
string],
String -> Type -> Element
def String
"ClassMemberDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"field"String -> Type -> FieldType
>: String -> Type
java String
"FieldDeclaration",
String
"method"String -> Type -> FieldType
>: String -> Type
java String
"MethodDeclaration",
String
"class"String -> Type -> FieldType
>: String -> Type
java String
"ClassDeclaration",
String
"interface"String -> Type -> FieldType
>: String -> Type
java String
"InterfaceDeclaration",
String
"none"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"FieldDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"FieldModifier",
String
"unannType"String -> Type -> FieldType
>: String -> Type
java String
"UnannType",
String
"variableDeclarators"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableDeclarator"],
String -> Type -> Element
def String
"FieldModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"annotation"String -> Type -> FieldType
>: String -> Type
java String
"Annotation",
String
"public"String -> Type -> FieldType
>: Type
unit,
String
"protected"String -> Type -> FieldType
>: Type
unit,
String
"private"String -> Type -> FieldType
>: Type
unit,
String
"static"String -> Type -> FieldType
>: Type
unit,
String
"final"String -> Type -> FieldType
>: Type
unit,
String
"transient"String -> Type -> FieldType
>: Type
unit,
String
"volatile"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"VariableDeclarator" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"id"String -> Type -> FieldType
>: String -> Type
java String
"VariableDeclaratorId",
String
"initializer"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableInitializer"],
String -> Type -> Element
def String
"VariableDeclaratorId" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier",
String
"dims"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Dims"],
String -> Type -> Element
def String
"VariableInitializer" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"Expression",
String
"arrayInitializer"String -> Type -> FieldType
>: String -> Type
java String
"ArrayInitializer"],
String -> Type -> Element
def String
"UnannType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
String -> Type -> Type
doc String
"A Type which does not allow annotations" (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$
String -> Type
java String
"Type",
String -> Type -> Element
def String
"UnannClassType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
String -> Type -> Type
doc String
"A ClassType which does not allow annotations" (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$
String -> Type
java String
"ClassType",
String -> Type -> Element
def String
"MethodDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"annotations"String -> Type -> FieldType
>:
String -> Type -> Type
doc String
"Note: simple methods cannot have annotations" (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$
Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"MethodModifier",
String
"header"String -> Type -> FieldType
>: String -> Type
java String
"MethodHeader",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"MethodBody"],
String -> Type -> Element
def String
"MethodModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"annotation"String -> Type -> FieldType
>: String -> Type
java String
"Annotation",
String
"public"String -> Type -> FieldType
>: Type
unit,
String
"protected"String -> Type -> FieldType
>: Type
unit,
String
"private"String -> Type -> FieldType
>: Type
unit,
String
"abstract"String -> Type -> FieldType
>: Type
unit,
String
"static"String -> Type -> FieldType
>: Type
unit,
String
"final"String -> Type -> FieldType
>: Type
unit,
String
"synchronized"String -> Type -> FieldType
>: Type
unit,
String
"native"String -> Type -> FieldType
>: Type
unit,
String
"strictfb"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"MethodHeader" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"parameters"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeParameter",
String
"result"String -> Type -> FieldType
>: String -> Type
java String
"Result",
String
"declarator"String -> Type -> FieldType
>: String -> Type
java String
"MethodDeclarator",
String
"throws"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Throws"],
String -> Type -> Element
def String
"Result" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"UnannType",
String
"void"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"MethodDeclarator" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier",
String
"receiverParameter"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ReceiverParameter",
String
"formalParameters"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"FormalParameter"],
String -> Type -> Element
def String
"ReceiverParameter" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"annotations"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String
"unannType"String -> Type -> FieldType
>: String -> Type
java String
"UnannType",
String
"identifier"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"FormalParameter" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"simple"String -> Type -> FieldType
>: String -> Type
java String
"FormalParameter.Simple",
String
"variableArity"String -> Type -> FieldType
>: String -> Type
java String
"VariableArityParameter"],
String -> Type -> Element
def String
"FormalParameter.Simple" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableModifier",
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"UnannType",
String
"id"String -> Type -> FieldType
>: String -> Type
java String
"VariableDeclaratorId"],
String -> Type -> Element
def String
"VariableArityParameter" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: String -> Type
java String
"VariableModifier",
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"UnannType",
String
"annotations"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"VariableModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"annotation"String -> Type -> FieldType
>: String -> Type
java String
"Annotation",
String
"final"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"Throws" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ExceptionType",
String -> Type -> Element
def String
"ExceptionType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"class"String -> Type -> FieldType
>: String -> Type
java String
"ClassType",
String
"variable"String -> Type -> FieldType
>: String -> Type
java String
"TypeVariable"],
String -> Type -> Element
def String
"MethodBody" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"block"String -> Type -> FieldType
>: String -> Type
java String
"Block",
String
"none"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"InstanceInitializer" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Block",
String -> Type -> Element
def String
"StaticInitializer" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Block",
String -> Type -> Element
def String
"ConstructorDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ConstructorModifier",
String
"constructor"String -> Type -> FieldType
>: String -> Type
java String
"ConstructorDeclarator",
String
"throws"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Throws",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"ConstructorBody"],
String -> Type -> Element
def String
"ConstructorModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"annotation"String -> Type -> FieldType
>: String -> Type
java String
"Annotation",
String
"public"String -> Type -> FieldType
>: Type
unit,
String
"protected"String -> Type -> FieldType
>: Type
unit,
String
"private"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"ConstructorDeclarator" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"parameters"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeParameter",
String
"name"String -> Type -> FieldType
>: String -> Type
java String
"SimpleTypeName",
String
"receiverParameter"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ReceiverParameter",
String
"formalParameters"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"FormalParameter"],
String -> Type -> Element
def String
"SimpleTypeName" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeIdentifier",
String -> Type -> Element
def String
"ConstructorBody" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"invocation"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ExplicitConstructorInvocation",
String
"statements"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"BlockStatement"],
String -> Type -> Element
def String
"ExplicitConstructorInvocation" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"typeArguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgument",
String
"arguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String
"variant"String -> Type -> FieldType
>: String -> Type
java String
"ExplicitConstructorInvocation.Variant"],
String -> Type -> Element
def String
"ExplicitConstructorInvocation.Variant" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"this"String -> Type -> FieldType
>: Type
unit,
String
"super"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ExpressionName",
String
"primary"String -> Type -> FieldType
>: String -> Type
java String
"Primary"],
String -> Type -> Element
def String
"EnumDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ClassModifier",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"TypeIdentifier",
String
"implements"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"InterfaceType",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"EnumBody"],
String -> Type -> Element
def String
"EnumBody" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"EnumBody.Element",
String -> Type -> Element
def String
"EnumBody.Element" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"constants"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"EnumConstant",
String
"bodyDeclarations"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ClassBodyDeclaration"],
String -> Type -> Element
def String
"EnumConstant" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"EnumConstantModifier",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier",
String
"arguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String
"body"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ClassBody"],
String -> Type -> Element
def String
"EnumConstantModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String -> Type -> Element
def String
"InterfaceDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"normalInterface"String -> Type -> FieldType
>: String -> Type
java String
"NormalInterfaceDeclaration",
String
"annotationType"String -> Type -> FieldType
>: String -> Type
java String
"AnnotationTypeDeclaration"],
String -> Type -> Element
def String
"NormalInterfaceDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"InterfaceModifier",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"TypeIdentifier",
String
"parameters"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeParameter",
String
"extends"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"InterfaceType",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"InterfaceBody"],
String -> Type -> Element
def String
"InterfaceModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"annotation"String -> Type -> FieldType
>: String -> Type
java String
"Annotation",
String
"public"String -> Type -> FieldType
>: Type
unit,
String
"protected"String -> Type -> FieldType
>: Type
unit,
String
"private"String -> Type -> FieldType
>: Type
unit,
String
"abstract"String -> Type -> FieldType
>: Type
unit,
String
"static"String -> Type -> FieldType
>: Type
unit,
String
"strictfb"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"InterfaceBody" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"InterfaceMemberDeclaration",
String -> Type -> Element
def String
"InterfaceMemberDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"constant"String -> Type -> FieldType
>: String -> Type
java String
"ConstantDeclaration",
String
"interfaceMethod"String -> Type -> FieldType
>: String -> Type
java String
"InterfaceMethodDeclaration",
String
"class"String -> Type -> FieldType
>: String -> Type
java String
"ClassDeclaration",
String
"interface"String -> Type -> FieldType
>: String -> Type
java String
"InterfaceDeclaration"],
String -> Type -> Element
def String
"ConstantDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ConstantModifier",
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"UnannType",
String
"variables"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableDeclarator"],
String -> Type -> Element
def String
"ConstantModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"annotation"String -> Type -> FieldType
>: String -> Type
java String
"Annotation",
String
"public"String -> Type -> FieldType
>: Type
unit,
String
"static"String -> Type -> FieldType
>: Type
unit,
String
"final"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"InterfaceMethodDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"InterfaceMethodModifier",
String
"header"String -> Type -> FieldType
>: String -> Type
java String
"MethodHeader",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"MethodBody"],
String -> Type -> Element
def String
"InterfaceMethodModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"annotation"String -> Type -> FieldType
>: String -> Type
java String
"Annotation",
String
"public"String -> Type -> FieldType
>: Type
unit,
String
"private"String -> Type -> FieldType
>: Type
unit,
String
"abstract"String -> Type -> FieldType
>: Type
unit,
String
"default"String -> Type -> FieldType
>: Type
unit,
String
"static"String -> Type -> FieldType
>: Type
unit,
String
"strictfp"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"AnnotationTypeDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"InterfaceModifier",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"TypeIdentifier",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"AnnotationTypeBody"],
String -> Type -> Element
def String
"AnnotationTypeBody" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"AnnotationTypeMemberDeclaration",
String -> Type -> Element
def String
"AnnotationTypeMemberDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"annotationType"String -> Type -> FieldType
>: String -> Type
java String
"AnnotationTypeElementDeclaration",
String
"constant"String -> Type -> FieldType
>: String -> Type
java String
"ConstantDeclaration",
String
"class"String -> Type -> FieldType
>: String -> Type
java String
"ClassDeclaration",
String
"interface"String -> Type -> FieldType
>: String -> Type
java String
"InterfaceDeclaration"],
String -> Type -> Element
def String
"AnnotationTypeElementDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"AnnotationTypeElementModifier",
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"UnannType",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier",
String
"dims"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Dims",
String
"default"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"DefaultValue"],
String -> Type -> Element
def String
"AnnotationTypeElementModifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"public"String -> Type -> FieldType
>: String -> Type
java String
"Annotation",
String
"abstract"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"DefaultValue" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ElementValue",
String -> Type -> Element
def String
"Annotation" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"normal"String -> Type -> FieldType
>: String -> Type
java String
"NormalAnnotation",
String
"marker"String -> Type -> FieldType
>: String -> Type
java String
"MarkerAnnotation",
String
"singleElement"String -> Type -> FieldType
>: String -> Type
java String
"SingleElementAnnotation"],
String -> Type -> Element
def String
"NormalAnnotation" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"typeName"String -> Type -> FieldType
>: String -> Type
java String
"TypeName",
String
"pairs"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ElementValuePair"],
String -> Type -> Element
def String
"ElementValuePair" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"key"String -> Type -> FieldType
>: String -> Type
java String
"Identifier",
String
"value"String -> Type -> FieldType
>: String -> Type
java String
"ElementValue"],
String -> Type -> Element
def String
"ElementValue" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"conditionalExpression"String -> Type -> FieldType
>: String -> Type
java String
"ConditionalExpression",
String
"elementValueArrayInitializer"String -> Type -> FieldType
>: String -> Type
java String
"ElementValueArrayInitializer",
String
"annotation"String -> Type -> FieldType
>: String -> Type
java String
"Annotation"],
String -> Type -> Element
def String
"ElementValueArrayInitializer" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ElementValue",
String -> Type -> Element
def String
"MarkerAnnotation" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeName",
String -> Type -> Element
def String
"SingleElementAnnotation" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"name"String -> Type -> FieldType
>: String -> Type
java String
"TypeName",
String
"value"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ElementValue"],
String -> Type -> Element
def String
"ArrayInitializer" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableInitializer",
String -> Type -> Element
def String
"Block" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"BlockStatement",
String -> Type -> Element
def String
"BlockStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"localVariableDeclaration"String -> Type -> FieldType
>: String -> Type
java String
"LocalVariableDeclarationStatement",
String
"class"String -> Type -> FieldType
>: String -> Type
java String
"ClassDeclaration",
String
"statement"String -> Type -> FieldType
>: String -> Type
java String
"Statement"],
String -> Type -> Element
def String
"LocalVariableDeclarationStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"LocalVariableDeclaration",
String -> Type -> Element
def String
"LocalVariableDeclaration" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableModifier",
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"LocalVariableType",
String
"declarators"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableDeclarator"],
String -> Type -> Element
def String
"LocalVariableType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"UnannType",
String
"var"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"Statement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"withoutTrailing"String -> Type -> FieldType
>: String -> Type
java String
"StatementWithoutTrailingSubstatement",
String
"labeled"String -> Type -> FieldType
>: String -> Type
java String
"LabeledStatement",
String
"ifThen"String -> Type -> FieldType
>: String -> Type
java String
"IfThenStatement",
String
"ifThenElse"String -> Type -> FieldType
>: String -> Type
java String
"IfThenElseStatement",
String
"while"String -> Type -> FieldType
>: String -> Type
java String
"WhileStatement",
String
"for"String -> Type -> FieldType
>: String -> Type
java String
"ForStatement"],
String -> Type -> Element
def String
"StatementNoShortIf" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"withoutTrailing"String -> Type -> FieldType
>: String -> Type
java String
"StatementWithoutTrailingSubstatement",
String
"labeled"String -> Type -> FieldType
>: String -> Type
java String
"LabeledStatementNoShortIf",
String
"ifThenElse"String -> Type -> FieldType
>: String -> Type
java String
"IfThenElseStatementNoShortIf",
String
"while"String -> Type -> FieldType
>: String -> Type
java String
"WhileStatementNoShortIf",
String
"for"String -> Type -> FieldType
>: String -> Type
java String
"ForStatementNoShortIf"],
String -> Type -> Element
def String
"StatementWithoutTrailingSubstatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"block"String -> Type -> FieldType
>: String -> Type
java String
"Block",
String
"empty"String -> Type -> FieldType
>: String -> Type
java String
"EmptyStatement",
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"ExpressionStatement",
String
"assert"String -> Type -> FieldType
>: String -> Type
java String
"AssertStatement",
String
"switch"String -> Type -> FieldType
>: String -> Type
java String
"SwitchStatement",
String
"do"String -> Type -> FieldType
>: String -> Type
java String
"DoStatement",
String
"break"String -> Type -> FieldType
>: String -> Type
java String
"BreakStatement",
String
"continue"String -> Type -> FieldType
>: String -> Type
java String
"ContinueStatement",
String
"return"String -> Type -> FieldType
>: String -> Type
java String
"ReturnStatement",
String
"synchronized"String -> Type -> FieldType
>: String -> Type
java String
"SynchronizedStatement",
String
"throw"String -> Type -> FieldType
>: String -> Type
java String
"ThrowStatement",
String
"try"String -> Type -> FieldType
>: String -> Type
java String
"TryStatement"],
String -> Type -> Element
def String
"EmptyStatement" Type
unit,
String -> Type -> Element
def String
"LabeledStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier",
String
"statement"String -> Type -> FieldType
>: String -> Type
java String
"Statement"],
String -> Type -> Element
def String
"LabeledStatementNoShortIf" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier",
String
"statement"String -> Type -> FieldType
>: String -> Type
java String
"StatementNoShortIf"],
String -> Type -> Element
def String
"ExpressionStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"StatementExpression",
String -> Type -> Element
def String
"StatementExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"assignment"String -> Type -> FieldType
>: String -> Type
java String
"Assignment",
String
"preIncrement"String -> Type -> FieldType
>: String -> Type
java String
"PreIncrementExpression",
String
"preDecrement"String -> Type -> FieldType
>: String -> Type
java String
"PreDecrementExpression",
String
"postIncrement"String -> Type -> FieldType
>: String -> Type
java String
"PostIncrementExpression",
String
"postDecrement"String -> Type -> FieldType
>: String -> Type
java String
"PostDecrementExpression",
String
"methodInvocation"String -> Type -> FieldType
>: String -> Type
java String
"MethodInvocation",
String
"classInstanceCreation"String -> Type -> FieldType
>: String -> Type
java String
"ClassInstanceCreationExpression"],
String -> Type -> Element
def String
"IfThenStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"Expression",
String
"statement"String -> Type -> FieldType
>: String -> Type
java String
"Statement"],
String -> Type -> Element
def String
"IfThenElseStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String
"then"String -> Type -> FieldType
>: String -> Type
java String
"StatementNoShortIf",
String
"else"String -> Type -> FieldType
>: String -> Type
java String
"Statement"],
String -> Type -> Element
def String
"IfThenElseStatementNoShortIf" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String
"then"String -> Type -> FieldType
>: String -> Type
java String
"StatementNoShortIf",
String
"else"String -> Type -> FieldType
>: String -> Type
java String
"StatementNoShortIf"],
String -> Type -> Element
def String
"AssertStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"single"String -> Type -> FieldType
>: String -> Type
java String
"Expression",
String
"pair"String -> Type -> FieldType
>: String -> Type
java String
"AssertStatement.Pair"],
String -> Type -> Element
def String
"AssertStatement.Pair" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"first"String -> Type -> FieldType
>: String -> Type
java String
"Expression",
String
"second"String -> Type -> FieldType
>: String -> Type
java String
"Expression"],
String -> Type -> Element
def String
"SwitchStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: String -> Type
java String
"Expression",
String
"block"String -> Type -> FieldType
>: String -> Type
java String
"SwitchBlock"],
String -> Type -> Element
def String
"SwitchBlock" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"SwitchBlock.Pair",
String -> Type -> Element
def String
"SwitchBlock.Pair" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"statements"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"SwitchBlockStatementGroup",
String
"labels"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"SwitchLabel"],
String -> Type -> Element
def String
"SwitchBlockStatementGroup" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"labels"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"SwitchLabel",
String
"statements"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"BlockStatement"],
String -> Type -> Element
def String
"SwitchLabel" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"constant"String -> Type -> FieldType
>: String -> Type
java String
"ConstantExpression",
String
"enumConstant"String -> Type -> FieldType
>: String -> Type
java String
"EnumConstantName",
String
"default"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"EnumConstantName" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier",
String -> Type -> Element
def String
"WhileStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"Statement"],
String -> Type -> Element
def String
"WhileStatementNoShortIf" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"StatementNoShortIf"],
String -> Type -> Element
def String
"DoStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"Statement",
String
"conde"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression"],
String -> Type -> Element
def String
"ForStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"basic"String -> Type -> FieldType
>: String -> Type
java String
"BasicForStatement",
String
"enhanced"String -> Type -> FieldType
>: String -> Type
java String
"EnhancedForStatement"],
String -> Type -> Element
def String
"ForStatementNoShortIf" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"basic"String -> Type -> FieldType
>: String -> Type
java String
"BasicForStatementNoShortIf",
String
"enhanced"String -> Type -> FieldType
>: String -> Type
java String
"EnhancedForStatementNoShortIf"],
String -> Type -> Element
def String
"BasicForStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: String -> Type
java String
"ForCond",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"Statement"],
String -> Type -> Element
def String
"ForCond" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"init"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ForInit",
String
"cond"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String
"update"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ForUpdate"],
String -> Type -> Element
def String
"BasicForStatementNoShortIf" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: String -> Type
java String
"ForCond",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"StatementNoShortIf"],
String -> Type -> Element
def String
"ForInit" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"statements"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"StatementExpression",
String
"localVariable"String -> Type -> FieldType
>: String -> Type
java String
"LocalVariableDeclaration"],
String -> Type -> Element
def String
"ForUpdate" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"StatementExpression",
String -> Type -> Element
def String
"EnhancedForStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: String -> Type
java String
"EnhancedForCond",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"Statement"],
String -> Type -> Element
def String
"EnhancedForCond" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableModifier",
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"LocalVariableType",
String
"id"String -> Type -> FieldType
>: String -> Type
java String
"VariableDeclaratorId",
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"Expression"],
String -> Type -> Element
def String
"EnhancedForStatementNoShortIf" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: String -> Type
java String
"EnhancedForCond",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"StatementNoShortIf"],
String -> Type -> Element
def String
"BreakStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier",
String -> Type -> Element
def String
"ContinueStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Identifier",
String -> Type -> Element
def String
"ReturnStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String -> Type -> Element
def String
"ThrowStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String -> Type -> Element
def String
"SynchronizedStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"Expression",
String
"block"String -> Type -> FieldType
>: String -> Type
java String
"Block"],
String -> Type -> Element
def String
"TryStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"simple"String -> Type -> FieldType
>: String -> Type
java String
"TryStatement.Simple",
String
"withFinally"String -> Type -> FieldType
>: String -> Type
java String
"TryStatement.WithFinally",
String
"withResources"String -> Type -> FieldType
>: String -> Type
java String
"TryWithResourcesStatement"],
String -> Type -> Element
def String
"TryStatement.Simple" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"block"String -> Type -> FieldType
>: String -> Type
java String
"Block",
String
"catches"String -> Type -> FieldType
>: String -> Type
java String
"Catches"],
String -> Type -> Element
def String
"TryStatement.WithFinally" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"block"String -> Type -> FieldType
>: String -> Type
java String
"Block",
String
"catches"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Catches",
String
"finally"String -> Type -> FieldType
>: String -> Type
java String
"Finally"],
String -> Type -> Element
def String
"Catches" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"CatchClause",
String -> Type -> Element
def String
"CatchClause" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"parameter"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"CatchFormalParameter",
String
"block"String -> Type -> FieldType
>: String -> Type
java String
"Block"],
String -> Type -> Element
def String
"CatchFormalParameter" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableModifier",
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"CatchType",
String
"id"String -> Type -> FieldType
>: String -> Type
java String
"VariableDeclaratorId"],
String -> Type -> Element
def String
"CatchType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"UnannClassType",
String
"types"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ClassType"],
String -> Type -> Element
def String
"Finally" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Block",
String -> Type -> Element
def String
"TryWithResourcesStatement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"resourceSpecification"String -> Type -> FieldType
>: String -> Type
java String
"ResourceSpecification",
String
"block"String -> Type -> FieldType
>: String -> Type
java String
"Block",
String
"catches"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Catches",
String
"finally"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Finally"],
String -> Type -> Element
def String
"ResourceSpecification" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Resource",
String -> Type -> Element
def String
"Resource" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"local"String -> Type -> FieldType
>: String -> Type
java String
"Resource.Local",
String
"variable"String -> Type -> FieldType
>: String -> Type
java String
"VariableAccess"],
String -> Type -> Element
def String
"Resource.Local" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableModifier",
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"LocalVariableType",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier",
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"Expression"],
String -> Type -> Element
def String
"VariableAccess" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"expressionName"String -> Type -> FieldType
>: String -> Type
java String
"ExpressionName",
String
"fieldAccess"String -> Type -> FieldType
>: String -> Type
java String
"FieldAccess"],
String -> Type -> Element
def String
"Primary" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"noNewArray"String -> Type -> FieldType
>: String -> Type
java String
"PrimaryNoNewArray",
String
"arrayCreation"String -> Type -> FieldType
>: String -> Type
java String
"ArrayCreationExpression"],
String -> Type -> Element
def String
"PrimaryNoNewArray" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"literal"String -> Type -> FieldType
>: String -> Type
java String
"Literal",
String
"classLiteral"String -> Type -> FieldType
>: String -> Type
java String
"ClassLiteral",
String
"this"String -> Type -> FieldType
>: Type
unit,
String
"dotThis"String -> Type -> FieldType
>: String -> Type
java String
"TypeName",
String
"parens"String -> Type -> FieldType
>: String -> Type
java String
"Expression",
String
"classInstance"String -> Type -> FieldType
>: String -> Type
java String
"ClassInstanceCreationExpression",
String
"fieldAccess"String -> Type -> FieldType
>: String -> Type
java String
"FieldAccess",
String
"arrayAccess"String -> Type -> FieldType
>: String -> Type
java String
"ArrayAccess",
String
"methodInvocation"String -> Type -> FieldType
>: String -> Type
java String
"MethodInvocation",
String
"methodReference"String -> Type -> FieldType
>: String -> Type
java String
"MethodReference"],
String -> Type -> Element
def String
"ClassLiteral" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"TypeNameArray",
String
"numericType"String -> Type -> FieldType
>: String -> Type
java String
"NumericTypeArray",
String
"boolean"String -> Type -> FieldType
>: String -> Type
java String
"BooleanArray",
String
"void"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"TypeNameArray" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"simple"String -> Type -> FieldType
>: String -> Type
java String
"TypeName",
String
"array"String -> Type -> FieldType
>: String -> Type
java String
"TypeNameArray"],
String -> Type -> Element
def String
"NumericTypeArray" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"simple"String -> Type -> FieldType
>: String -> Type
java String
"NumericType",
String
"array"String -> Type -> FieldType
>: String -> Type
java String
"NumericTypeArray"],
String -> Type -> Element
def String
"BooleanArray" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"simple"String -> Type -> FieldType
>: Type
unit,
String
"array"String -> Type -> FieldType
>: String -> Type
java String
"BooleanArray"],
String -> Type -> Element
def String
"ClassInstanceCreationExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"qualifier"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ClassInstanceCreationExpression.Qualifier",
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"UnqualifiedClassInstanceCreationExpression"],
String -> Type -> Element
def String
"ClassInstanceCreationExpression.Qualifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"ExpressionName",
String
"primary"String -> Type -> FieldType
>: String -> Type
java String
"Primary"],
String -> Type -> Element
def String
"UnqualifiedClassInstanceCreationExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"typeArguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgument",
String
"classOrInterface"String -> Type -> FieldType
>: String -> Type
java String
"ClassOrInterfaceTypeToInstantiate",
String
"arguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String
"body"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ClassBody"],
String -> Type -> Element
def String
"ClassOrInterfaceTypeToInstantiate" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"identifiers"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"AnnotatedIdentifier",
String
"typeArguments"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgumentsOrDiamond"],
String -> Type -> Element
def String
"AnnotatedIdentifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"annotations"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"TypeArgumentsOrDiamond" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"arguments"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgument",
String
"diamond"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"FieldAccess" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"qualifier"String -> Type -> FieldType
>: String -> Type
java String
"FieldAccess.Qualifier",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"FieldAccess.Qualifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"primary"String -> Type -> FieldType
>: String -> Type
java String
"Primary",
String
"super"String -> Type -> FieldType
>: Type
unit,
String
"typed"String -> Type -> FieldType
>: String -> Type
java String
"TypeName"],
String -> Type -> Element
def String
"ArrayAccess" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"expression"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression",
String
"variant"String -> Type -> FieldType
>: String -> Type
java String
"ArrayAccess.Variant"],
String -> Type -> Element
def String
"ArrayAccess.Variant" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"name"String -> Type -> FieldType
>: String -> Type
java String
"ExpressionName",
String
"primary"String -> Type -> FieldType
>: String -> Type
java String
"PrimaryNoNewArray"],
String -> Type -> Element
def String
"MethodInvocation" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"header"String -> Type -> FieldType
>: String -> Type
java String
"MethodInvocation.Header",
String
"arguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression"],
String -> Type -> Element
def String
"MethodInvocation.Header" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"simple"String -> Type -> FieldType
>: String -> Type
java String
"MethodName",
String
"complex"String -> Type -> FieldType
>: String -> Type
java String
"MethodInvocation.Complex"],
String -> Type -> Element
def String
"MethodInvocation.Complex" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"variant"String -> Type -> FieldType
>: String -> Type
java String
"MethodInvocation.Variant",
String
"typeArguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgument",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"MethodInvocation.Variant" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"TypeName",
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"ExpressionName",
String
"primary"String -> Type -> FieldType
>: String -> Type
java String
"Primary",
String
"super"String -> Type -> FieldType
>: Type
unit,
String
"typeSuper"String -> Type -> FieldType
>: String -> Type
java String
"TypeName"],
String -> Type -> Element
def String
"MethodReference" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"MethodReference.Expression",
String
"primary"String -> Type -> FieldType
>: String -> Type
java String
"MethodReference.Primary",
String
"referenceType"String -> Type -> FieldType
>: String -> Type
javaString
"MethodReference.ReferenceType",
String
"super"String -> Type -> FieldType
>: String -> Type
java String
"MethodReference.Super",
String
"new"String -> Type -> FieldType
>: String -> Type
java String
"MethodReference.New",
String
"array"String -> Type -> FieldType
>: String -> Type
java String
"MethodReference.Array"],
String -> Type -> Element
def String
"MethodReference.Expression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"name"String -> Type -> FieldType
>: String -> Type
java String
"ExpressionName",
String
"typeArguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgument",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"MethodReference.Primary" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"primary"String -> Type -> FieldType
>: String -> Type
java String
"Primary",
String
"typeArguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgument",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"MethodReference.ReferenceType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"referenceType"String -> Type -> FieldType
>: String -> Type
java String
"ReferenceType",
String
"typeArguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgument",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"MethodReference.Super" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"typeArguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgument",
String
"identifier"String -> Type -> FieldType
>: String -> Type
java String
"Identifier",
String
"super"String -> Type -> FieldType
>: Type
boolean],
String -> Type -> Element
def String
"MethodReference.New" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"classType"String -> Type -> FieldType
>: String -> Type
java String
"ClassType",
String
"typeArguments"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"TypeArgument"],
String -> Type -> Element
def String
"MethodReference.Array" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ArrayType",
String -> Type -> Element
def String
"ArrayCreationExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"primitive"String -> Type -> FieldType
>: String -> Type
java String
"ArrayCreationExpression.Primitive",
String
"classOrInterface"String -> Type -> FieldType
>: String -> Type
java String
"ArrayCreationExpression.ClassOrInterface",
String
"primitiveArray"String -> Type -> FieldType
>: String -> Type
java String
"ArrayCreationExpression.PrimitiveArray",
String
"classOrInterfaceArray"String -> Type -> FieldType
>: String -> Type
java String
"ArrayCreationExpression.ClassOrInterfaceArray"],
String -> Type -> Element
def String
"ArrayCreationExpression.Primitive" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"PrimitiveTypeWithAnnotations",
String
"dimExprs"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"DimExpr",
String
"dims"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Dims"],
String -> Type -> Element
def String
"ArrayCreationExpression.ClassOrInterface" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"ClassOrInterfaceType",
String
"dimExprs"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"DimExpr",
String
"dims"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Dims"],
String -> Type -> Element
def String
"ArrayCreationExpression.PrimitiveArray" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"PrimitiveTypeWithAnnotations",
String
"dims"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Dims",
String
"array"String -> Type -> FieldType
>: String -> Type
java String
"ArrayInitializer"],
String -> Type -> Element
def String
"ArrayCreationExpression.ClassOrInterfaceArray" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"ClassOrInterfaceType",
String
"dims"String -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Dims",
String
"array"String -> Type -> FieldType
>: String -> Type
java String
"ArrayInitializer"],
String -> Type -> Element
def String
"DimExpr" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"annotations"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Annotation",
String
"expression"String -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression"],
String -> Type -> Element
def String
"Expression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"lambda"String -> Type -> FieldType
>: String -> Type
java String
"LambdaExpression",
String
"assignment"String -> Type -> FieldType
>: String -> Type
java String
"AssignmentExpression"],
String -> Type -> Element
def String
"LambdaExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"parameters"String -> Type -> FieldType
>: String -> Type
java String
"LambdaParameters",
String
"body"String -> Type -> FieldType
>: String -> Type
java String
"LambdaBody"],
String -> Type -> Element
def String
"LambdaParameters" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"tuple"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"LambdaParameters",
String
"single"String -> Type -> FieldType
>: String -> Type
java String
"Identifier"],
String -> Type -> Element
def String
"LambdaParameter" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"normal"String -> Type -> FieldType
>: String -> Type
java String
"LambdaParameter.Normal",
String
"variableArity"String -> Type -> FieldType
>: String -> Type
java String
"VariableArityParameter"],
String -> Type -> Element
def String
"LambdaParameter.Normal" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"modifiers"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"VariableModifier",
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"LambdaParameterType",
String
"id"String -> Type -> FieldType
>: String -> Type
java String
"VariableDeclaratorId"],
String -> Type -> Element
def String
"LambdaParameterType" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"UnannType",
String
"var"String -> Type -> FieldType
>: Type
unit],
String -> Type -> Element
def String
"LambdaBody" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"Expression",
String
"block"String -> Type -> FieldType
>: String -> Type
java String
"Block"],
String -> Type -> Element
def String
"AssignmentExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"conditional"String -> Type -> FieldType
>: String -> Type
java String
"ConditionalExpression",
String
"assignment"String -> Type -> FieldType
>: String -> Type
java String
"Assignment"],
String -> Type -> Element
def String
"Assignment" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"lhs"String -> Type -> FieldType
>: String -> Type
java String
"LeftHandSide",
String
"op"String -> Type -> FieldType
>: String -> Type
java String
"AssignmentOperator",
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"Expression"],
String -> Type -> Element
def String
"LeftHandSide" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"expressionName"String -> Type -> FieldType
>: String -> Type
java String
"ExpressionName",
String
"fieldAccess"String -> Type -> FieldType
>: String -> Type
java String
"FieldAccess",
String
"arrayAccess"String -> Type -> FieldType
>: String -> Type
java String
"ArrayAccess"],
String -> Type -> Element
def String
"AssignmentOperator" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [String] -> Type
enum [
String
"simple", String
"times", String
"div", String
"mod", String
"plus", String
"minus",
String
"shiftLeft", String
"shiftRight", String
"shiftRightZeroFill", String
"and", String
"xor", String
"or"],
String -> Type -> Element
def String
"ConditionalExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"simple"String -> Type -> FieldType
>: String -> Type
java String
"ConditionalOrExpression",
String
"ternaryCond"String -> Type -> FieldType
>: String -> Type
java String
"ConditionalExpression.TernaryCond",
String
"ternaryLambda"String -> Type -> FieldType
>: String -> Type
java String
"ConditionalExpression.TernaryLambda"],
String -> Type -> Element
def String
"ConditionalExpression.TernaryCond" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: String -> Type
java String
"ConditionalOrExpression",
String
"ifTrue"String -> Type -> FieldType
>: String -> Type
java String
"Expression",
String
"ifFalse"String -> Type -> FieldType
>: String -> Type
java String
"ConditionalExpression"],
String -> Type -> Element
def String
"ConditionalExpression.TernaryLambda" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"cond"String -> Type -> FieldType
>: String -> Type
java String
"ConditionalOrExpression",
String
"ifTrue"String -> Type -> FieldType
>: String -> Type
java String
"Expression",
String
"ifFalse"String -> Type -> FieldType
>: String -> Type
java String
"LambdaExpression"],
String -> Type -> Element
def String
"ConditionalOrExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ConditionalAndExpression",
String -> Type -> Element
def String
"ConditionalAndExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"InclusiveOrExpression",
String -> Type -> Element
def String
"InclusiveOrExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"ExclusiveOrExpression",
String -> Type -> Element
def String
"ExclusiveOrExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"AndExpression",
String -> Type -> Element
def String
"AndExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"EqualityExpression",
String -> Type -> Element
def String
"EqualityExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"unary"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression",
String
"equal"String -> Type -> FieldType
>: String -> Type
java String
"EqualityExpression.Binary",
String
"notEqual"String -> Type -> FieldType
>: String -> Type
java String
"EqualityExpression.Binary"],
String -> Type -> Element
def String
"EqualityExpression.Binary" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"lhs"String -> Type -> FieldType
>: String -> Type
java String
"EqualityExpression",
String
"rhs"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression"],
String -> Type -> Element
def String
"RelationalExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"simple"String -> Type -> FieldType
>: String -> Type
java String
"ShiftExpression",
String
"lessThan"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression.LessThan",
String
"greaterThan"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression.GreaterThan",
String
"lessThanEqual"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression.LessThanEqual",
String
"greaterThanEqual"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression.GreaterThanEqual",
String
"instanceof"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression.InstanceOf"],
String -> Type -> Element
def String
"RelationalExpression.LessThan" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"lhs"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression",
String
"rhs"String -> Type -> FieldType
>: String -> Type
java String
"ShiftExpression"],
String -> Type -> Element
def String
"RelationalExpression.GreaterThan" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"lhs"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression",
String
"rhs"String -> Type -> FieldType
>: String -> Type
java String
"ShiftExpression"],
String -> Type -> Element
def String
"RelationalExpression.LessThanEqual" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"lhs"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression",
String
"rhs"String -> Type -> FieldType
>: String -> Type
java String
"ShiftExpression"],
String -> Type -> Element
def String
"RelationalExpression.GreaterThanEqual" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"lhs"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression",
String
"rhs"String -> Type -> FieldType
>: String -> Type
java String
"ShiftExpression"],
String -> Type -> Element
def String
"RelationalExpression.InstanceOf" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"lhs"String -> Type -> FieldType
>: String -> Type
java String
"RelationalExpression",
String
"rhs"String -> Type -> FieldType
>: String -> Type
java String
"ReferenceType"],
String -> Type -> Element
def String
"ShiftExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"unary"String -> Type -> FieldType
>: String -> Type
java String
"AdditiveExpression",
String
"shiftLeft"String -> Type -> FieldType
>: String -> Type
java String
"ShiftExpression.Binary",
String
"shiftRight"String -> Type -> FieldType
>: String -> Type
java String
"ShiftExpression.Binary",
String
"shiftRightZeroFill"String -> Type -> FieldType
>: String -> Type
java String
"ShiftExpression.Binary"],
String -> Type -> Element
def String
"ShiftExpression.Binary" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"lhs"String -> Type -> FieldType
>: String -> Type
java String
"ShiftExpression",
String
"rhs"String -> Type -> FieldType
>: String -> Type
java String
"AdditiveExpression"],
String -> Type -> Element
def String
"AdditiveExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"unary"String -> Type -> FieldType
>: String -> Type
java String
"MultiplicativeExpression",
String
"plus"String -> Type -> FieldType
>: String -> Type
java String
"AdditiveExpression.Binary",
String
"minus"String -> Type -> FieldType
>: String -> Type
java String
"AdditiveExpression.Binary"],
String -> Type -> Element
def String
"AdditiveExpression.Binary" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"lhs"String -> Type -> FieldType
>: String -> Type
java String
"AdditiveExpression",
String
"rhs"String -> Type -> FieldType
>: String -> Type
java String
"MultiplicativeExpression"],
String -> Type -> Element
def String
"MultiplicativeExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"unary"String -> Type -> FieldType
>: String -> Type
java String
"UnaryExpression",
String
"times"String -> Type -> FieldType
>: String -> Type
java String
"MultiplicativeExpression.Binary",
String
"divide"String -> Type -> FieldType
>: String -> Type
java String
"MultiplicativeExpression.Binary",
String
"mod"String -> Type -> FieldType
>: String -> Type
java String
"MultiplicativeExpression.Binary"],
String -> Type -> Element
def String
"MultiplicativeExpression.Binary" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"lhs"String -> Type -> FieldType
>: String -> Type
java String
"MultiplicativeExpression",
String
"rhs"String -> Type -> FieldType
>: String -> Type
java String
"UnaryExpression"],
String -> Type -> Element
def String
"UnaryExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"preIncrement"String -> Type -> FieldType
>: String -> Type
java String
"PreIncrementExpression",
String
"preDecrement"String -> Type -> FieldType
>: String -> Type
java String
"PreDecrementExpression",
String
"plus"String -> Type -> FieldType
>: String -> Type
java String
"UnaryExpression",
String
"minus"String -> Type -> FieldType
>: String -> Type
java String
"UnaryExpression",
String
"other"String -> Type -> FieldType
>: String -> Type
java String
"UnaryExpressionNotPlusMinus"],
String -> Type -> Element
def String
"PreIncrementExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"UnaryExpression",
String -> Type -> Element
def String
"PreDecrementExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"UnaryExpression",
String -> Type -> Element
def String
"UnaryExpressionNotPlusMinus" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"postfix"String -> Type -> FieldType
>: String -> Type
java String
"PostfixExpression",
String
"tilde"String -> Type -> FieldType
>: String -> Type
java String
"UnaryExpression",
String
"not"String -> Type -> FieldType
>: String -> Type
java String
"UnaryExpression",
String
"cast"String -> Type -> FieldType
>: String -> Type
java String
"CastExpression"],
String -> Type -> Element
def String
"PostfixExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"primary"String -> Type -> FieldType
>: String -> Type
java String
"Primary",
String
"name"String -> Type -> FieldType
>: String -> Type
java String
"ExpressionName",
String
"postIncrement"String -> Type -> FieldType
>: String -> Type
java String
"PostIncrementExpression",
String
"postDecrement"String -> Type -> FieldType
>: String -> Type
java String
"PostDecrementExpression"],
String -> Type -> Element
def String
"PostIncrementExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"PostfixExpression",
String -> Type -> Element
def String
"PostDecrementExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"PostfixExpression",
String -> Type -> Element
def String
"CastExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
union [
String
"primitive"String -> Type -> FieldType
>: String -> Type
java String
"CastExpression.Primitive",
String
"notPlusMinus"String -> Type -> FieldType
>: String -> Type
java String
"CastExpression.NotPlusMinus",
String
"lambda"String -> Type -> FieldType
>: String -> Type
java String
"CastExpression.Lambda"],
String -> Type -> Element
def String
"CastExpression.Primitive" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"PrimitiveTypeWithAnnotations",
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"UnaryExpression"],
String -> Type -> Element
def String
"CastExpression.NotPlusMinus" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"refAndBounds"String -> Type -> FieldType
>: String -> Type
java String
"CastExpression.RefAndBounds",
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"UnaryExpression"],
String -> Type -> Element
def String
"CastExpression.Lambda" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"refAndBounds"String -> Type -> FieldType
>: String -> Type
java String
"CastExpression.RefAndBounds",
String
"expression"String -> Type -> FieldType
>: String -> Type
java String
"LambdaExpression"],
String -> Type -> Element
def String
"CastExpression.RefAndBounds" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [FieldType] -> Type
record [
String
"type"String -> Type -> FieldType
>: String -> Type
java String
"ReferenceType",
String
"bounds"String -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"AdditionalBound"],
String -> Type -> Element
def String
"ConstantExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ String -> Type
java String
"Expression"]