mirror of
http://172.16.200.102/MOISE/Pattern-Instanciation-On-System-Engineering-Model.git
synced 2025-12-20 22:43:57 +01:00
52 lines
1.7 KiB
Plaintext
52 lines
1.7 KiB
Plaintext
grammar com.irtsaintexupery.xtext.pseim.Pattern with org.eclipse.xtext.common.Terminals
|
|
|
|
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
|
|
import "http://www.irt-saintexupery.com/seim/0.1" as seim
|
|
import "http://www.irt-saintexupery.com/pseim/0.1"
|
|
|
|
Pattern returns Pattern:
|
|
'pattern' name=ID '(' (cardinalityElements+=CardinalityElement (',' cardinalityElements+=CardinalityElement)*)? ')'
|
|
('{'
|
|
(
|
|
modelElements+=PatternComponent |
|
|
modelElements+=PatternLink
|
|
)*
|
|
'}')?;
|
|
|
|
PatternComponent returns PatternComponent:
|
|
'component' name=ID ('[' (multiplicityValue=INT | cardinalityElement=[CardinalityElement]) ']')? '(' (content+=PatternPort (',' content+=PatternPort)*)? ')'
|
|
('{'
|
|
(
|
|
content+=PatternComponent |
|
|
content+=PatternLink
|
|
)*
|
|
'}')?;
|
|
|
|
PatternPort returns PatternPort:
|
|
dir=PatternPortDirection name=ID ('[' (multiplicityValue=INT | cardinalityElement=[CardinalityElement]) ']')?
|
|
;
|
|
|
|
enum PatternPortDirection returns PatternPortDirection:
|
|
UNSPECIFIED = 'unspec' | IN = 'in' | OUT = 'out' | INOUT = 'inout';
|
|
|
|
CardinalityElement returns CardinalityElement:
|
|
name=ID
|
|
;
|
|
|
|
PatternLink returns PatternLink:
|
|
src=[PatternPort|QualifiedID] '-{' linkType=LinkType '}->' dst=[PatternPort|QualifiedID]
|
|
;
|
|
|
|
enum LinkType returns LinkType:
|
|
TRANSPOSE = 'Transpose' | IDENTITY = 'Identity' | FIRST = 'First' | ROTATE = 'Rotate'
|
|
| SHIFTC = 'ShiftC' | SHIFTP = 'ShiftP' | FLATTENC = 'FlattenC' | FORKC = 'ForkC' | FORKP = 'ForkP'
|
|
| JOINC = 'JoinC' | JOINP = 'JoinP' | LAST = 'Last'
|
|
;
|
|
|
|
enum PortDirection returns seim::PortDirection:
|
|
UNSPECIFIED = 'unspec' | IN = 'in' | OUT = 'out' | INOUT = 'inout'
|
|
;
|
|
|
|
QualifiedID:
|
|
ID('.'ID)*
|
|
; |