[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[m2t-dev] ECore model for the backend
|
Hi all,
you got me convinced to provide an Ecore model for the backend input -
please find attached a first rough draft of the Ecore model for an input
file.
Feedback and suggestions are welcome, as always!
- Arno
--
Arno Haase
Langemarckstr. 16
53227 Bonn
Mobil: +49 160 98525085
Tel: +49 228 9654443
Fax: +49 228 9654448
<?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="m2tbackend"
nsURI="m2tbackend" nsPrefix="m2tbackend">
<eClassifiers xsi:type="ecore:EClass" name="ParsedResource">
<eStructuralFeatures xsi:type="ecore:EReference" name="imports" upperBound="-1"
eType="#//Import" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="publicFunctions" upperBound="-1"
eType="#//NamedFunction" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="privateFunctions" upperBound="-1"
eType="#//NamedFunction" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="advice" upperBound="-1"
eType="#//AroundAdvice" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Import">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="resourceName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReexported" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedFunction">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isCached" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
eType="#//Parameter" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AroundAdvice">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isCacheable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="pointcut" eType="#//ExecutionPointcut"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExecutionPointcut">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="functionNamePattern" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="hasVarArgs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="varArgsType" eType="#//AdviceParamType"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
eType="#//AdviceParameter" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AdviceParamType">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="includingSubtypes" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//BackendType"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AdviceParameter">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//AdviceParamType"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Expression" abstract="true">
<eStructuralFeatures xsi:type="ecore:EReference" name="sourcePos" eType="#//SourcePos"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SourcePos">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="lineNumber" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="startOffset" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="endOffset" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Parameter">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//BackendType"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BackendType">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="uniqueRepresentation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BinaryExpression" abstract="true" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NaryExpression" abstract="true" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="parts" upperBound="-1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AndExpression" eSuperTypes="#//BinaryExpression"/>
<eClassifiers xsi:type="ecore:EClass" name="OrExpression" eSuperTypes="#//BinaryExpression"/>
<eClassifiers xsi:type="ecore:EClass" name="ConcatExpression" eSuperTypes="#//NaryExpression"/>
<eClassifiers xsi:type="ecore:EClass" name="CreateExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//BackendType"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="cacheKeys" upperBound="-1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isCached" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LocalVarDefExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="localVarName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="varDefinition" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LocalVarEvalExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="localVarName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="IfExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="if" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="else" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SwitchExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="switchExpression" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="cases" upperBound="-1"
eType="#//SwitchCase" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="defaultExpression" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SwitchCase">
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InitClosureExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
eType="#//Parameter" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FunctionInvocationExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="functionName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
eType="#//Expression" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isNullIfFirstParamIsNull"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PropertyEvalExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="inner" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SetPropertyExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="inner" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="newValue" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RegisterAdviceExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="advice" eType="#//AroundAdvice"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SequenceExpression" eSuperTypes="#//NaryExpression"/>
<eClassifiers xsi:type="ecore:EClass" name="TryCatchExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="try" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionFqn" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="catch" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ListLiteralExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="values" upperBound="-1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SetLiteralExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="values" upperBound="-1"
eType="#//Expression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MapLiteralExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
eType="#//MapEntry" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MapEntry">
<eStructuralFeatures xsi:type="ecore:EReference" name="key" eType="#//Expression"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Expression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypeLiteralExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//BackendType"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StringLiteralExpression" 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="DoubleLiteralExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LongLiteralExpression" eSuperTypes="#//Expression">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NullLiteralExpression" eSuperTypes="#//Expression"/>
</ecore:EPackage>
Attachment:
signature.asc
Description: OpenPGP digital signature