generate taskDSL "http://www.missions.robots/TaskDSL"
Robot:
- 'Name' name=ID
'Acceleration' acc=INT
'Speed' spd=INT
behaviour+=Behaviour+
mission+=Mission+;
-Mission: 'Mission' name=ID 'using' behaviours+=[Behaviour]+ 'and stops when' stoppingExpression=StoppingExpression;
+Mission:
+ 'Mission' name=ID 'using' behaviours+=[Behaviour]+ 'and stops when' se=StoppingExpression;
StoppingExpression:
- '(' op=Operator s+=StoppingExpression s+=StoppingExpression* ')' |
- scond=StoppingCondition
-;
+ '(' op=Operator s+=StoppingExpression s+=StoppingExpression+ ')' |
+ 'not ' negscond=StoppingCondition |
+ scond=StoppingCondition;
StoppingCondition:
'Collected at least' colors+=Color+ |
'Touched on' touch=LeftRight |
- 'Distance' op=Comparison dist=INT 'cm' |
+ 'Light on' light=LeftRight |
+ 'Distance dangerous at ' dist=BackFront |
'Color is' color=Color;
Behaviour: 'Behaviour' name=ID
'action:' actions+=Action+;
Action:
- whichMotor=LeftRight 'motor' dir=Direction ('with speed' spd=INT 'acceleration' acc=INT)? |
+ whichMotor=LeftRight 'motor' moveDir=Direction ('with speed' spd=INT 'acceleration' acc=INT)? |
+ 'turn' turnDir=LeftRight degrees=INT ('with speed' spd=INT 'acceleration' acc=INT)? |
+ {Action} 'measure'|
'wait' time=Time;
Time: time=INT 'ms' | {Time} 'forever';
-
-enum Direction: BACKWARDS = 'Backwards' | FORWARDS = 'Forwards';
-enum Operator: AND = 'and' | OR = 'or';
-enum Comparison: GE='>' | LE='<';
-enum LeftRight: LEFT='Left' | RIGHT='Right';
-enum Color:
- BLACK='Black' | BLUE='Blue' | BROWN='Brown' | CYAN='Cyan' |
- DARKGRAY='DarkGray' | GRAY='Gray' | GREEN='Green' |
- LIGHTGRAY='LightGray' | MAGENTA='Magenta' | ORANGE='Orange' | PINK='Pink' |
- RED='Red' | WHITE='White' | YELLOW='Yellow';
\ No newline at end of file
+
+RockLake: d=RockLakeE;
+enum RockLakeE: ROCK='rock' | LAKE='lake';
+Direction: d=DirectionE;
+enum DirectionE: BACKWARDS = 'backward' | FORWARDS = 'forward';
+Operator: d=OperatorE;
+enum OperatorE: AND = '&&' | OR = '||';
+BackFront: d=BackFrontE;
+enum BackFrontE: BACK = 'back' | FRONT = 'front';
+LeftRight: d=LeftRightE;
+enum LeftRightE: LEFT='left' | RIGHT='right';
+Color: d=ColorE;
+enum ColorE:
+ RED='Red' | GREEN='Green' | BLUE='Blue' | YELLOW='Yellow' |
+ MAGENTA='Magenta'| ORANGE='Orange'| WHITE='White' | BLACK='Black' |
+ PINK='Pink' | GRAY='Gray' | LIGHTGRAY='LightGray' |
+ DARKGRAY='DarkGray' | CYAN='Cyan' | BROWN='Brown';
\ No newline at end of file