blob: 445139f7fcabab0acfe5e48945a7a67dcd897946 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="gastm"
nsURI="http://www.eclipse.org/MoDisco/GASTM/1.0.Beta2/gastm" nsPrefix="gastm">
<eClassifiers xsi:type="ecore:EClass" name="GASTMObject"/>
<eClassifiers xsi:type="ecore:EClass" name="GASTMSourceObject" abstract="true" eSuperTypes="#//GASTMObject"/>
<eClassifiers xsi:type="ecore:EClass" name="GASTMSemanticObject" abstract="true"
eSuperTypes="#//GASTMObject"/>
<eClassifiers xsi:type="ecore:EClass" name="GASTMSyntaxObject" abstract="true" eSuperTypes="#//GASTMObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="locationInfo" lowerBound="1"
eType="#//SourceLocation" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="preProcessorElements" upperBound="-1"
eType="#//PreprocessorElement" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
eType="#//AnnotationExpression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SourceFile" eSuperTypes="#//GASTMSourceObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SourceLocation" eSuperTypes="#//GASTMSourceObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="startLine" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="startPosition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="endLine" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="endPosition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="inSourceFile" lowerBound="1"
eType="#//SourceFile" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CompilationUnit" eSuperTypes="#//SourceFile">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="language" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="fragments" upperBound="-1"
eType="#//DefinitionObject" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="opensScope" eType="#//ProgramScope"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SourceFileReference" eSuperTypes="#//SourceFile">
<eStructuralFeatures xsi:type="ecore:EReference" name="locationInfo" lowerBound="1"
eType="#//SourceLocation" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="ofSourceFile" lowerBound="1"
eType="#//SourceFile"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Project" eSuperTypes="#//GASTMSemanticObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="files" lowerBound="1" upperBound="-1"
eType="#//CompilationUnit" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="outerScope" eType="#//GlobalScope"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Scope" eSuperTypes="#//GASTMSemanticObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="definitionObject" upperBound="-1"
eType="#//DefinitionObject" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="childScope" upperBound="-1"
eType="#//Scope"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProgramScope" eSuperTypes="#//Scope"/>
<eClassifiers xsi:type="ecore:EClass" name="FunctionScope" eSuperTypes="#//Scope"/>
<eClassifiers xsi:type="ecore:EClass" name="AggregateScope" eSuperTypes="#//Scope"/>
<eClassifiers xsi:type="ecore:EClass" name="BlockScope" eSuperTypes="#//Scope"/>
<eClassifiers xsi:type="ecore:EClass" name="GlobalScope" eSuperTypes="#//Scope"/>
<eClassifiers xsi:type="ecore:EClass" name="PreprocessorElement" abstract="true"
eSuperTypes="#//GASTMSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="DefinitionObject" abstract="true" eSuperTypes="#//GASTMSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="Type" abstract="true" eSuperTypes="#//GASTMSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isConst" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Expression" abstract="true" eSuperTypes="#//GASTMSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="expressionType" lowerBound="1"
eType="#//TypeReference"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Statement" abstract="true" eSuperTypes="#//GASTMSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="MinorSyntaxObject" abstract="true" eSuperTypes="#//GASTMSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="Dimension" eSuperTypes="#//MinorSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="lowBound" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="highBound" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Name" eSuperTypes="#//MinorSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="nameString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SwitchCase" eSuperTypes="#//MinorSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isEvaluateAllCases" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" lowerBound="1" upperBound="-1"
eType="#//Statement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CatchBlock" eSuperTypes="#//MinorSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="body" lowerBound="1" eType="#//Statement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UnaryOperator" abstract="true" eSuperTypes="#//MinorSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="BinaryOperator" abstract="true" eSuperTypes="#//MinorSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="StorageSpecification" abstract="true"
eSuperTypes="#//MinorSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="VirtualSpecification" abstract="true"
eSuperTypes="#//MinorSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="AccessKind" eSuperTypes="#//MinorSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="ActualParameter" abstract="true" eSuperTypes="#//MinorSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="FunctionMemberAttributes" eSuperTypes="#//MinorSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isFriend" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isInLine" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isThisConst" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="virtualSpecifier" lowerBound="1"
eType="#//VirtualSpecification" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DerivesFrom" eSuperTypes="#//MinorSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="virtualSpecifier" eType="#//VirtualSpecification"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="accessKind" lowerBound="1"
eType="#//AccessKind" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="className" lowerBound="1"
eType="#//NamedTypeReference" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MemberObject" eSuperTypes="#//MinorSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="offset" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="member" lowerBound="1"
eType="#//DefinitionObject" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeclarationOrDefinition" abstract="true"
eSuperTypes="#//DefinitionObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="storageSpecifiers" lowerBound="1"
eType="#//StorageSpecification" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="accessKind" lowerBound="1"
eType="#//AccessKind" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="linkageSpecifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypeDefinition" eSuperTypes="#//DefinitionObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="typeName" lowerBound="1"
eType="#//Name" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NameSpaceDefinition" eSuperTypes="#//DefinitionObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="nameSpace" lowerBound="1"
eType="#//Name" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" lowerBound="1" upperBound="-1"
eType="#//DefinitionObject" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="nameSpaceType" lowerBound="1"
eType="#//NameSpaceType" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LabelDefinition" eSuperTypes="#//DefinitionObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="labelName" lowerBound="1"
eType="#//Name" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="labelType" lowerBound="1"
eType="#//LabelType" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypeDeclaration" eSuperTypes="#//DefinitionObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="typeRef" lowerBound="1"
eType="#//TypeReference" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Definition" abstract="true" eSuperTypes="#//DeclarationOrDefinition">
<eStructuralFeatures xsi:type="ecore:EReference" name="identifierName" lowerBound="1"
eType="#//Name" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="definitionType" eType="#//TypeReference"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Declaration" abstract="true" eSuperTypes="#//DeclarationOrDefinition">
<eStructuralFeatures xsi:type="ecore:EReference" name="defRef" lowerBound="1"
eType="#//Definition"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="identifierName" eType="#//Name"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="declarationType" lowerBound="1"
eType="#//TypeReference" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionDefinition" eSuperTypes="#//Definition">
<eStructuralFeatures xsi:type="ecore:EReference" name="returnType" eType="#//TypeReference"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="formalParameters" upperBound="-1"
eType="#//FormalParameterDefinition" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" upperBound="-1" eType="#//Statement"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="functionMemberAttributes"
eType="#//FunctionMemberAttributes" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="opensScope" lowerBound="1"
eType="#//FunctionScope"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EntryDefinition" eSuperTypes="#//Definition">
<eStructuralFeatures xsi:type="ecore:EReference" name="formalParameters" upperBound="-1"
eType="#//FormalParameterDefinition" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" upperBound="-1" eType="#//Statement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DataDefinition" abstract="true" eSuperTypes="#//Definition">
<eStructuralFeatures xsi:type="ecore:EReference" name="initialValue" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isMutable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EnumLiteralDefinition" eSuperTypes="#//Definition">
<eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionDeclaration" eSuperTypes="#//Declaration">
<eStructuralFeatures xsi:type="ecore:EReference" name="formalParameters" upperBound="-1"
eType="#//FormalParameterDeclaration" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="functionMemberAttributes"
eType="#//FunctionMemberAttributes" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VariableDeclaration" eSuperTypes="#//Declaration">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isMutable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"
defaultValueLiteral="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FormalParameterDeclaration" eSuperTypes="#//Declaration"/>
<eClassifiers xsi:type="ecore:EClass" name="External" eSuperTypes="#//StorageSpecification"/>
<eClassifiers xsi:type="ecore:EClass" name="FunctionPersistent" eSuperTypes="#//StorageSpecification"/>
<eClassifiers xsi:type="ecore:EClass" name="FileLocal" eSuperTypes="#//StorageSpecification"/>
<eClassifiers xsi:type="ecore:EClass" name="PerClassMember" eSuperTypes="#//StorageSpecification"/>
<eClassifiers xsi:type="ecore:EClass" name="NoDef" eSuperTypes="#//StorageSpecification"/>
<eClassifiers xsi:type="ecore:EClass" name="Virtual" eSuperTypes="#//VirtualSpecification"/>
<eClassifiers xsi:type="ecore:EClass" name="VariableDefinition" eSuperTypes="#//DataDefinition"/>
<eClassifiers xsi:type="ecore:EClass" name="FormalParameterDefinition" eSuperTypes="#//DataDefinition"/>
<eClassifiers xsi:type="ecore:EClass" name="BitFieldDefinition" eSuperTypes="#//DataDefinition">
<eStructuralFeatures xsi:type="ecore:EReference" name="bitFieldSize" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedTypeDefinition" eSuperTypes="#//TypeDefinition">
<eStructuralFeatures xsi:type="ecore:EReference" name="definitionType" lowerBound="1"
eType="#//NamedType" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AggregateTypeDefinition" eSuperTypes="#//TypeDefinition">
<eStructuralFeatures xsi:type="ecore:EReference" name="aggregateType" lowerBound="1"
eType="#//AggregateType" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EnumTypeDefinition" eSuperTypes="#//TypeDefinition">
<eStructuralFeatures xsi:type="ecore:EReference" name="definitionType" lowerBound="1"
eType="#//EnumType" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AggregateTypeDeclaration" eSuperTypes="#//TypeDeclaration"/>
<eClassifiers xsi:type="ecore:EClass" name="EnumTypeDeclaration" eSuperTypes="#//TypeDeclaration"/>
<eClassifiers xsi:type="ecore:EClass" name="IncludeUnit" eSuperTypes="#//PreprocessorElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="file" lowerBound="1" eType="#//SourceFileReference"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MacroCall" eSuperTypes="#//PreprocessorElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" lowerBound="1"
eType="#//MacroDefinition" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MacroDefinition" eSuperTypes="#//PreprocessorElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="macroName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//PreprocessorElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionType" eSuperTypes="#//Type">
<eStructuralFeatures xsi:type="ecore:EReference" name="returnType" eType="#//TypeReference"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameterTypes" upperBound="-1"
eType="#//FormalParameterType" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DataType" abstract="true" eSuperTypes="#//Type"/>
<eClassifiers xsi:type="ecore:EClass" name="LabelType" eSuperTypes="#//Type"/>
<eClassifiers xsi:type="ecore:EClass" name="NameSpaceType" eSuperTypes="#//Type"/>
<eClassifiers xsi:type="ecore:EClass" name="TypeReference" abstract="true" eSuperTypes="#//Type"/>
<eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" abstract="true" eSuperTypes="#//DataType"/>
<eClassifiers xsi:type="ecore:EClass" name="EnumType" eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="enumLiterals" lowerBound="1"
upperBound="-1" eType="#//EnumLiteralDefinition" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConstructedType" abstract="true" eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="baseType" lowerBound="1"
eType="#//TypeReference" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AggregateType" abstract="true" eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="members" lowerBound="1"
upperBound="-1" eType="#//MemberObject" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="opensScope" lowerBound="1"
eType="#//AggregateScope"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExceptionType" eSuperTypes="#//DataType"/>
<eClassifiers xsi:type="ecore:EClass" name="FormalParameterType" abstract="true"
eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//TypeReference"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedType" eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="body" lowerBound="1" eType="#//Type"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NumberType" abstract="true" eSuperTypes="#//PrimitiveType">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSigned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Void" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="Boolean" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="IntegralType" abstract="true" eSuperTypes="#//NumberType">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="size" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RealType" abstract="true" eSuperTypes="#//NumberType">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="precision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Byte" eSuperTypes="#//NumberType"/>
<eClassifiers xsi:type="ecore:EClass" name="Character" eSuperTypes="#//NumberType"/>
<eClassifiers xsi:type="ecore:EClass" name="ShortInteger" eSuperTypes="#//IntegralType"/>
<eClassifiers xsi:type="ecore:EClass" name="Integer" eSuperTypes="#//IntegerLiteral"/>
<eClassifiers xsi:type="ecore:EClass" name="LongInteger" eSuperTypes="#//IntegralType"/>
<eClassifiers xsi:type="ecore:EClass" name="Real" eSuperTypes="#//RealType"/>
<eClassifiers xsi:type="ecore:EClass" name="Double" eSuperTypes="#//RealType"/>
<eClassifiers xsi:type="ecore:EClass" name="LongDouble" eSuperTypes="#//RealType"/>
<eClassifiers xsi:type="ecore:EClass" name="CollectionType" eSuperTypes="#//ConstructedType"/>
<eClassifiers xsi:type="ecore:EClass" name="PointerType" eSuperTypes="#//ConstructedType">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="size" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReferenceType" eSuperTypes="#//ConstructedType"/>
<eClassifiers xsi:type="ecore:EClass" name="RangeType" eSuperTypes="#//ConstructedType"/>
<eClassifiers xsi:type="ecore:EClass" name="ArrayType" eSuperTypes="#//ConstructedType">
<eStructuralFeatures xsi:type="ecore:EReference" name="ranks" lowerBound="1" upperBound="-1"
eType="#//Dimension" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StructureType" eSuperTypes="#//AggregateType"/>
<eClassifiers xsi:type="ecore:EClass" name="UnionType" eSuperTypes="#//AggregateType"/>
<eClassifiers xsi:type="ecore:EClass" name="ClassType" eSuperTypes="#//AggregateType">
<eStructuralFeatures xsi:type="ecore:EReference" name="derivesFrom" upperBound="-1"
eType="#//DerivesFrom" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AnnotationType" eSuperTypes="#//AggregateType"/>
<eClassifiers xsi:type="ecore:EClass" name="ByValueFormalParameterType" eSuperTypes="#//FormalParameterType"/>
<eClassifiers xsi:type="ecore:EClass" name="ByReferenceFormalParameterType" eSuperTypes="#//FormalParameterType"/>
<eClassifiers xsi:type="ecore:EClass" name="Public" eSuperTypes="#//AccessKind"/>
<eClassifiers xsi:type="ecore:EClass" name="Protected" eSuperTypes="#//AccessKind"/>
<eClassifiers xsi:type="ecore:EClass" name="Private" eSuperTypes="#//AccessKind"/>
<eClassifiers xsi:type="ecore:EClass" name="UnnamedTypeReference" eSuperTypes="#//TypeReference">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//Type"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedTypeReference" eSuperTypes="#//TypeReference">
<eStructuralFeatures xsi:type="ecore:EReference" name="typeName" lowerBound="1"
eType="#//Name" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//TypeDefinition"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExpressionStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="expression" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="JumpStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BreakStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//LabelAccess"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ContinueStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//LabelAccess"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LabeledStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="label" lowerBound="1" eType="#//LabelDefinition"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="statement" eType="#//Statement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BlockStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="subStatements" upperBound="-1"
eType="#//Statement" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="opensScope" lowerBound="1"
eType="#//BlockScope"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EmptyStatement" eSuperTypes="#//Statement"/>
<eClassifiers xsi:type="ecore:EClass" name="IfStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" lowerBound="1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="thenBody" lowerBound="1"
eType="#//Statement" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="elseBody" eType="#//Statement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SwitchStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="switchExpression" lowerBound="1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="cases" lowerBound="1" eType="#//SwitchCase"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReturnStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="returnValue" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LoopStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" lowerBound="1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" lowerBound="1" eType="#//Statement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TryStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="guardedStatement" lowerBound="1"
eType="#//Statement" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="catchBlocks" upperBound="-1"
eType="#//CatchBlock" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="finalStatement" eType="#//Statement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeclarationOrDefinitionStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="declOrDefn" lowerBound="1"
eType="#//DefinitionObject" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ThrowStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="exception" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeleteStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="operand" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TerminateStatement" eSuperTypes="#//Statement"/>
<eClassifiers xsi:type="ecore:EClass" name="CaseBlock" eSuperTypes="#//SwitchCase">
<eStructuralFeatures xsi:type="ecore:EReference" name="caseExpressions" lowerBound="1"
upperBound="-1" eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DefaultBlock" eSuperTypes="#//SwitchCase"/>
<eClassifiers xsi:type="ecore:EClass" name="WhileStatement" eSuperTypes="#//LoopStatement"/>
<eClassifiers xsi:type="ecore:EClass" name="DoWhileStatement" eSuperTypes="#//LoopStatement"/>
<eClassifiers xsi:type="ecore:EClass" name="ForStatement" abstract="true" eSuperTypes="#//LoopStatement">
<eStructuralFeatures xsi:type="ecore:EReference" name="initBody" upperBound="-1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="iterationBody" upperBound="-1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ForCheckBeforeStatement" eSuperTypes="#//ForStatement"/>
<eClassifiers xsi:type="ecore:EClass" name="ForCheckAfterStatement" eSuperTypes="#//ForStatement"/>
<eClassifiers xsi:type="ecore:EClass" name="TypesCatchBlock" eSuperTypes="#//CatchBlock">
<eStructuralFeatures xsi:type="ecore:EReference" name="exceptions" lowerBound="1"
upperBound="-1" eType="#//Type" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VariableCatchBlock" eSuperTypes="#//CatchBlock">
<eStructuralFeatures xsi:type="ecore:EReference" name="exceptionVariable" lowerBound="1"
eType="#//DataDefinition" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Literal" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CastExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="castType" lowerBound="1"
eType="#//TypeReference" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="expression" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AggregateExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="subExpressions" upperBound="-1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UnaryExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="operator" lowerBound="1"
eType="#//UnaryOperator" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="operand" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BinaryExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="operator" lowerBound="1"
eType="#//BinaryOperator" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" lowerBound="1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="rightOperand" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConditionalExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" lowerBound="1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="onTrueOperand" lowerBound="1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="onFalseOperand" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RangeExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="fromExpression" lowerBound="1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="toExpression" lowerBound="1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionCallExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="calledFunction" lowerBound="1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="actualParams" upperBound="-1"
eType="#//ActualParameter" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NewExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="newType" lowerBound="1"
eType="#//TypeReference" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="actualParams" upperBound="-1"
eType="#//ActualParameter" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NameReference" abstract="true" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="name" lowerBound="1" eType="#//Name"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" lowerBound="1"
eType="#//DefinitionObject" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LabelAccess" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="labelName" lowerBound="1"
eType="#//Name" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="labelDefinition" lowerBound="1"
eType="#//LabelDefinition"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ArrayAccess" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="arrayName" lowerBound="1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="subscripts" lowerBound="1"
upperBound="-1" eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AnnotationExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="annotationType" eType="#//TypeReference"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="memberValues" upperBound="-1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CollectionExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="expressionList" upperBound="-1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="IdentifierReference" eSuperTypes="#//NameReference"/>
<eClassifiers xsi:type="ecore:EClass" name="QualifiedIdentifierReference" abstract="true"
eSuperTypes="#//NameReference">
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifiers" lowerBound="1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="member" lowerBound="1"
eType="#//IdentifierReference" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypeQualifiedIdentifierReference" eSuperTypes="#//NameReference">
<eStructuralFeatures xsi:type="ecore:EReference" name="aggregateType" lowerBound="1"
upperBound="-1" eType="#//TypeReference" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="member" lowerBound="1"
eType="#//IdentifierReference" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="QualifiedOverPointer" eSuperTypes="#//QualifiedIdentifierReference"/>
<eClassifiers xsi:type="ecore:EClass" name="QualifiedOverData" eSuperTypes="#//QualifiedIdentifierReference"/>
<eClassifiers xsi:type="ecore:EClass" name="IntegerLiteral" eSuperTypes="#//Literal"/>
<eClassifiers xsi:type="ecore:EClass" name="CharLiteral" eSuperTypes="#//Literal"/>
<eClassifiers xsi:type="ecore:EClass" name="RealLiteral" eSuperTypes="#//Literal"/>
<eClassifiers xsi:type="ecore:EClass" name="StringLiteral" eSuperTypes="#//Literal"/>
<eClassifiers xsi:type="ecore:EClass" name="BooleanLiteral" eSuperTypes="#//Literal"/>
<eClassifiers xsi:type="ecore:EClass" name="BitLiteral" eSuperTypes="#//Literal"/>
<eClassifiers xsi:type="ecore:EClass" name="EnumLiteral" eSuperTypes="#//Literal"/>
<eClassifiers xsi:type="ecore:EClass" name="UnaryPlus" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="UnaryMinus" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Not" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="BitNot" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="AddressOf" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Deref" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Increment" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Decrement" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="PostIncrement" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="PostDecrement" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Add" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Subtract" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Multiply" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Divide" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Modulus" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Exponent" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="And" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Or" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Equal" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="NotEqual" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Greater" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="NotGreater" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Less" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="NotLess" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="BitAnd" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="BitOr" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="BitXor" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="BitLeftShift" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="BitRightShift" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Assign" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="OperatorAssign" eSuperTypes="#//BinaryOperator">
<eStructuralFeatures xsi:type="ecore:EReference" name="operator" lowerBound="1"
eType="#//BinaryOperator" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActualParameterExpression" abstract="true"
eSuperTypes="#//ActualParameter">
<eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MissingActualParameter" eSuperTypes="#//ActualParameter"/>
<eClassifiers xsi:type="ecore:EClass" name="ByValueActualParameterExpression" eSuperTypes="#//ActualParameterExpression"/>
<eClassifiers xsi:type="ecore:EClass" name="ByReferenceActualParameterExpression"
eSuperTypes="#//ActualParameterExpression"/>
</ecore:EPackage>