interface-to-rcmpsp

solver grammar version 0.5

'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 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'
	'started': [ started = ] component 'stategroup attribute'
	'started options': [ (, ) ] group {
		'yes': [ | started => ] reference
		'no': [ | not-started => ] reference
	}
	'tasks': [ tasks = ] component 'collection attribute'
	'task mapping': [ (, ) ] group {
		'dependencies': [ dependencies = ] component 'collection attribute'
		'dependency mapping': [ (, ) ] group { }
		'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'
			}
			'unlocked': [ | unlocked => ] 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
}
'command attribute' {
	'attribute': reference
}
'stategroup attribute' {
	'attribute': reference
}