override public void NewCommand(string command) { if (string.IsNullOrEmpty(command)) { return; } Console.WriteLine(""); Console.WriteLine("========== VOICE COMMAND START ==========="); Console.WriteLine("Received new voice command {0}", command); Instruction instruction = new Instruction(command.Trim(), GetApplianceNames()); MainExpression expression = new MainExpression(); bool matchFound = expression.Interpret(instruction); Console.WriteLine(this.GetType().Name + (matchFound ? "-Match found." : "-Match not found."), command); if (matchFound) { var applianceResult = appliances.Single(item => item.GetApplianceNickName().ToLower() == instruction.GetApplianceNickName().ToLower()); Appliance appliance = applianceResult as Appliance; appliance.Perform(instruction.GetAction(), instruction.GetActionParams()); } Console.WriteLine("========== VOICE COMMAND END ==========="); }
// List<LiftedFunctionExpression> Functions; // Expression MainExpression; public Trac42Program Compile() { var state = new GeneratorState(); var program = new Trac42Program(); Functions.ForEach(function => function.Compile(state, program)); program.Emit(new Instruction(Instruction.OPCODE.LABEL, "main")); MainExpression.Compile(state, program); program.Emit(new Instruction(Instruction.OPCODE.END)); return(program); }
// List<LiftedFunctionExpression> Functions; // Expression MainExpression; public override string ToString() { var builder = new PrettyBuilder(); Functions.ForEach( function => { function.Pretty(builder); builder.NewLine(); }); MainExpression.Pretty(builder); return(builder.ToString()); }