blob: f4794d983af72943d8022498ed698866625dbbe3 [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="astm" nsURI="http://cs2as/tests/delphi/AS/1.0" nsPrefix="astm">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
<details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
<details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
</eAnnotations>
<eClassifiers xsi:type="ecore:EClass" name="DelphiUnit" eSuperTypes="#//CompilationUnit">
<eStructuralFeatures xsi:type="ecore:EReference" name="name" eType="#//Name" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//DelphiInterfaceSection"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="implementation" eType="#//DelphiImplementationSection"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DelphiInterfaceSection" eSuperTypes="#//CompilationUnit">
<eStructuralFeatures xsi:type="ecore:EReference" name="uses" upperBound="-1" eType="#//NamedTypeReference"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DelphiImplementationSection" eSuperTypes="#//CompilationUnit">
<eStructuralFeatures xsi:type="ecore:EReference" name="uses" upperBound="-1" eType="#//NamedTypeReference"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="exports" upperBound="-1"
eType="#//NamedTypeReference" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DelphiBlockStatement" eSuperTypes="#//BlockStatement">
<eStructuralFeatures xsi:type="ecore:EReference" name="exports" upperBound="-1"
eType="#//NamedTypeReference" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="declarations" upperBound="-1"
eType="#//DefinitionObject" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DelphiFunctionCallExpression" eSuperTypes="#//FunctionCallExpression">
<eStructuralFeatures xsi:type="ecore:EReference" name="applyTo" eType="#//DefinitionObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DelphiWithStatement" eSuperTypes="#//BlockStatement">
<eStructuralFeatures xsi:type="ecore:EReference" name="withs" upperBound="-1"
eType="#//DefinitionObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GASTMObject" eSuperTypes="#//Visitable"/>
<eClassifiers xsi:type="ecore:EClass" name="GASTMSourceObject" abstract="true" eSuperTypes="#//Visitable"/>
<eClassifiers xsi:type="ecore:EClass" name="GASTMSemanticObject" abstract="true"
eSuperTypes="#//Visitable"/>
<eClassifiers xsi:type="ecore:EClass" name="OtherSyntaxObject" abstract="true" eSuperTypes="#//GASTMSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="StorageSpecification" abstract="true"
eSuperTypes="#//Visitable"/>
<eClassifiers xsi:type="ecore:EClass" name="DataType" abstract="true" eSuperTypes="#//Type"/>
<eClassifiers xsi:type="ecore:EClass" name="AccessKind" eSuperTypes="#//Visitable"/>
<eClassifiers xsi:type="ecore:EClass" name="UnaryOperator" abstract="true" eSuperTypes="#//Operator"/>
<eClassifiers xsi:type="ecore:EClass" name="BinaryOperator" abstract="true" eSuperTypes="#//Operator"/>
<eClassifiers xsi:type="ecore:EClass" name="ActualParameter" abstract="true" eSuperTypes="#//Visitable"/>
<eClassifiers xsi:type="ecore:EClass" name="SourceFile" eSuperTypes="#//GASTMSourceObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="pathName" 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#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="startColumn" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="endLine" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="endColumn" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="inSourceFile" eType="#//SourceFile"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Project" eSuperTypes="#//GASTMSemanticObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="files" upperBound="-1"
eType="#//CompilationUnit" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="outerScope" eType="#//GlobalScope"
containment="true"/>
</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" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GASTMSyntaxObject" abstract="true" eSuperTypes="#//GASTMObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="locationInfo" 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="CompilationUnit" eSuperTypes="#//OtherSyntaxObject">
<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"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Name" eSuperTypes="#//OtherSyntaxObject">
<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="DeclarationOrDefinition" abstract="true"
eSuperTypes="#//DefinitionObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isRegister" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="linkageSpecifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="storageSpecifiers" eType="#//OtherSyntaxObject"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="accessKind" eType="#//OtherSyntaxObject"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Definition" abstract="true" eSuperTypes="#//DeclarationOrDefinition">
<eStructuralFeatures xsi:type="ecore:EReference" name="identifierName" 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" eType="#//Definition"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="identifierName" eType="#//Name"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="declarationType" eType="#//TypeReference"
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"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="returnType" eType="#//TypeReference"
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#//EBoolean"/>
</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" eType="#//FunctionScope"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionMemberAttributes" eSuperTypes="#//Visitable">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isFriend" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isInline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isThisConst" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="virtualSpecifier" eType="#//VirtualSpecification"
containment="true"/>
</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:EAttribute" name="isMutable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="initialValue" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BitFieldDefinition" eSuperTypes="#//DataDefinition">
<eStructuralFeatures xsi:type="ecore:EReference" name="bitFieldSize" eType="#//Expression"
containment="true"/>
</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="TypeDefinition" eSuperTypes="#//DefinitionObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="name" eType="#//Name" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedTypeDefinition" eSuperTypes="#//TypeDefinition">
<eStructuralFeatures xsi:type="ecore:EReference" name="definitionType" eType="#//NamedType"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AggregateTypeDefinition" eSuperTypes="#//TypeDefinition">
<eStructuralFeatures xsi:type="ecore:EReference" name="aggregateType" eType="#//AggregateType"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NameSpaceDefinition" eSuperTypes="#//DefinitionObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="nameSpace" eType="#//Name"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" upperBound="-1" eType="#//DefinitionObject"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="nameSpaceType" eType="#//NameSpaceType"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LabelDefinition" eSuperTypes="#//DefinitionObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="labelName" eType="#//Name"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="labelType" eType="#//LabelType"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="IncludeUnit" eSuperTypes="#//PreprocessorElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="file" eType="#//SourceFile"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MacroCall" eSuperTypes="#//PreprocessorElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" 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="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<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#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isVolatile" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" abstract="true" eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSigned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EnumType" eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="enumLiterals" 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" eType="#//TypeReference"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AggregateType" abstract="true" eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="members" upperBound="-1"
eType="#//DefinitionObject" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="opensScope" eType="#//AggregateScope"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ArrayType" eSuperTypes="#//ConstructedType">
<eStructuralFeatures xsi:type="ecore:EReference" name="ranks" upperBound="-1"
eType="#//Dimension" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Dimension" eSuperTypes="#//OtherSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="lowBound" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="highBound" eType="#//Expression"
containment="true"/>
</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="FormalParameterType" abstract="true"
eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//TypeReference"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedType" eSuperTypes="#//DataType">
<eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Type" containment="true"/>
</eClassifiers>
<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="DerivesFrom" eSuperTypes="#//OtherSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isVirtual" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="accessKind" eType="#//OtherSyntaxObject"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="className" eType="#//NamedType"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UnnamedTypeReference" eSuperTypes="#//TypeReference">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//Type" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedTypeReference" eSuperTypes="#//TypeReference">
<eStructuralFeatures xsi:type="ecore:EReference" name="name" eType="#//Name" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//TypeDefinition"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeleteStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="operand" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeclarationOrDefinitionStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="declOrDefn" eType="#//DefinitionObject"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExpressionStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="JumpStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="target" 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" 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" eType="#//BlockScope"
containment="true"/>
</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" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="thenBody" 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" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="cases" upperBound="-1"
eType="#//SwitchCase" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SwitchCase" eSuperTypes="#//OtherSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="body" upperBound="-1" eType="#//Statement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CaseBlock" eSuperTypes="#//SwitchCase">
<eStructuralFeatures xsi:type="ecore:EReference" name="caseExpressions" upperBound="-1"
eType="#//Expression" containment="true"/>
</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" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Statement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ForStatement" abstract="true" eSuperTypes="#//LoopStatement">
<eStructuralFeatures xsi:type="ecore:EReference" name="initBody" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="iterationBody" upperBound="-1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TryStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="guardedStatement" 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="CatchBlock" eSuperTypes="#//OtherSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Statement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypesCatchBlock" eSuperTypes="#//CatchBlock">
<eStructuralFeatures xsi:type="ecore:EReference" name="exceptions" upperBound="-1"
eType="#//Type" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VariableCatchBlock" eSuperTypes="#//CatchBlock">
<eStructuralFeatures xsi:type="ecore:EReference" name="exceptionVariable" eType="#//DataDefinition"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ThrowStatement" eSuperTypes="#//Statement">
<eStructuralFeatures xsi:type="ecore:EReference" name="exception" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Expression" abstract="true" eSuperTypes="#//GASTMSyntaxObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="expressionType" eType="#//TypeReference"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NameReference" abstract="true" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="name" eType="#//Name" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" eType="#//DefinitionObject"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ArrayAccess" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="arrayName" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="subscripts" upperBound="-1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="QualifiedIdentifierReference" abstract="true"
eSuperTypes="#//NameReference">
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifiers" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="member" eType="#//IdentifierReference"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypeQualifiedIdentifierReference" eSuperTypes="#//NameReference">
<eStructuralFeatures xsi:type="ecore:EReference" name="aggregateType" upperBound="-1"
eType="#//TypeReference" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="member" eType="#//IdentifierReference"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Literal" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" 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" eType="#//TypeReference"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UnaryExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="operator" eType="#//OtherSyntaxObject"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="operand" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BinaryExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="operator" eType="#//OtherSyntaxObject"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="rightOperand" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OperatorAssign" eSuperTypes="#//BinaryOperator">
<eStructuralFeatures xsi:type="ecore:EReference" name="operator" eType="#//OtherSyntaxObject"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConditionalExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="onTrueOperand" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="onFalseOperand" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RangeExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="fromExpression" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="toExpression" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionCallExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="calledFunction" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="actualParams" upperBound="-1"
eType="#//ActualParameter" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActualParameterExpression" eSuperTypes="#//ActualParameter">
<eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NewExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="newType" eType="#//TypeReference"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="actualParams" upperBound="-1"
eType="#//OtherSyntaxObject" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LabelAccess" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="name" eType="#//Name" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="definition" eType="#//LabelDefinition"
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="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="ProgramScope" eSuperTypes="#//Scope"/>
<eClassifiers xsi:type="ecore:EClass" name="TypeReference" abstract="true" eSuperTypes="#//Type"/>
<eClassifiers xsi:type="ecore:EClass" name="Statement" abstract="true" eSuperTypes="#//GASTMSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="FunctionScope" eSuperTypes="#//Scope"/>
<eClassifiers xsi:type="ecore:EClass" name="NameSpaceType" eSuperTypes="#//Type"/>
<eClassifiers xsi:type="ecore:EClass" name="LabelType" eSuperTypes="#//Type"/>
<eClassifiers xsi:type="ecore:EClass" name="AggregateScope" eSuperTypes="#//Scope"/>
<eClassifiers xsi:type="ecore:EClass" name="BlockScope" eSuperTypes="#//Scope"/>
<eClassifiers xsi:type="ecore:EClass" name="IdentifierReference" eSuperTypes="#//NameReference"/>
<eClassifiers xsi:type="ecore:EClass" name="FormalParameterDefinition" eSuperTypes="#//DataDefinition"/>
<eClassifiers xsi:type="ecore:EClass" name="VirtualSpecification" abstract="true"
eSuperTypes="#//OtherSyntaxObject"/>
<eClassifiers xsi:type="ecore:EClass" name="FormalParameterDeclaration" eSuperTypes="#//Declaration"/>
<eClassifiers xsi:type="ecore:EClass" name="VariableDefinition" eSuperTypes="#//DataDefinition"/>
<eClassifiers xsi:type="ecore:EClass" name="FunctionMemberAttribute" eSuperTypes="#//OtherSyntaxObject"/>
<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="PureVirtual" eSuperTypes="#//VirtualSpecification"/>
<eClassifiers xsi:type="ecore:EClass" name="NonVirtual" eSuperTypes="#//VirtualSpecification"/>
<eClassifiers xsi:type="ecore:EClass" name="ExceptionType" eSuperTypes="#//DataType"/>
<eClassifiers xsi:type="ecore:EClass" name="Void" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="Byte" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="ShortInteger" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="Integer" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="LongInteger" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="Float" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="Double" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="LongDouble" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="Character" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="String" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="Boolean" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="WideCharacter" eSuperTypes="#//PrimitiveType"/>
<eClassifiers xsi:type="ecore:EClass" name="CollectionType" eSuperTypes="#//ConstructedType"/>
<eClassifiers xsi:type="ecore:EClass" name="PointerType" eSuperTypes="#//ConstructedType"/>
<eClassifiers xsi:type="ecore:EClass" name="ReferenceType" eSuperTypes="#//ConstructedType"/>
<eClassifiers xsi:type="ecore:EClass" name="RangeType" eSuperTypes="#//ConstructedType"/>
<eClassifiers xsi:type="ecore:EClass" name="StructureType" eSuperTypes="#//AggregateType"/>
<eClassifiers xsi:type="ecore:EClass" name="UnionType" eSuperTypes="#//AggregateType"/>
<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="TerminateStatement" eSuperTypes="#//Statement"/>
<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="ForCheckBeforeStatement" eSuperTypes="#//ForStatement"/>
<eClassifiers xsi:type="ecore:EClass" name="ForCheckAfterStatement" eSuperTypes="#//ForStatement"/>
<eClassifiers xsi:type="ecore:EClass" name="AggregateExpression" eSuperTypes="#//Expression"/>
<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="StringLiteral" 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="BooleanLiteral" eSuperTypes="#//Literal"/>
<eClassifiers xsi:type="ecore:EClass" name="BitLiteral" eSuperTypes="#//Literal"/>
<eClassifiers xsi:type="ecore:EClass" name="UnaryPlus" eSuperTypes="#//UnaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="Negate" 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="MissingActualParameter" eSuperTypes="#//ActualParameter"/>
<eClassifiers xsi:type="ecore:EClass" name="ByValueActualParameterExpression" eSuperTypes="#//ActualParameterExpression"/>
<eClassifiers xsi:type="ecore:EClass" name="ByReferenceActualParameterExpression"
eSuperTypes="#//ActualParameterExpression"/>
<eClassifiers xsi:type="ecore:EClass" name="SpecificTriggerDefinition" eSuperTypes="#//Definition">
<eStructuralFeatures xsi:type="ecore:EReference" name="body" upperBound="-1" eType="#//Statement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SpecificLessEqual" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="SpecificGreaterEqual" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="SpecificIn" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="SpecificLike" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="SpecificConcatString" eSuperTypes="#//BinaryOperator"/>
<eClassifiers xsi:type="ecore:EClass" name="SpecificSelectStatement" eSuperTypes="#//Statement"/>
<eClassifiers xsi:type="ecore:EClass" name="Visitable" instanceClassName="astm.util.Visitable"
abstract="true" interface="true"/>
<eClassifiers xsi:type="ecore:EClass" name="Operator" eSuperTypes="#//OtherSyntaxObject"/>
</ecore:EPackage>