// -*- mode: typescript; indent-tabs-mode: nil; js-basic-offset: 4 -*- // // This file is part of Genie // // Copyright 2019-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 ThingpediaLoader from './load-thingpedia'; import { $load as $load___common_constants,constant_Number, constant_String, constant_Entity__tt__url, constant_Entity__tt__username, constant_Entity__tt__hashtag, constant_Entity__tt__phone_number, constant_Entity__tt__email_address, constant_Entity__tt__path_name, constant_Currency, constant_Time, constant_Date, constant_Location, constant_Entity__tt__picture, constant_Entity__tt__function, constant_Entity__tt__program, constant_Entity__tt__device, constant_Boolean, constant_RecurrentTimeSpecification, constant_Measure_ms, constant_Measure_byte, constant_Measure_kg, constant_Measure_C, constant_Measure_m, constant_Measure_m2, constant_Measure_m3, constant_Measure_mps, constant_Measure_Pa, constant_Measure_kcal, constant_Measure_W, constant_Measure_lx, constant_Measure_lm, constant_Measure_dB, constant_Measure_dBm, constant_Any, constant_Numeric } from "./common-constants.genie.out"; export { constant_Number, constant_String, constant_Entity__tt__url, constant_Entity__tt__username, constant_Entity__tt__hashtag, constant_Entity__tt__phone_number, constant_Entity__tt__email_address, constant_Entity__tt__path_name, constant_Currency, constant_Time, constant_Date, constant_Location, constant_Entity__tt__picture, constant_Entity__tt__function, constant_Entity__tt__program, constant_Entity__tt__device, constant_Boolean, constant_RecurrentTimeSpecification, constant_Measure_ms, constant_Measure_byte, constant_Measure_kg, constant_Measure_C, constant_Measure_m, constant_Measure_m2, constant_Measure_m3, constant_Measure_mps, constant_Measure_Pa, constant_Measure_kcal, constant_Measure_W, constant_Measure_lx, constant_Measure_lm, constant_Measure_dB, constant_Measure_dBm, constant_Any, constant_Numeric }; export const thingpedia_complete_query : $SentenceGeneratorTypes.NonTerminal = "thingpedia_complete_query"; export const thingpedia_complete_get_command : $SentenceGeneratorTypes.NonTerminal = "thingpedia_complete_get_command"; export const thingpedia_complete_stream : $SentenceGeneratorTypes.NonTerminal = "thingpedia_complete_stream"; export const thingpedia_complete_action : $SentenceGeneratorTypes.NonTerminal = "thingpedia_complete_action"; export const thingpedia_complete_action_past : $SentenceGeneratorTypes.NonTerminal = "thingpedia_complete_action_past"; export const thingpedia_complete_join_action_past : $SentenceGeneratorTypes.NonTerminal = "thingpedia_complete_join_action_past"; export const thingpedia_complete_program : $SentenceGeneratorTypes.NonTerminal = "thingpedia_complete_program"; export const thingpedia_who_question : $SentenceGeneratorTypes.NonTerminal = "thingpedia_who_question"; export const thingpedia_search_question : $SentenceGeneratorTypes.NonTerminal = "thingpedia_search_question"; export const thingpedia_slot_fill_question : $SentenceGeneratorTypes.NonTerminal = "thingpedia_slot_fill_question"; export const thingpedia_user_question : $SentenceGeneratorTypes.NonTerminal = "thingpedia_user_question"; export const same_sentence_coref : $SentenceGeneratorTypes.NonTerminal = "same_sentence_coref"; export const context_coref : $SentenceGeneratorTypes.NonTerminal = "context_coref"; export const list_context_coref : $SentenceGeneratorTypes.NonTerminal = "list_context_coref"; export const coref_constant : $SentenceGeneratorTypes.NonTerminal = "coref_constant"; export const placeholder : $SentenceGeneratorTypes.NonTerminal = "placeholder"; export const constant_or_undefined : $SentenceGeneratorTypes.NonTerminal = "constant_or_undefined"; export const table_join_replace_placeholder : $SentenceGeneratorTypes.NonTerminal = "table_join_replace_placeholder"; export const action_replace_param_with_table : $SentenceGeneratorTypes.NonTerminal = "action_replace_param_with_table"; export const action_replace_param_with_stream : $SentenceGeneratorTypes.NonTerminal = "action_replace_param_with_stream"; export const with_filtered_table : $SentenceGeneratorTypes.NonTerminal = "with_filtered_table"; export const with_arg_min_max_table : $SentenceGeneratorTypes.NonTerminal = "with_arg_min_max_table"; export const projection_Any : $SentenceGeneratorTypes.NonTerminal = "projection_Any"; export const stream_projection_Any : $SentenceGeneratorTypes.NonTerminal = "stream_projection_Any"; export const stream_coref_same_sentence : $SentenceGeneratorTypes.NonTerminal = "stream_coref_same_sentence"; export const stream_coref_context : $SentenceGeneratorTypes.NonTerminal = "stream_coref_context"; export const stream_coref_list_context : $SentenceGeneratorTypes.NonTerminal = "stream_coref_list_context"; export const action_coref_same_sentence : $SentenceGeneratorTypes.NonTerminal = "action_coref_same_sentence"; export const action_coref_context : $SentenceGeneratorTypes.NonTerminal = "action_coref_context"; export const action_coref_list_context : $SentenceGeneratorTypes.NonTerminal = "action_coref_list_context"; export const query_coref_same_sentence : $SentenceGeneratorTypes.NonTerminal = "query_coref_same_sentence"; export const query_coref_context : $SentenceGeneratorTypes.NonTerminal = "query_coref_context"; export const query_coref_list_context : $SentenceGeneratorTypes.NonTerminal = "query_coref_list_context"; export const get_command_coref_same_sentence : $SentenceGeneratorTypes.NonTerminal = "get_command_coref_same_sentence"; export const get_command_coref_context : $SentenceGeneratorTypes.NonTerminal = "get_command_coref_context"; export const get_command_coref_list_context : $SentenceGeneratorTypes.NonTerminal = "get_command_coref_list_context"; export const out_param_Any : $SentenceGeneratorTypes.NonTerminal = "out_param_Any"; export const out_param_Any_hidden : $SentenceGeneratorTypes.NonTerminal = "out_param_Any_hidden"; export const the_out_param_Any : $SentenceGeneratorTypes.NonTerminal = "the_out_param_Any"; export const out_param_Array__Any : $SentenceGeneratorTypes.NonTerminal = "out_param_Array__Any"; export const out_param_Array__Compound : $SentenceGeneratorTypes.NonTerminal = "out_param_Array__Compound"; export const out_param_ArrayCount : $SentenceGeneratorTypes.NonTerminal = "out_param_ArrayCount"; export const out_param_npp : $SentenceGeneratorTypes.NonTerminal = "out_param_npp"; export const out_param_npi : $SentenceGeneratorTypes.NonTerminal = "out_param_npi"; export const out_param_avp : $SentenceGeneratorTypes.NonTerminal = "out_param_avp"; export const out_param_pvp : $SentenceGeneratorTypes.NonTerminal = "out_param_pvp"; export const out_param_npv : $SentenceGeneratorTypes.NonTerminal = "out_param_npv"; export const out_param_apv : $SentenceGeneratorTypes.NonTerminal = "out_param_apv"; export const input_param : $SentenceGeneratorTypes.NonTerminal = "input_param"; export const both_prefix : $SentenceGeneratorTypes.NonTerminal = "both_prefix"; export const pronoun_the_first : $SentenceGeneratorTypes.NonTerminal = "pronoun_the_first"; export const pronoun_the_second : $SentenceGeneratorTypes.NonTerminal = "pronoun_the_second"; export const each_other : $SentenceGeneratorTypes.NonTerminal = "each_other"; export const npp_filter : $SentenceGeneratorTypes.NonTerminal = "npp_filter"; export const npp_join_condition : $SentenceGeneratorTypes.NonTerminal = "npp_join_condition"; export const npp_symmetric_join_condition : $SentenceGeneratorTypes.NonTerminal = "npp_symmetric_join_condition"; export const npp_input_param : $SentenceGeneratorTypes.NonTerminal = "npp_input_param"; export const npp_argminmax : $SentenceGeneratorTypes.NonTerminal = "npp_argminmax"; export const coref_npp_filter : $SentenceGeneratorTypes.NonTerminal = "coref_npp_filter"; export const coref_npp_input_param : $SentenceGeneratorTypes.NonTerminal = "coref_npp_input_param"; export const npp_boolean_projection : $SentenceGeneratorTypes.NonTerminal = "npp_boolean_projection"; export const npi_filter : $SentenceGeneratorTypes.NonTerminal = "npi_filter"; export const npi_join_condition : $SentenceGeneratorTypes.NonTerminal = "npi_join_condition"; export const npi_symmetric_join_condition : $SentenceGeneratorTypes.NonTerminal = "npi_symmetric_join_condition"; export const npi_input_param : $SentenceGeneratorTypes.NonTerminal = "npi_input_param"; export const npi_argminmax : $SentenceGeneratorTypes.NonTerminal = "npi_argminmax"; export const coref_npi_filter : $SentenceGeneratorTypes.NonTerminal = "coref_npi_filter"; export const coref_npi_input_param : $SentenceGeneratorTypes.NonTerminal = "coref_npi_input_param"; export const npi_boolean_projection : $SentenceGeneratorTypes.NonTerminal = "npi_boolean_projection"; export const pvp_filter : $SentenceGeneratorTypes.NonTerminal = "pvp_filter"; export const pvp_join_condition : $SentenceGeneratorTypes.NonTerminal = "pvp_join_condition"; export const pvp_symmetric_join_condition : $SentenceGeneratorTypes.NonTerminal = "pvp_symmetric_join_condition"; export const pvp_input_param : $SentenceGeneratorTypes.NonTerminal = "pvp_input_param"; export const pvp_argminmax : $SentenceGeneratorTypes.NonTerminal = "pvp_argminmax"; export const coref_pvp_filter : $SentenceGeneratorTypes.NonTerminal = "coref_pvp_filter"; export const coref_pvp_input_param : $SentenceGeneratorTypes.NonTerminal = "coref_pvp_input_param"; export const pvp_boolean_projection : $SentenceGeneratorTypes.NonTerminal = "pvp_boolean_projection"; export const preposition_filter : $SentenceGeneratorTypes.NonTerminal = "preposition_filter"; export const preposition_join_condition : $SentenceGeneratorTypes.NonTerminal = "preposition_join_condition"; export const preposition_symmetric_join_condition : $SentenceGeneratorTypes.NonTerminal = "preposition_symmetric_join_condition"; export const preposition_input_param : $SentenceGeneratorTypes.NonTerminal = "preposition_input_param"; export const preposition_argminmax : $SentenceGeneratorTypes.NonTerminal = "preposition_argminmax"; export const coref_preposition_filter : $SentenceGeneratorTypes.NonTerminal = "coref_preposition_filter"; export const coref_preposition_input_param : $SentenceGeneratorTypes.NonTerminal = "coref_preposition_input_param"; export const preposition_boolean_projection : $SentenceGeneratorTypes.NonTerminal = "preposition_boolean_projection"; export const avp_filter : $SentenceGeneratorTypes.NonTerminal = "avp_filter"; export const avp_join_condition : $SentenceGeneratorTypes.NonTerminal = "avp_join_condition"; export const avp_symmetric_join_condition : $SentenceGeneratorTypes.NonTerminal = "avp_symmetric_join_condition"; export const avp_input_param : $SentenceGeneratorTypes.NonTerminal = "avp_input_param"; export const avp_argminmax : $SentenceGeneratorTypes.NonTerminal = "avp_argminmax"; export const coref_avp_filter : $SentenceGeneratorTypes.NonTerminal = "coref_avp_filter"; export const coref_avp_input_param : $SentenceGeneratorTypes.NonTerminal = "coref_avp_input_param"; export const avp_boolean_projection : $SentenceGeneratorTypes.NonTerminal = "avp_boolean_projection"; export const npv_filter : $SentenceGeneratorTypes.NonTerminal = "npv_filter"; export const npv_join_condition : $SentenceGeneratorTypes.NonTerminal = "npv_join_condition"; export const npv_symmetric_join_condition : $SentenceGeneratorTypes.NonTerminal = "npv_symmetric_join_condition"; export const npv_input_pconstant_namearam : $SentenceGeneratorTypes.NonTerminal = "npv_input_pconstant_namearam"; export const npv_argminmax : $SentenceGeneratorTypes.NonTerminal = "npv_argminmax"; export const coref_npv_filter : $SentenceGeneratorTypes.NonTerminal = "coref_npv_filter"; export const coref_npv_input_param : $SentenceGeneratorTypes.NonTerminal = "coref_npv_input_param"; export const npv_boolean_projection : $SentenceGeneratorTypes.NonTerminal = "npv_boolean_projection"; export const apv_filter : $SentenceGeneratorTypes.NonTerminal = "apv_filter"; export const apv_join_condition : $SentenceGeneratorTypes.NonTerminal = "apv_join_condition"; export const apv_symmetric_join_condition : $SentenceGeneratorTypes.NonTerminal = "apv_symmetric_join_condition"; export const apv_input_param : $SentenceGeneratorTypes.NonTerminal = "apv_input_param"; export const apv_argminmax : $SentenceGeneratorTypes.NonTerminal = "apv_argminmax"; export const coref_apv_filter : $SentenceGeneratorTypes.NonTerminal = "coref_apv_filter"; export const coref_apv_input_param : $SentenceGeneratorTypes.NonTerminal = "coref_apv_input_param"; export const apv_boolean_projection : $SentenceGeneratorTypes.NonTerminal = "apv_boolean_projection"; export const reverse_verb_filter : $SentenceGeneratorTypes.NonTerminal = "reverse_verb_filter"; export const reverse_verb_join_condition : $SentenceGeneratorTypes.NonTerminal = "reverse_verb_join_condition"; export const reverse_verb_symmetric_join_condition : $SentenceGeneratorTypes.NonTerminal = "reverse_verb_symmetric_join_condition"; export const reverse_verb_input_param : $SentenceGeneratorTypes.NonTerminal = "reverse_verb_input_param"; export const coref_reverse_verb_filter : $SentenceGeneratorTypes.NonTerminal = "coref_reverse_verb_filter"; export const coref_reverse_verb_input_param : $SentenceGeneratorTypes.NonTerminal = "coref_reverse_verb_input_param"; export const question_projection_table : $SentenceGeneratorTypes.NonTerminal = "question_projection_table"; export const command_projection_table : $SentenceGeneratorTypes.NonTerminal = "command_projection_table"; export const constant_name : $SentenceGeneratorTypes.NonTerminal = "constant_name"; export const the_base_table : $SentenceGeneratorTypes.NonTerminal = "the_base_table"; export const base_table : $SentenceGeneratorTypes.NonTerminal = "base_table"; export const base_table_hidden : $SentenceGeneratorTypes.NonTerminal = "base_table_hidden"; export const base_noun_phrase : $SentenceGeneratorTypes.NonTerminal = "base_noun_phrase"; export const generic_anything_noun_phrase : $SentenceGeneratorTypes.NonTerminal = "generic_anything_noun_phrase"; export const generic_base_noun_phrase : $SentenceGeneratorTypes.NonTerminal = "generic_base_noun_phrase"; /** * 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 { await $load___common_constants($options, $locale, $grammar, $loader); $grammar.declareSymbol("thingpedia_complete_query"); $grammar.declareSymbol("thingpedia_complete_get_command"); $grammar.declareSymbol("thingpedia_complete_stream"); $grammar.declareSymbol("thingpedia_complete_action"); $grammar.declareSymbol("thingpedia_complete_action_past"); $grammar.declareSymbol("thingpedia_complete_join_action_past"); $grammar.declareSymbol("thingpedia_complete_program"); $grammar.declareSymbol("thingpedia_who_question"); $grammar.declareSymbol("thingpedia_search_question"); $grammar.declareSymbol("thingpedia_slot_fill_question"); $grammar.declareSymbol("thingpedia_user_question"); $grammar.declareSymbol("same_sentence_coref"); $grammar.declareSymbol("context_coref"); $grammar.declareSymbol("list_context_coref"); $grammar.declareSymbol("coref_constant"); $grammar.declareSymbol("placeholder"); $grammar.declareSymbol("constant_or_undefined"); $grammar.addRule("constant_or_undefined", [new $runtime.NonTerminal("placeholder", "pl", undefined)], "${pl}", ((pl : C.Placeholder) : (Ast.Value)|null => { const v = new Ast.Value.Undefined(true); // override getType() so we can do type-checks v.getType = () => pl.type; return v; }), C.valueKeyFn, { }); $grammar.declareSymbol("table_join_replace_placeholder"); $grammar.declareSymbol("action_replace_param_with_table"); $grammar.declareSymbol("action_replace_param_with_stream"); $grammar.declareSymbol("with_filtered_table"); $grammar.declareSymbol("with_arg_min_max_table"); $grammar.declareSymbol("projection_Any"); $grammar.declareSymbol("stream_projection_Any"); $grammar.declareSymbol("stream_coref_same_sentence"); $grammar.declareSymbol("stream_coref_context"); $grammar.declareSymbol("stream_coref_list_context"); $grammar.declareSymbol("action_coref_same_sentence"); $grammar.declareSymbol("action_coref_context"); $grammar.declareSymbol("action_coref_list_context"); $grammar.declareSymbol("query_coref_same_sentence"); $grammar.declareSymbol("query_coref_context"); $grammar.declareSymbol("query_coref_list_context"); $grammar.declareSymbol("get_command_coref_same_sentence"); $grammar.declareSymbol("get_command_coref_context"); $grammar.declareSymbol("get_command_coref_list_context"); $grammar.declareSymbol("out_param_Any"); $grammar.declareSymbol("out_param_Any_hidden"); $grammar.declareSymbol("the_out_param_Any"); $grammar.declareSymbol("out_param_Array__Any"); $grammar.declareSymbol("out_param_Array__Compound"); $grammar.declareSymbol("out_param_ArrayCount"); $grammar.declareSymbol("out_param_npp"); $grammar.declareSymbol("out_param_npi"); $grammar.declareSymbol("out_param_avp"); $grammar.declareSymbol("out_param_pvp"); $grammar.declareSymbol("out_param_npv"); $grammar.declareSymbol("out_param_apv"); $grammar.declareSymbol("input_param"); $grammar.declareSymbol("both_prefix"); $grammar.addRule("both_prefix", [], "", (() : (string)|null => ""), undefined, { identity: (true) }); $grammar.declareSymbol("pronoun_the_first"); $grammar.declareSymbol("pronoun_the_second"); $grammar.declareSymbol("each_other"); $grammar.declareSymbol("npp_filter"); $grammar.declareSymbol("npp_join_condition"); $grammar.declareSymbol("npp_symmetric_join_condition"); $grammar.declareSymbol("npp_input_param"); $grammar.declareSymbol("npp_argminmax"); $grammar.declareSymbol("coref_npp_filter"); $grammar.declareSymbol("coref_npp_input_param"); $grammar.declareSymbol("npp_boolean_projection"); $grammar.declareSymbol("npi_filter"); $grammar.declareSymbol("npi_join_condition"); $grammar.declareSymbol("npi_symmetric_join_condition"); $grammar.declareSymbol("npi_input_param"); $grammar.declareSymbol("npi_argminmax"); $grammar.declareSymbol("coref_npi_filter"); $grammar.declareSymbol("coref_npi_input_param"); $grammar.declareSymbol("npi_boolean_projection"); $grammar.declareSymbol("pvp_filter"); $grammar.declareSymbol("pvp_join_condition"); $grammar.declareSymbol("pvp_symmetric_join_condition"); $grammar.declareSymbol("pvp_input_param"); $grammar.declareSymbol("pvp_argminmax"); $grammar.declareSymbol("coref_pvp_filter"); $grammar.declareSymbol("coref_pvp_input_param"); $grammar.declareSymbol("pvp_boolean_projection"); $grammar.declareSymbol("preposition_filter"); $grammar.declareSymbol("preposition_join_condition"); $grammar.declareSymbol("preposition_symmetric_join_condition"); $grammar.declareSymbol("preposition_input_param"); $grammar.declareSymbol("preposition_argminmax"); $grammar.declareSymbol("coref_preposition_filter"); $grammar.declareSymbol("coref_preposition_input_param"); $grammar.declareSymbol("preposition_boolean_projection"); $grammar.declareSymbol("avp_filter"); $grammar.declareSymbol("avp_join_condition"); $grammar.declareSymbol("avp_symmetric_join_condition"); $grammar.declareSymbol("avp_input_param"); $grammar.declareSymbol("avp_argminmax"); $grammar.declareSymbol("coref_avp_filter"); $grammar.declareSymbol("coref_avp_input_param"); $grammar.declareSymbol("avp_boolean_projection"); $grammar.declareSymbol("npv_filter"); $grammar.declareSymbol("npv_join_condition"); $grammar.declareSymbol("npv_symmetric_join_condition"); $grammar.declareSymbol("npv_input_pconstant_namearam"); $grammar.declareSymbol("npv_argminmax"); $grammar.declareSymbol("coref_npv_filter"); $grammar.declareSymbol("coref_npv_input_param"); $grammar.declareSymbol("npv_boolean_projection"); $grammar.declareSymbol("apv_filter"); $grammar.declareSymbol("apv_join_condition"); $grammar.declareSymbol("apv_symmetric_join_condition"); $grammar.declareSymbol("apv_input_param"); $grammar.declareSymbol("apv_argminmax"); $grammar.declareSymbol("coref_apv_filter"); $grammar.declareSymbol("coref_apv_input_param"); $grammar.declareSymbol("apv_boolean_projection"); $grammar.declareSymbol("reverse_verb_filter"); $grammar.declareSymbol("reverse_verb_join_condition"); $grammar.declareSymbol("reverse_verb_symmetric_join_condition"); $grammar.declareSymbol("reverse_verb_input_param"); $grammar.declareSymbol("coref_reverse_verb_filter"); $grammar.declareSymbol("coref_reverse_verb_input_param"); $grammar.declareSymbol("question_projection_table"); $grammar.declareSymbol("command_projection_table"); $grammar.declareSymbol("constant_name"); $grammar.addRule("constant_name", [new $runtime.NonTerminal("constant_Number", undefined, undefined)], "${constant_Number}", (($0 : Ast.NumberValue) : (Ast.EntityValue|Ast.NumberValue)|null => { return $0; }), C.entityOrNumberValueKeyFn, { identity: (true) }); $grammar.declareSymbol("the_base_table"); $grammar.declareSymbol("base_table"); $grammar.declareSymbol("base_table_hidden"); $grammar.declareSymbol("base_noun_phrase"); $grammar.declareSymbol("generic_anything_noun_phrase"); $grammar.declareSymbol("generic_base_noun_phrase"); };