/******************************************************************************* * 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: ( FsmDefinitions+=FsmDefinition | RandomTests+=RandomTest )*; FsmDefinition: 'fsmdefinition' name=ID 'initial' states+=StateDeclaration (states+=StateDeclaration)* ';' ; RandomTest: 'randomtest' name=ID 'fsm:' fsm=[FsmDefinition|ID] loopsDeclaration = LoopsDeclaration (seedDeclaration = SeedDeclaration)? ';' ; GuardDeclaration: signal=SignalDeclaration ; TransitionDeclaration: 'transition' name=ID 'to' destination=[StateDeclaration|ID] ( 'trigger:' trigger=SignalDeclaration )? ( 'guards:' (triggers+=GuardDeclaration)+ )? ( 'constraints:' ( precondition+=PreconditionDeclaration | postcondition+=PostconditionDeclaration )+ )? ';' ; ConditionDeclaration: 'condition' signal=SignalDeclaration ; PreconditionDeclaration: 'precondition' signal=SignalDeclaration ; PostconditionDeclaration: 'postcondition' signal=SignalDeclaration ; StateDeclaration: 'state' name=ID ( 'constraints:' (condition+=ConditionDeclaration)+ )? (transitions+=TransitionDeclaration)+ ';' ; LoopsDeclaration: 'loops:' val=INT ; SeedDeclaration: 'randseed:' val=INT ; SignalDeclaration: (port=ID '.')? signame=ID (('=' intVal=INT) | ('=' strVal=STRING))? ;