Grammar and other refinements, fix for missing dependency

  • Grammar and other refinements

Merge request reports

Loading
+1 −0
Changes for org.etsi.mts.tdl.parent/pom.xml: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
		<module>../plugins/org.etsi.mts.tdl.tx</module>
		<module>../plugins/org.etsi.mts.tdl.tx.ide</module>
		<module>../plugins/org.etsi.mts.tdl.tx.ui</module>
		<module>../plugins/org.etsi.mts.tdl.tx.tests</module> 
		<module>../plugins/org.etsi.mts.tdl.txi</module>
		<module>../plugins/org.etsi.mts.tdl.txi.ide</module>
		<module>../plugins/org.etsi.mts.tdl.txi.ui</module> 
+1 −0
Changes for org.etsi.mts.tdl.parent/top.target: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@
	<unit id="org.apache.poi.ooxml" version="4.1.1.v20221112-0806"/>
	<unit id="org.apache.poi.ooxml.schemas" version="4.1.1.v20221112-0806"/>
	<unit id="org.apache.xmlbeans" version="3.1.0.v20221112-0806"/>
	<unit id="org.apache.commons.commons-compress" version="0.0.0"/>
	<repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/2023-09"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+4 −0
Changes for plugins/org.etsi.mts.tdl.model/model/structured.ecore: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -61,6 +61,10 @@
        eType="ecore:EClass tdl.ecore#//TimeConstraint" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="timeLabel" eType="ecore:EClass tdl.ecore#//TimeLabel"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="occurrence" eType="#//EventOccurrenceSpecification"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="template" eType="#//EventTemplateOccurrence"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ExpectedBehaviour" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="whenClause" eType="#//EventSequence"
+1 −0
Changes for plugins/org.etsi.mts.tdl.tools.to.docx.poi/META-INF/MANIFEST.MF: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ Require-Bundle: org.eclipse.core.runtime,
 org.apache.logging.log4j.slf4j2.impl,
 org.apache.commons.lang3,
 org.apache.commons.commons-collections4,
 org.apache.commons.commons-compress, 
 org.apache.poi;bundle-version="[4.0.0,5.0.0)",
 org.apache.poi.ooxml;bundle-version="[4.0.0,5.0.0)",
 org.apache.poi.ooxml.schemas;bundle-version="[4.0.0,5.0.0)",
+152 −36
Changes for plugins/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/TDLtx.xtext: 152 added lines, 36 removed lines.
Original line number Diff line number Diff line
@@ -230,7 +230,7 @@ Member returns tdl::Member:
    AnnotationCommentFragment
    (isOptional?='optional')?
    dataType=[tdl::DataType|Identifier]
    name=Identifier
    name=MemberIdentifier
    (LBrace constraint+=Constraint RBrace)*
;

@@ -244,7 +244,7 @@ StructuredDataInstance returns tdl::StructuredDataInstance:

MemberAssignment returns tdl::MemberAssignment:
    AnnotationCommentFragment
    member=[tdl::Member|Identifier]
    member=[tdl::Member|MemberIdentifier]
    '=' memberSpec=DataUse
;

@@ -340,6 +340,18 @@ PredefinedIdentifierSize returns ecore::EString:
    'size'
;

// Precedence (lowest to highest):
// OrExpression → XorExpression → AndExpression → NotExpression → EqualityExpression
//   → RelationalExpression → AdditiveExpression → MultiplicativeExpression
//   → UnaryMinusExpression → PostfixExpression → PrimaryExpression
PredefinedIdentifierOr             returns ecore::EString: 'or';
PredefinedIdentifierXor            returns ecore::EString: 'xor';
PredefinedIdentifierAnd            returns ecore::EString: 'and';
PredefinedIdentifierEquality       returns ecore::EString: '==' | '!=';
PredefinedIdentifierRelational     returns ecore::EString: '<' | '>' | '<=' | '>=';
PredefinedIdentifierAdditive       returns ecore::EString: '+' | '-';
PredefinedIdentifierMultiplicative returns ecore::EString: '*' | '/' | 'mod';

EnumDataType returns tdl::EnumDataType: 
    AnnotationCommentFragment
    'Enumerated' name=Identifier
@@ -352,18 +364,92 @@ EnumDataType returns tdl::EnumDataType:
//## Data Use

DataUse returns tdl::DataUse:
    DataUseWrapped
    XorExpression
    ({tdl::PredefinedFunctionCall.actualParameters+=current}
    	function=[tdl::PredefinedFunction|PredefinedIdentifierBinary] 
    actualParameters+=DataUseWrapped)?
        function=[tdl::PredefinedFunction|PredefinedIdentifierOr]
        actualParameters+=XorExpression
    )*
;

XorExpression returns tdl::DataUse:
    AndExpression
    ({tdl::PredefinedFunctionCall.actualParameters+=current}
        function=[tdl::PredefinedFunction|PredefinedIdentifierXor]
        actualParameters+=AndExpression
    )*
;

AndExpression returns tdl::DataUse:
    NotExpression
    ({tdl::PredefinedFunctionCall.actualParameters+=current}
        function=[tdl::PredefinedFunction|PredefinedIdentifierAnd]
        actualParameters+=NotExpression
    )*
;

NotExpression returns tdl::DataUse:
    {tdl::PredefinedFunctionCall}
    function=[tdl::PredefinedFunction|PredefinedIdentifierNot]
    actualParameters+=NotExpression
    | EqualityExpression
;

EqualityExpression returns tdl::DataUse:
    RelationalExpression
    ({tdl::PredefinedFunctionCall.actualParameters+=current}
        function=[tdl::PredefinedFunction|PredefinedIdentifierEquality]
        actualParameters+=RelationalExpression
    )?
;

RelationalExpression returns tdl::DataUse:
    AdditiveExpression
    ({tdl::PredefinedFunctionCall.actualParameters+=current}
        function=[tdl::PredefinedFunction|PredefinedIdentifierRelational]
        actualParameters+=AdditiveExpression
    )?
;

AdditiveExpression returns tdl::DataUse:
    MultiplicativeExpression
    ({tdl::PredefinedFunctionCall.actualParameters+=current}
        function=[tdl::PredefinedFunction|PredefinedIdentifierAdditive]
        actualParameters+=MultiplicativeExpression
    )*
;

MultiplicativeExpression returns tdl::DataUse:
    UnaryMinusExpression
    ({tdl::PredefinedFunctionCall.actualParameters+=current}
        function=[tdl::PredefinedFunction|PredefinedIdentifierMultiplicative]
        actualParameters+=UnaryMinusExpression
    )*
;

UnaryMinusExpression returns tdl::DataUse:
    {tdl::PredefinedFunctionCall}
    function=[tdl::PredefinedFunction|PredefinedIdentifierMinus]
    actualParameters+=UnaryMinusExpression
    | PostfixExpression
;

PostfixExpression returns tdl::DataUse:
    DataUseWrapped
    (
        reduction+=MemberReference
        | 'as' {tdl::CastDataUse.dataUse=current} dataType=[tdl::DataType|Identifier]
    )*
;

DataUseWrapped returns tdl::DataUse:
    //NOTE: No name, annotations or comments
    DataElementUse
    PredefinedFunctionCallSize
    | DataElementUse
    | StaticDataUse
    | DynamicDataUse
    | CastDataUse
	// CastDataUse is now postfix 'as Type' in PostfixExpression.
    // | CastDataUse
    | LParen DataUse RParen
;

fragment ReductionFragment returns tdl::DataUse:
@@ -391,7 +477,7 @@ fragment ParameterReductionFragment returns tdl::ParameterBinding:
;

MemberReference returns tdl::MemberReference:
    ('.' member=[tdl::Member|Identifier]) 
    ('.' member=[tdl::Member|MemberIdentifier])
    |
    ('.' 'get' LParen collectionIndex=DataUse RParen)
;
@@ -407,7 +493,7 @@ DataInstanceUse returns tdl::DataInstanceUse:
    	'instance' dataInstance=[tdl::DataInstance|Identifier]
    	UnassignedFragment?
    	ParameterBindingFragment?
    	ReductionFragment?
    	// ReductionFragment now handled by PostfixExpression
    )
    |
    (
@@ -455,7 +541,8 @@ LiteralValueUse returns tdl::LiteralValueUse:
    //Note overloaded syntax with constraints, in a sense this is a constraint too..
	(
		LBrace dataType=[tdl::DataType|Identifier] RBrace
		(ParameterBindingFragment | ReductionFragment)?
		ParameterBindingFragment?
		// ReductionFragment now handled by PostfixExpression
	)?
	CheckFragment?
;
@@ -469,7 +556,8 @@ CastDataUse returns tdl::CastDataUse:
	//TODO: causes ambiguity
//	'as' dataType=[tdl::DataType|Identifier]
    RParen
	(ParameterBindingFragment | ReductionFragment)?
	ParameterBindingFragment?
	// ReductionFragment now handled by PostfixExpression
;


@@ -477,7 +565,10 @@ DynamicDataUse returns tdl::DynamicDataUse:
    FunctionCall
    | FormalParameterUse
    | VariableUse
    | PredefinedFunctionCall
	// PredefinedFunctionCallSize is now called from DataUseWrapped.
	// The other predefined function forms (not, minus, binary) are called
	// in the precedence ladder and no longer need dedicated rule.
    // | PredefinedFunctionCall
    | TimeLabelUse
;

@@ -485,19 +576,21 @@ DynamicDataUse returns tdl::DynamicDataUse:
FunctionCall returns tdl::FunctionCall:
    'instance' 'returned' 'from' function=[tdl::Function|Identifier]
    ParameterBindingFragment
    ReductionFragment?
    // ReductionFragment now handled by PostfixExpression
;

//TODO: deprecated?
FormalParameterUse returns tdl::FormalParameterUse:
    'parameter' parameter=[tdl::FormalParameter|Identifier]
    (ParameterBindingFragment | ReductionFragment)?
    ParameterBindingFragment?
    // ReductionFragment now handled by PostfixExpression
;

VariableUse returns tdl::VariableUse:
    componentInstance=[tdl::ComponentInstance|Identifier]
    '::' variable=[tdl::Variable|Identifier]
    (ParameterBindingFragment | ReductionFragment)?
    ParameterBindingFragment?
    // ReductionFragment now handled by PostfixExpression
;

PredefinedFunctionCall returns tdl::PredefinedFunctionCall:
@@ -537,7 +630,7 @@ DataElementUse returns tdl::DataElementUse:
	    dataElement=[tdl::NamedElement|Identifier]
	    UnassignedFragmentNamedElement?
		ParameterBindingFragment?
		ReductionFragment?
		// ReductionFragment now handled by PostfixExpression
		->CollectionItemFragment?
		CheckFragment?
	)
@@ -811,6 +904,14 @@ Block returns tdl::Block:
    END
;

// Block without guard support — used in contexts where '[' would be  ambiguous with CollectionItemFragment
NoGuardBlock returns tdl::Block:
    //NOTE: No annotations or comments
    BEGIN
        behaviour+=Behaviour+
    END
;

LocalExpression returns tdl::LocalExpression:
    //NOTE: No annotations or comments
    expression=DataUse
@@ -850,7 +951,7 @@ SingleCombinedBehaviour returns tdl::SingleCombinedBehaviour:

CompoundBehaviour returns tdl::CompoundBehaviour:
    AnnotationFragment?
    block=Block
    block=NoGuardBlock
;

BoundedLoopBehaviour returns tdl::BoundedLoopBehaviour:
@@ -1142,6 +1243,25 @@ Identifier:
    | 'name' | 'type' | 'value' | 'attribute'//TODO: exclude other keywords to the extent possible?
;

// MemberIdentifier — extends Identifier with keywords commonly useful as
// structure member names. Used in Member name, MemberAssignment cross-ref,
// and MemberReference cross-ref positions only.
MemberIdentifier:
    Identifier
    | 'start' | 'stop'
    | 'from' | 'to'
    | 'before' | 'after'
    | 'time' | 'point'
    | 'default'
    | 'entity' | 'event'
    | 'size'
    | 'instance' | 'component' | 'gate' | 'variable'
    | 'parameter' | 'argument'
    | 'action' | 'behaviour' | 'timer'
    | 'verdict' | 'exception'
    | 'get'
;

AIdentifier:    
    Identifier 
    | InitialBlockName 
@@ -1488,11 +1608,17 @@ RepeatedEventSequence returns to::RepeatedEventSequence:
;

FirstEventOccurrence returns to::EventOccurrence:
    FirstEventOccurrenceSpecification | FirstEventTemplateOccurrence 
	EventOccurrenceFragment
;

EventOccurrence returns to::EventOccurrence:
    EventOccurrenceSpecification | EventTemplateOccurrence 
	ElementAndOrPrefix
	EventOccurrenceFragment
;

fragment EventOccurrenceFragment returns to::EventOccurrence:
	EventTimingPrefix?
    (occurrence=EventOccurrenceSpecification | template=EventTemplateOccurrence) 
;

fragment EventTimingPrefix returns to::EventOccurrence:
@@ -1500,7 +1626,7 @@ fragment EventTimingPrefix returns to::EventOccurrence:
        (
            (timeLabel=PrefixTimeLabel (',' timeConstraint+=PrefixTimeConstraint)?)
            |
            timeConstraint+=TimeConstraint
            timeConstraint+=PrefixTimeConstraint
        )
        ':'
    )    
@@ -1540,24 +1666,14 @@ PrefixTimeConstraint returns tdl::TimeConstraint:
;


FirstEventOccurrenceSpecification returns to::EventOccurrenceSpecification:
    EventOccurrenceSpecificationFragment
;

EventOccurrenceSpecification returns to::EventOccurrenceSpecification:
    ElementAndOrPrefix
    EventOccurrenceSpecificationFragment
;

fragment EventOccurrenceSpecificationFragment returns to::EventOccurrenceSpecification:
//    EventTimingPrefix?
    entityReference=EntityReference?
    eventReference=EventReference
    eventArgument=Argument?
    (oppositeEntityReference+=OppositeEntityReference 
        (',' oppositeEntityReference+=OppositeEntityReference)*
    )?
    EventTimingSuffix?
//    EventTimingSuffix?
    CommentFragment?
;

@@ -1770,7 +1886,7 @@ EventSpecificationTemplate returns to::EventSpecificationTemplate:
    AnnotationCommentFragment
    'Template' name=Identifier
    BEGIN
        eventSpecification=FirstEventOccurrenceSpecification
        eventSpecification=EventOccurrenceSpecification
    END
;

@@ -1779,7 +1895,7 @@ FirstEventTemplateOccurrence returns to::EventTemplateOccurrence:
;

EventTemplateOccurrence returns to::EventTemplateOccurrence:
    ElementAndOrPrefix
//    ElementAndOrPrefix
    EventTemplateOccurrenceFragment
;

@@ -1790,8 +1906,8 @@ fragment EventTemplateOccurrenceFragment returns to::EventTemplateOccurrence:
    'occurs'
    ('with' 
    BEGIN
        EventTimeLabelFragment?
        EventTimeConstraintFragment?
//        EventTimeLabelFragment?
//        EventTimeConstraintFragment?
        (entityBinding+=EntityBinding (',' entityBinding+=EntityBinding)*)?
        ('argument' 'replaced' 'by' occurrenceArgument=Argument)?
    END
@@ -1895,7 +2011,7 @@ ExpectedBehaviourBehaviour returns tdl::CompoundBehaviour:
    )
    //TODO: this does not seem to work
    |
	block=Block
	block=NoGuardBlock
;

FinalConditionsBehaviour returns tdl::CompoundBehaviour:
Loading
Loading