X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=dsl%2Fxtend%2Fsrc%2Frobots%2Fmissions%2FTaskDSL.xtext;h=1dd8afd47d524508fb33666f448f5dd361180a0f;hb=d66c5c319eb15f45086d6d0f6bda34b7ebedc42e;hp=7a2de03fd4b6ac55e0ee9ecd22103025ebb1cb02;hpb=55df69a5d4941d45bd3d860e6cea9b1357e09f98;p=des2015.git diff --git a/dsl/xtend/src/robots/missions/TaskDSL.xtext b/dsl/xtend/src/robots/missions/TaskDSL.xtext index 7a2de03..1dd8afd 100644 --- a/dsl/xtend/src/robots/missions/TaskDSL.xtext +++ b/dsl/xtend/src/robots/missions/TaskDSL.xtext @@ -3,22 +3,24 @@ 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' se=StoppingExpression; +Mission: + 'Mission' name=ID 'using' behaviours+=[Behaviour]+ 'and stops when' se=StoppingExpression; StoppingExpression: '(' 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 | + 'No object in sight on ' dist=BackFront | 'Color is' color=Color; Behaviour: 'Behaviour' name=ID @@ -27,14 +29,19 @@ Behaviour: 'Behaviour' name=ID Action: whichMotor=LeftRight 'motor' dir=Direction ('with speed' spd=INT 'acceleration' acc=INT)? | + 'measure' measureWhat=RockLake | 'wait' time=Time; Time: time=INT 'ms' | {Time} 'forever'; +RockLake: d=RockLakeE; +enum RockLakeE: ROCK='rock' | LAKE='lake'; Direction: d=DirectionE; enum DirectionE: BACKWARDS = 'backward' | FORWARDS = 'forward'; Operator: d=OperatorE; enum OperatorE: AND = 'and' | OR = 'or'; +BackFront: d=BackFrontE; +enum BackFrontE: BACK = 'back' | FRONT = 'front'; Comparison: d=ComparisonE; enum ComparisonE: GE='>' | LE='<'; LeftRight: d=LeftRightE;