pddl-workspace
Version:
41 lines • 2.19 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.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