// -*- mode: js; indent-tabs-mode: nil; js-basic-offset: 4 -*- // // This file is part of Genie // // Copyright 2020 The Board of Trustees of the Leland Stanford Junior University // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Author: Giovanni Campagna import * as $runtime from "../../sentence-generator/runtime"; import type $SentenceGenerator from "../../sentence-generator/generator"; import * as $SentenceGeneratorTypes from "../../sentence-generator/types"; import * as $I18n from "../../i18n/index"; import { Ast, } from 'thingtalk'; import * as C from '../ast_manip'; import * as D from '../dialogue_acts'; import ThingpediaLoader from '../load-thingpedia'; export const initial_command : $SentenceGeneratorTypes.NonTerminal = "initial_command"; /** * Load the templates in this file. * * This is an autogenerated method that will be called by the {@link SentenceGenerator} * when the templates are imported. */ export async function $load($options : $SentenceGeneratorTypes.GrammarOptions, $locale : $I18n.LanguagePack, $grammar : $SentenceGenerator, $loader : ThingpediaLoader) : Promise { $grammar.declareSymbol("initial_command"); $grammar.addRule("initial_command", [new $runtime.NonTerminal("say_command", undefined, undefined)], "${say_command}", (($0 : Ast.Expression) : (Ast.Expression)|null => { return $0; }), C.expressionKeyFn, { weight: (0.1), identity: (true) }); $grammar.addRule("initial_command", [new $runtime.NonTerminal("complete_action", undefined, undefined)], "${complete_action}", (($0 : Ast.Expression) : (Ast.Expression)|null => { return $0; }), C.expressionKeyFn, { identity: (true) }); $grammar.addRule("initial_command", [new $runtime.NonTerminal("generic_preamble_for_action", undefined, undefined), new $runtime.NonTerminal("complete_action", "action", undefined)], $locale._("${generic_preamble_for_action} ${action}"), (($0 : string, action : Ast.Expression) : (Ast.Expression)|null => action), C.expressionKeyFn, { }); $grammar.addRule("initial_command", [new $runtime.NonTerminal("generic_preamble_for_action", undefined, undefined), new $runtime.NonTerminal("forward_get_do_command", "action", undefined)], $locale._("${generic_preamble_for_action} ${action}"), (($0 : string, action : Ast.ChainExpression) : (Ast.Expression)|null => action), C.expressionKeyFn, { weight: (0.1) }); $grammar.addRule("initial_command", [new $runtime.NonTerminal("search_command", undefined, undefined)], "${search_command}", (($0 : Ast.Expression) : (Ast.Expression)|null => { return $0; }), C.expressionKeyFn, { weight: (2), identity: (true) }); $grammar.addRule("initial_command", [new $runtime.NonTerminal("complete_question", undefined, undefined)], "${complete_question}", (($0 : Ast.Expression) : (Ast.Expression)|null => { return $0; }), C.expressionKeyFn, { weight: (0.5), identity: (true) }); $grammar.addRule("initial_command", [new $runtime.NonTerminal("projection_question", undefined, undefined)], "${projection_question}", (($0 : Ast.Expression) : (Ast.Expression)|null => { return $0; }), C.expressionKeyFn, { weight: (0.1), identity: (true) }); if ($options.flags.dontcare) { $grammar.addRule("initial_command", [new $runtime.NonTerminal("search_command", "stmt", undefined), new $runtime.NonTerminal("specific_dontcare_phrase", "dontcare", undefined)], $locale._("${stmt} {.|,} ${dontcare}"), ((stmt : Ast.Expression, dontcare : C.FilterSlot) : (Ast.Expression)|null => D.addInitialDontCare(stmt, dontcare)), C.expressionKeyFn, { weight: (0.1) }); $grammar.addRule("initial_command", [new $runtime.NonTerminal("complete_action", "stmt", undefined), new $runtime.NonTerminal("specific_dontcare_phrase", "dontcare", undefined)], $locale._("${stmt} {.|,} ${dontcare}"), ((stmt : Ast.Expression, dontcare : C.FilterSlot) : (Ast.Expression)|null => D.addInitialDontCare(stmt, dontcare)), C.expressionKeyFn, { weight: (0.1) }); $grammar.addRule("initial_command", [new $runtime.NonTerminal("generic_preamble_for_action", undefined, undefined), new $runtime.NonTerminal("complete_action", "stmt", undefined), new $runtime.NonTerminal("specific_dontcare_phrase", "dontcare", undefined)], $locale._("${generic_preamble_for_action} ${stmt} {.|,} ${dontcare}"), (($0 : string, stmt : Ast.Expression, dontcare : C.FilterSlot) : (Ast.Expression)|null => D.addInitialDontCare(stmt, dontcare)), C.expressionKeyFn, { weight: (0.1) }); $grammar.addRule("initial_command", [new $runtime.NonTerminal("generic_preamble_for_action", undefined, undefined), new $runtime.NonTerminal("forward_get_do_command", "stmt", undefined), new $runtime.NonTerminal("specific_dontcare_phrase", "dontcare", undefined)], $locale._("${generic_preamble_for_action} ${stmt} {.|,} ${dontcare}"), (($0 : string, stmt : Ast.ChainExpression, dontcare : C.FilterSlot) : (Ast.Expression)|null => D.addInitialDontCare(stmt, dontcare)), C.expressionKeyFn, { weight: (0.1) }); } if (!$options.flags.nostream) { if ($options.flags.timer) { $grammar.addRule("initial_command", [new $runtime.NonTerminal("timer_rule", "stmt", undefined)], "${stmt}", ((stmt : Ast.ChainExpression) : (Ast.Expression)|null => stmt), C.expressionKeyFn, { weight: (0.2) }); } $grammar.addRule("initial_command", [new $runtime.NonTerminal("monitor_command", undefined, undefined)], "${monitor_command}", (($0 : Ast.Expression) : (Ast.Expression)|null => { return $0; }), C.expressionKeyFn, { weight: (0.1), identity: (true) }); $grammar.addRule("initial_command", [new $runtime.NonTerminal("when_command", undefined, undefined)], "${when_command}", (($0 : Ast.Expression) : (Ast.Expression)|null => { return $0; }), C.expressionKeyFn, { weight: (0.1), identity: (true) }); } $grammar.addRule("initial_command", [new $runtime.NonTerminal("thingpedia_complete_program", undefined, undefined)], "${thingpedia_complete_program}", (($0 : Ast.Expression) : (Ast.Expression)|null => { return $0; }), C.expressionKeyFn, { identity: (true) }); };