UNPKG

pddl-workspace

Version:
41 lines 2.19 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.InstantActionParser = 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 `(:action ...)` blocks. */ class InstantActionParser { constructor(actionNode, positionResolver) { /*(:action|process|event name :parameters (<parameters>) :precondition (and <conditions>) :effect (and <effects>) )*/ 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 conditionNode = actionNode.getKeywordOpenBracket('precondition'); const effectNode = actionNode.getKeywordOpenBracket('effect'); const location = new DocumentPositionResolver_1.PddlRange({ start: positionResolver.resolveToPosition(actionNode.getStart()), end: positionResolver.resolveToPosition(actionNode.getEnd()) }); this.action = new DomainInfo_1.InstantAction(actionName, parameters, location, conditionNode, effectNode); this.action.setDocumentation(DerivedVariableParser_1.DerivedVariablesParser.getDocumentationAbove(actionNode)); } getAction() { return this.action; } } exports.InstantActionParser = InstantActionParser; //# sourceMappingURL=InstantActionParser.js.map