54426ad229ab9e3d7eafc5fa4c6c807fe0dafdd5
[des2015.git] / dsl / runtime / src / robots / missions / TaskDSL.xtext
1 grammar robots.missions.TaskDSL with org.eclipse.xtext.common.Terminals
2
3 generate taskDSL "http://www.missions.robots/TaskDSL"
4
5 Robot:
6 'Name' name=ID
7 'Acceleration' acc=INT
8 'Speed' spd=INT
9 'LeftMotor plugged in' leftMotorPort=MotorPort
10 'RightMotor plugged in' righMotorPort=MotorPort
11 ('ColorSensor plugged in' colorSensorPort=SensorPort)?
12 ('TouchSensor plugged in' leftTouchSensorPort=SensorPort 'and' rightTouchSensorPort=SensorPort)?
13 ('UltrasoneSensor plugged in' ultrasoneSensorPort=SensorPort)?
14 ('Mission:' mission+=Mission)+;
15
16 Mission:
17 behaviours+=Behaviour+ 'stops when' stoppingCondition=StoppingCondition
18 ;
19
20 StoppingCondition:
21 SensorLimitReached | CollectedColors;
22
23 CollectedColors:
24 'Collected Colors:' colors+=ColorValue+
25 ;
26
27 SensorLimitReached:
28 TouchLimit | ColorLimit | DistanceLimit;
29
30 ColorLimit:
31 'ColorLimit: ' lim=ColorValue
32 ;
33
34 TouchLimit:
35 'TouchStatus: ' lim=Touch
36 ;
37
38 Touch:
39 'Touch' | 'NoTouch'
40 ;
41
42 DistanceLimit:
43 'Distance:' dist=STRING 'meter'
44 ;
45
46 ColorValue:
47 'Black' | 'Blue' | 'Brown' | 'Cyan' | 'DarkGray' | 'Gray' | 'Green' | 'LightGray' | 'Magenta' | 'Orange' | 'Pink' | 'Red' | 'White' | 'Yellow'
48 ;
49
50 Behaviour:
51 'Behaviour'
52 'Name:' name=ID
53 'TakeControl:' takeControl=SensorLimitReached?
54 'Action:' action=Action
55 ;
56
57 Action:
58 'Avoid' | 'Wander' | 'Nothing'
59 ;
60
61 SensorPort:
62 'S1' | 'S2' | 'S3' | 'S4';
63
64 MotorPort:
65 'A' | 'B' | 'C' | 'D';