Commit a3d332e2 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ switched to common scope provider to get rid of qualified names

parent 72e2f1f3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -270,6 +270,7 @@
        <setEntry value="org.w3c.dom.svg@default:default"/>
    </setAttribute>
    <setAttribute key="selected_workspace_bundles">
        <setEntry value="org.etsi.mts.tdl.common@default:default"/>
        <setEntry value="org.etsi.mts.tdl.model@default:default"/>
        <setEntry value="org.etsi.mts.tdl.rt.ui@default:default"/>
        <setEntry value="org.etsi.mts.tdl.tx.ide@default:default"/>
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ Require-Bundle: org.etsi.mts.tdl.model,
 org.eclipse.equinox.common;bundle-version="3.5.0",
 org.eclipse.xtext.xbase.lib;bundle-version="2.14.0",
 org.eclipse.xtext.util,
 org.etsi.mts.tdl.common,
 org.antlr.runtime;bundle-version="[3.2.0,3.2.1)"
Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.etsi.mts.tdl.parser.antlr.internal,
+96 −76
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ Package returns tdl::Package:
    {tdl::Package}
    PrefixFragment?
    'Package'
    name=EString
    name=Identifier
    BEGIN
        WithFragment?
        (^import+=ElementImport)*
@@ -60,11 +60,12 @@ ElementImport returns tdl::ElementImport:
    {tdl::ElementImport} 
    'Import'
    ('all' | 
        (importedElement+=[tdl::PackageableElement|EString] 
            ( "," importedElement+=[tdl::PackageableElement|EString])*
        (importedElement+=[tdl::PackageableElement|Identifier] 
            ( "," importedElement+=[tdl::PackageableElement|Identifier])*
        )
    )
    'from' importedPackage=[tdl::Package|EString]
    //TODO: check if this (still) works
    'from' (importedPackage=[tdl::Package|Identifier] | importedPackage=[tdl::Package|QIdentifier])
    WithFragment?
;

@@ -73,14 +74,14 @@ Comment returns tdl::Comment:
;

Annotation returns tdl::Annotation:
    key=[tdl::AnnotationType|EString]
    key=[tdl::AnnotationType|Identifier]
    (':' value=EString)?
;

AnnotationType returns tdl::AnnotationType:
    {tdl::AnnotationType}
    'AnnotationType'
    name=EString
    name=Identifier
    extension=Extension?
    WithFragmentNested?
;
@@ -88,16 +89,16 @@ AnnotationType returns tdl::AnnotationType:
TestObjective returns tdl::TestObjective:
    {tdl::TestObjective}
    'TestObjective'
    name=EString
    name=Identifier
    (BEGIN
        ('Description:' description=EString)?
        ('References:' (objectiveURI+=EString)+)?
        ('Description:' description=Identifier)?
        ('References:' (objectiveURI+=Identifier)+)?
        WithFragment?
    END)?
;

Extension returns tdl::Extension:
    'extends' extending=[tdl::PackageableElement|EString]
    'extends' extending=[tdl::PackageableElement|Identifier]
;

//# Data
@@ -107,17 +108,17 @@ Extension returns tdl::Extension:
DataResourceMapping returns tdl::DataResourceMapping:
    {tdl::DataResourceMapping}
    'Use'
    resourceURI=EString
    'as' name=EString
    resourceURI=Identifier
    'as' name=Identifier
    WithFragmentNested?
;

DataElementMapping returns tdl::DataElementMapping:
    'Map'
    mappableDataElement=[tdl::MappableDataElement|EString]
    ('to' elementURI=EString)?
    'in' dataResourceMapping=[tdl::DataResourceMapping|EString]
    'as' name=EString
    mappableDataElement=[tdl::MappableDataElement|Identifier]
    ('to' elementURI=Identifier)?
    'in' dataResourceMapping=[tdl::DataResourceMapping|Identifier]
    'as' name=Identifier
    ( 
        BEGIN 
            WithFragment?
@@ -127,8 +128,8 @@ DataElementMapping returns tdl::DataElementMapping:
;

ParameterMapping returns tdl::ParameterMapping:
    parameter=[tdl::Parameter|EString]
    '->' parameterURI=EString
    parameter=[tdl::Parameter|Identifier]
    '->' parameterURI=Identifier
    WithFragmentNested?
;

@@ -136,13 +137,13 @@ ParameterMapping returns tdl::ParameterMapping:
SimpleDataType_Impl returns tdl::SimpleDataType:
    {tdl::SimpleDataType}
    'Type'
    name=EString
    name=Identifier
    WithFragmentNested?
;

SimpleDataInstance returns tdl::SimpleDataInstance:
    dataType=[tdl::DataType|EString]
    name=EString
    dataType=[tdl::DataType|Identifier]
    name=Identifier
    WithFragmentNested?
;

@@ -153,7 +154,7 @@ StructuredDataType returns tdl::StructuredDataType:
    //TODO: extract to packageable element?
    PrefixFragment?
    'Type'
    name=EString
    name=Identifier
    extension=Extension?
    BEGIN
        //WithFragment?
@@ -163,15 +164,15 @@ StructuredDataType returns tdl::StructuredDataType:

Member returns tdl::Member:
    (isOptional?='optional')?
    dataType=[tdl::DataType|EString]
    name=EString
    dataType=[tdl::DataType|Identifier]
    name=Identifier
    WithFragmentNested?
    ;

StructuredDataInstance returns tdl::StructuredDataInstance:
    PrefixFragment?
    dataType=[tdl::DataType|EString]
    name=EString
    dataType=[tdl::DataType|Identifier]
    name=Identifier
    (unassignedMember=UnassignedMemberTreatment)?
    BEGIN
        //WithFragment?
@@ -180,7 +181,7 @@ StructuredDataInstance returns tdl::StructuredDataInstance:
    ;

MemberAssignment returns tdl::MemberAssignment:
    member=[tdl::Member|EString]
    member=[tdl::Member|Identifier]
    '=' memberSpec=StaticDataUse
    WithFragmentNested?
;
@@ -193,37 +194,35 @@ MemberAssignment returns tdl::MemberAssignment:
CollectionDataType returns tdl::CollectionDataType:
    PrefixFragment?
    'Collection'
    name=EString
    'of' itemType=[tdl::DataType|EString]
    name=Identifier
    'of' itemType=[tdl::DataType|Identifier]
;

CollectionDataInstance returns tdl::CollectionDataInstance:
    PrefixFragment?
    //TODO: keep angle brackets?
    '['dataType=[tdl::DataType|EString]']'
    //TODO: keep square brackets? ->discuss later (exclusive to guards or guards shall use a word?)
    dataType=[tdl::DataType|Identifier] //-> should probably be preferred for index or also for begin/end below
    //alternatively dataType 'collection' name?
    name=EString
    (BEGIN
        item+=StaticDataUse*
    END)?
    name=Identifier
    '[' item+=StaticDataUse* ']'
;

ProcedureSignature returns tdl::ProcedureSignature:
    PrefixFragment?
    'Signature'
    name=EString
    name=Identifier
    '(' parameter+=ProcedureParameter ( "," parameter+=ProcedureParameter)* ')' 
;

ProcedureParameter returns tdl::ProcedureParameter:
    kind=ParameterKind
    dataType=[tdl::DataType|EString]
    name=EString
    dataType=[tdl::DataType|Identifier]
    name=Identifier
    WithFragmentNested?
;

enum ParameterKind returns tdl::ParameterKind:
    //TODO: add @ prefixes?
    //TODO: add @ prefixes? ->no
    In = 'in' | Out = 'out' | Exception = 'exception';

Parameter returns tdl::Parameter:
@@ -231,17 +230,17 @@ Parameter returns tdl::Parameter:

FormalParameter returns tdl::FormalParameter:
    PrefixFragment?
    dataType=[tdl::DataType|EString]
    name=EString
    dataType=[tdl::DataType|Identifier]
    name=Identifier
    //TODO: fix fragments
    //WithFragmentNested
;

Variable returns tdl::Variable:
    PrefixFragment?
    dataType=[tdl::DataType|EString]
    dataType=[tdl::DataType|Identifier]
    'variable'
    name=EString
    name=Identifier
;

//TODO: remove?
@@ -252,7 +251,7 @@ Action_Impl returns tdl::Action:
    {tdl::Action}
    PrefixFragment?
    'Action'
    name=EString
    name=Identifier
    ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')')?
    (':' body=EString)?
    ;
@@ -260,9 +259,9 @@ Action_Impl returns tdl::Action:
Function returns tdl::Function:
    PrefixFragment?
    'Function'
    name=EString
    name=Identifier
    ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')')?
    'returns' returnType=[tdl::DataType|EString]
    'returns' returnType=[tdl::DataType|Identifier]
    (':' body=EString)?
;

@@ -277,8 +276,8 @@ PredefinedFunction returns tdl::PredefinedFunction:
    {tdl::PredefinedFunction}
    PrefixFragment?
    'Predefined'
    name=EString
    ('returns' returnType=[tdl::DataType|EString])?
    name=Identifier
    ('returns' returnType=[tdl::DataType|Identifier])?
;

//## Data Use
@@ -302,7 +301,7 @@ Timer returns tdl::Timer:
    {tdl::Timer}
    PrefixFragment?
    'timer'
    name=EString
    name=Identifier
;

TimeConstraint returns tdl::TimeConstraint:
@@ -314,7 +313,7 @@ TimeConstraint returns tdl::TimeConstraint:
TimeLabel returns tdl::TimeLabel:
    {tdl::TimeLabel}
    PrefixFragment?
    name=EString
    name=Identifier
;

enum TimeLabelUseKind returns tdl::TimeLabelUseKind:
@@ -334,26 +333,26 @@ GateType returns tdl::GateType:
    PrefixFragment?
    kind=GateTypeKind
    'Gate'
    name=EString
    name=Identifier
    (extension=Extension)?
    'supports' dataType+=[tdl::DataType|EString] ( "," dataType+=[tdl::DataType|EString])*  
    'supports' dataType+=[tdl::DataType|Identifier] ( "," dataType+=[tdl::DataType|Identifier])*  
;

enum GateTypeKind returns tdl::GateTypeKind:
    //TODO: add '@' prefix?
    //TODO: add '@' prefix? -> no
    Message = 'Message' | Procedure = 'Procedure';

GateInstance returns tdl::GateInstance:
    PrefixFragment?
    type=[tdl::GateType|EString]
    type=[tdl::GateType|Identifier]
    'gate'
    name=EString
    name=Identifier
;

ComponentType returns tdl::ComponentType:
    PrefixFragment?
    'Component'
    name=EString
    name=Identifier
    (extension=Extension)?
    //TODO: align order?
    BEGIN
@@ -365,11 +364,14 @@ ComponentType returns tdl::ComponentType:

ComponentInstance returns tdl::ComponentInstance:
    PrefixFragment?
    type=[tdl::ComponentType|EString]
    type=[tdl::ComponentType|Identifier]
    'component'
    name=EString
    name=Identifier
    'as'
    //TODO: or use annotation syntax?
    //TODO: or use annotation syntax? -> no
    //TODO: re-evaluate existing notation -> condense to more compact definition
    //create ROLE TYPE ID
    //create ROLE ID of type TYPE (old notation) -> to be aligned with data type syntax and the rest
    role=ComponentInstanceRole
;

@@ -378,12 +380,12 @@ enum ComponentInstanceRole returns tdl::ComponentInstanceRole:
    SUT = 'SUT' | Tester = 'Tester';

GateReference returns tdl::GateReference:
    //name=EString
    //name=Identifier
    //TODO: check how it was done previously
    //TODO: fix fragments
    component=[tdl::ComponentInstance|EString]
    component=[tdl::ComponentInstance|Identifier]
    '.' 
    gate=[tdl::GateInstance|EString]
    gate=[tdl::GateInstance|Identifier]
//    WithFragmentNested?
//    NameFragment?
    ;
@@ -399,7 +401,7 @@ Connection returns tdl::Connection:
TestConfiguration returns tdl::TestConfiguration:
    PrefixFragment?
    'Configuration'
    name=EString
    name=Identifier
    BEGIN
        //TODO: enforce '+'?
        (componentInstance+=ComponentInstance)* 
@@ -416,9 +418,9 @@ TestDescription returns tdl::TestDescription:
    PrefixTDObjectiveFragment?
    'TestDescription'
    (isLocallyOrdered?='Implementation')?
    name=EString
    name=Identifier
    ('(' formalParameter+=FormalParameter ( "," formalParameter+=FormalParameter)* ')' )?
    'uses' testConfiguration=[tdl::TestConfiguration|EString]
    'uses' testConfiguration=[tdl::TestConfiguration|Identifier]
    (
        behaviourDescription=BehaviourDescription
    )?
@@ -453,7 +455,7 @@ Block returns tdl::Block:
LocalExpression returns tdl::LocalExpression:
    PrefixFragment?
    PrefixNameFragment?
    (scope=[tdl::ComponentInstance|EString] ':')?
    (scope=[tdl::ComponentInstance|Identifier] ':')?
    expression=StaticDataUse //TODO: revert to DataUse
    ;

@@ -480,9 +482,9 @@ TimerStart returns tdl::TimerStart:
    PrefixTimeLabelFragment?
    PrefixTimeConstraintFragment?
    'start'
    componentInstance=[tdl::ComponentInstance|EString]
    componentInstance=[tdl::ComponentInstance|Identifier]
    '.'
    timer=[tdl::Timer|EString]
    timer=[tdl::Timer|Identifier]
    'for' period=StaticDataUse
    //TODO: shortcut, restore original
    //'for' period=DataUse
@@ -495,9 +497,9 @@ TimerStop returns tdl::TimerStop:
    PrefixTimeLabelFragment?
    PrefixTimeConstraintFragment?
    'stop'
    componentInstance=[tdl::ComponentInstance|EString]
    componentInstance=[tdl::ComponentInstance|Identifier]
    '.'
    timer=[tdl::Timer|EString]
    timer=[tdl::Timer|Identifier]
;

TimeOut returns tdl::TimeOut:
@@ -506,9 +508,9 @@ TimeOut returns tdl::TimeOut:
    PrefixNameFragment?
    PrefixTimeLabelFragment?
    PrefixTimeConstraintFragment?
    componentInstance=[tdl::ComponentInstance|EString]
    componentInstance=[tdl::ComponentInstance|Identifier]
    '.'
    timer=[tdl::Timer|EString]
    timer=[tdl::Timer|Identifier]
    'expired'
;

@@ -537,15 +539,15 @@ fragment WithFragment returns tdl::Element:
;

fragment ObjectiveFragment returns tdl::Behaviour:
    'Objective:' testObjective+=[tdl::TestObjective|EString] ( "," testObjective+=[tdl::TestObjective|EString])*
    'Objective:' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])*
;

fragment TDObjectiveFragment returns tdl::TestDescription:
    'Objective:' testObjective+=[tdl::TestObjective|EString] ( "," testObjective+=[tdl::TestObjective|EString])*
    'Objective:' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])*
;

fragment NameFragment returns tdl::Element:
    'Name:' name=EString
    'Name:' name=Identifier
;


@@ -563,6 +565,7 @@ fragment PrefixFragment returns tdl::Element:
    ('@' comment+=Comment | '@' annotation+=Annotation)+
;


fragment PrefixNameFragment returns tdl::Element:
    '@' NameFragment
;
@@ -587,7 +590,24 @@ fragment PrefixTimeLabelFragment returns tdl::AtomicBehaviour:
//## ValueConverter Rules (Pseudo-terminals)

EString returns ecore::EString:
    STRING | ID;
    STRING
    // | ID
;

Identifier returns ecore::EString:
    ID
;

IdentifierDot returns ecore::EString:
    ID '.' ID
;

QIdentifier returns ecore::EString:
    ID ('.' ID)+
;





//## Terminals
+10 −2
Original line number Diff line number Diff line
@@ -3,6 +3,9 @@
 */
package org.etsi.mts.tdl.scoping;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.xtext.scoping.IScope;

/**
 * This class contains custom scoping description.
@@ -10,6 +13,11 @@ package org.etsi.mts.tdl.scoping;
 * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping
 * on how and when to use it.
 */
public class TDLtxScopeProvider extends AbstractTDLtxScopeProvider {
public class TDLtxScopeProvider extends TDLScopeProvider {

	@Override
	public IScope getScope(EObject context, EReference reference) {
		return super.getScope(context, reference);
	}

}
 No newline at end of file