interface-to-rcmpsp

solver grammar version 0.7

'trigger': [ trigger = ] component 'stategroup attribute'
'trigger options': [ (, ) ] group {
	'Start': [ | start => ] reference
	'Stop': [ | stop => ] reference
}
'timeout': [ timeout = ] component 'positive number attribute'
'resources': [ resources = ] component 'collection attribute'
'resource mapping': [ (, ) ] group {
	'time slots': [ time-slots = ] component 'collection attribute'
	'time slots ordering': [ in ] reference
	'time slot mapping': [ (, ) ] group {
		'worker pool groups': [ worker-pool-groups = ] component 'collection attribute'
		'worker pool group mapping': [ (, ) ] group {
			'group': [ group = ] component 'text attribute'
		}
		'has capacity': [ capacity = ] component 'stategroup attribute'
		'has capacity options': [ (, ) ] group {
			'yes': [ | capacity => ] reference
			'no': [ | no-capacity => ] reference
		}
	}
}
'worker pools': [ worker-pools = ] component 'collection attribute'
'worker pool mapping': [ (, ) ] group {
	'weight': [ weight = ] component 'number attribute'
}
'jobs': [ jobs = ] component 'collection attribute'
'job mapping': [ (, ) ] group {
	'resource': [ resource = ] component 'reference attribute'
	'tasks': [ tasks = ] component 'collection attribute'
	'task mapping': [ (, ) ] group {
		'dependencies': [ dependencies = ] component 'collection attribute'
		'dependency mapping': [ (, ) ] group { }
		'external dependencies': [ external-dependencies = ] component 'collection attribute'
		'external dependency mapping': [ (, ) ] group {
			'tasks': [ tasks = ] component 'collection attribute'
			'task mapping': [ (, ) ] group {
				'scheduling': [ scheduling = ] component 'stategroup attribute'
				'scheduling options': [ (, ) ] group {
					'after': [ | after => ] reference
					'parallel': [ | parallel => ] reference
				}
			}
		}
		'duration': [ duration = ] component 'positive number attribute'
		'worker pool': [ worker-pool = ] component 'reference attribute'
		'demand': [ demand = ] component 'positive number attribute'
		'scheduling': [ scheduling = ] component 'stategroup attribute'
		'scheduling options': [ (, ) ] group {
			'locked': [ | locked => ] reference
			'locked parameters': [ (, ) ] group {
				'start': [ start = ] component 'reference attribute'
			}
			'range': [ | range => ] reference
			'range parameters': [ (, ) ] group {
				'from': [ from = ] component 'stategroup attribute'
				'from options': [ (, ) ] group {
					'yes': [ | from => ] reference
					'yes parameters': [ (, ) ] group {
						'time slot': [ time-slot = ] component 'reference attribute'
					}
					'no': [ | no-from => ] reference
				}
				'to': [ to = ] component 'stategroup attribute'
				'to options': [ (, ) ] group {
					'yes': [ | to => ] reference
					'yes parameters': [ (, ) ] group {
						'time slot': [ time-slot = ] component 'reference attribute'
					}
					'no': [ | no-to => ] reference
				}
			}
			'unlocked': [ | unlocked => ] reference
			'unlocked parameters': [ (, ) ] group {
				'hint': [ hint = ] component 'stategroup attribute'
				'hint options': [ (, ) ] group {
					'yes': [ | hint => ] reference
					'yes parameters': [ (, ) ] group {
						'start': [ start = ] component 'reference attribute'
					}
					'no': [ | no-hint => ] reference
				}
			}
		}
	}
}
'command': [ command ] component 'command attribute'
'command parameters': [ (, ) ] group {
	'progress': [ progress = ] component 'stategroup attribute'
	'progress options': [ (, ) ] group {
		'running': [ | running => ] reference
		'finished': [ | finished => ] reference
	}
	'status': [ status = ] component 'stategroup attribute'
	'status options': [ (, ) ] group {
		'unsolved': [ | unsolved => ] reference
		'unsolved parameters': [ (, ) ] group {
			'unsolved cause': [ unsolved-cause = ] component 'stategroup attribute'
			'unsolved cause options': [ (, ) ] group {
				'unknown': [ | unknown => ] reference
				'infeasible': [ | infeasible => ] reference
				'model invalid': [ | model-invalid => ] reference
			}
		}
		'solved': [ | solved => ] reference
		'solved parameters': [ (, ) ] group {
			'solution quality': [ solution-quality = ] component 'stategroup attribute'
			'solution quality options': [ (, ) ] group {
				'optimal': [ | optimal => ] reference
				'feasible': [ | feasible => ] reference
			}
			'jobs': [ jobs = ] component 'collection attribute'
			'job parameters': [ (, ) ] group {
				'tasks': [ tasks = ] component 'collection attribute'
				'task parameters': [ (, ) ] group {
					'start': [ start = ] component 'reference attribute'
				}
			}
		}
	}
}
'collection attribute' {
	'attribute': reference
}
'number attribute' {
	'attribute': reference
}
'zero or positive number attribute' {
	'expression': component 'number attribute'
}
'positive number attribute' {
	'expression': component 'zero or positive number attribute'
}
'reference attribute' {
	'attribute': reference
}
'text attribute' {
	'attribute': reference
}
'command attribute' {
	'attribute': reference
}
'stategroup attribute' {
	'attribute': reference
}