Skip to main content

[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


Back to the top