Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.etrice.generator.fsmtest/src/org/eclipse/etrice/generator/FSMtest.xtext')
-rw-r--r--plugins/org.eclipse.etrice.generator.fsmtest/src/org/eclipse/etrice/generator/FSMtest.xtext92
1 files changed, 65 insertions, 27 deletions
diff --git a/plugins/org.eclipse.etrice.generator.fsmtest/src/org/eclipse/etrice/generator/FSMtest.xtext b/plugins/org.eclipse.etrice.generator.fsmtest/src/org/eclipse/etrice/generator/FSMtest.xtext
index 44dc91a38..3950f9f70 100644
--- a/plugins/org.eclipse.etrice.generator.fsmtest/src/org/eclipse/etrice/generator/FSMtest.xtext
+++ b/plugins/org.eclipse.etrice.generator.fsmtest/src/org/eclipse/etrice/generator/FSMtest.xtext
@@ -1,55 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2012 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
grammar org.eclipse.etrice.generator.FSMtest with org.eclipse.xtext.common.Terminals
generate fsmtest "http://www.eclipse.org/etrice/generator/FSMtest"
Model:
- Testscripts+=Testscript*;
+ (
+ FsmDefinitions+=FsmDefinition |
+ RandomTests+=RandomTest
+ )*;
+
+FsmDefinition:
+ 'fsmdefinition' name=ID
+ 'initial' states+=StateDeclaration
+ (states+=StateDeclaration)*
+ ';'
+;
-Testscript:
- 'fsmtest' name=ID
- stateDeclaration = StateDeclaration
- initialDeclaration = InitialDeclaration
+RandomTest:
+ 'randomtest' name=ID
+ 'fsm:' fsm=[FsmDefinition|ID]
loopsDeclaration = LoopsDeclaration
(seedDeclaration = SeedDeclaration)?
- (transitionDeclarations += TransitionDeclaration)*
';'
;
-State:
- name=ID
+GuardDeclaration:
+ signal=SignalDeclaration
;
-StateDeclaration:
- 'states:' states+=State (',' states+=State)*
+TransitionDeclaration:
+ 'transition' name=ID 'to' destination=[StateDeclaration|ID]
+ (
+ 'trigger:' trigger=SignalDeclaration
+ )?
+ (
+ 'guards:'
+ (triggers+=GuardDeclaration)+
+ )?
+ (
+ 'constraints:'
+ (
+ precondition+=PreconditionDeclaration |
+ postcondition+=PostconditionDeclaration
+ )+
+ )?
+ ';'
;
-InitialDeclaration:
- "initial:" initial=[State|ID]
+ConditionDeclaration:
+ 'condition' signal=SignalDeclaration
;
-LoopsDeclaration:
- 'loops:' val=INT
+PreconditionDeclaration:
+ 'precondition' signal=SignalDeclaration
;
-SeedDeclaration:
- 'randseed:' val=INT
+PostconditionDeclaration:
+ 'postcondition' signal=SignalDeclaration
;
-SignalDeclaration:
- (port=ID '.')? signame=ID (('=' intVal=INT) | ('=' strVal=STRING))?
+StateDeclaration:
+ 'state' name=ID
+ (
+ 'constraints:'
+ (condition+=ConditionDeclaration)+
+ )?
+ (transitions+=TransitionDeclaration)+
+ ';'
;
-SourceDeclaration:
- ref=[State|ID] ':'
+LoopsDeclaration:
+ 'loops:' val=INT
;
-DestinationDeclaration:
- '-> ' ref=[State|ID]
+SeedDeclaration:
+ 'randseed:' val=INT
;
-TransitionDeclaration:
- source=SourceDeclaration
- 'in:' (in+=SignalDeclaration)*
- 'out:' (out+=SignalDeclaration)*
- destination=DestinationDeclaration
+SignalDeclaration:
+ (port=ID '.')? signame=ID (('=' intVal=INT) | ('=' strVal=STRING))?
;

Back to the top