pddl-workspace
Version:
61 lines • 3.34 kB
JavaScript
;
/* --------------------------------------------------------------------------------------------
* Copyright (c) Jan Dolejsi. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
Object.defineProperty(exports, "__esModule", { value: true });
exports.JobParser = exports.DurativeActionParser = void 0;
const PddlTokenizer_1 = require("./PddlTokenizer");
const DocumentPositionResolver_1 = require("../DocumentPositionResolver");
const VariablesParser_1 = require("./VariablesParser");
const DomainInfo_1 = require("../DomainInfo");
const DerivedVariableParser_1 = require("./DerivedVariableParser");
/**
* Parses `(:durative-action ...)` blocks.
*/
class DurativeActionParser {
constructor(actionNode, positionResolver) {
/*(:durative-action name
:parameters (<parameters>)
:duration (<duration constraint>)
:condition (and
(at start (<condition>))
(over all (<condition>))
(at end (<condition>))
)
:effect (and
(at start (<effect>))
(at end (<effect>))
(increase (<function>) (* #t <expression>))
(decrease (<function>) (* #t <expression>))
)
)*/
const nameNode = actionNode.getFirstChild(PddlTokenizer_1.PddlTokenType.Other, /[\w-]+/);
const actionName = nameNode ? nameNode.getText() : undefined;
const parametersNode = actionNode.getKeywordOpenBracket('parameters');
const parameters = parametersNode ? (0, VariablesParser_1.parseParameters)(parametersNode.getNestedNonCommentText()) : [];
const durationNode = actionNode.getKeywordOpenBracket('duration');
const conditionNode = actionNode.getKeywordOpenBracket('condition');
const effectNode = actionNode.getKeywordOpenBracket('effect');
const location = new DocumentPositionResolver_1.PddlRange({
start: positionResolver.resolveToPosition(actionNode.getStart()),
end: positionResolver.resolveToPosition(actionNode.getEnd())
});
this.action = this.createDurativeAction(actionName, parameters, location, actionNode, parametersNode, durationNode, conditionNode, effectNode);
this.action.setDocumentation(DerivedVariableParser_1.DerivedVariablesParser.getDocumentationAbove(actionNode));
}
createDurativeAction(actionName, parameters, location, actionNode, parametersNode, durationNode, conditionNode, effectNode) {
return new DomainInfo_1.DurativeAction(actionName, parameters, location, actionNode, parametersNode, durationNode, conditionNode, effectNode);
}
getAction() {
return this.action;
}
}
exports.DurativeActionParser = DurativeActionParser;
class JobParser extends DurativeActionParser {
createDurativeAction(actionName, parameters, location, actionNode, parametersNode, durationNode, conditionNode, effectNode) {
return new DomainInfo_1.Job(actionName, parameters, location, actionNode, parametersNode, durationNode, conditionNode, effectNode);
}
}
exports.JobParser = JobParser;
//# sourceMappingURL=DurativeActionParser.js.map