UNPKG

pddl-workspace

Version:
61 lines 3.34 kB
"use strict"; /* -------------------------------------------------------------------------------------------- * 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