X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=dsl%2Fxtend%2Fsrc%2Frobots%2Fmissions%2FTaskDSL.xtext;fp=dsl%2Fxtend%2Fsrc%2Frobots%2Fmissions%2FTaskDSL.xtext;h=3302953bcfe864f8e76f4bc37ba95108b1d66bfd;hb=e880e959fed2d3506a790d3b361a2ed4aa49a95f;hp=0000000000000000000000000000000000000000;hpb=10fff8b308d986b564ee17eaad78e68ce105823e;p=des2015.git diff --git a/dsl/xtend/src/robots/missions/TaskDSL.xtext b/dsl/xtend/src/robots/missions/TaskDSL.xtext new file mode 100644 index 0000000..3302953 --- /dev/null +++ b/dsl/xtend/src/robots/missions/TaskDSL.xtext @@ -0,0 +1,43 @@ +grammar robots.missions.TaskDSL with org.eclipse.xtext.common.Terminals + +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; + +StoppingExpression: + '(' op=Operator s+=StoppingExpression s+=StoppingExpression* ')' | + scond=StoppingCondition +; + +StoppingCondition: + 'Collected at least' colors+=Color+ | + 'Touched on' touch=LeftRight | + 'Distance' op=Comparison dist=INT 'cm' | + 'Color is' color=Color; + +Behaviour: 'Behaviour' name=ID + 'take control:' tc=StoppingExpression? + 'action:' actions+=Action+; + +Action: + whichMotor=LeftRight 'motor' dir=Direction ('with speed' spd=INT 'acceleration' acc=INT)? | + '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