public override Value Evaluate() { var value1 = getValue(); var arguments = new Arguments(); arguments.AddArgument(index); var assignedValue = expression.AssignmentValue(); var message = insert ? "insertSet" : SetterName("item"); if (verb.If(out var value)) { var value2 = SendMessage(value1, GetterName("item"), arguments); var stack = State.Stack; stack.Push(value2); stack.Push(assignedValue); var evaluated = value.Evaluate(); arguments.AddArgument(evaluated); SendMessage(value1, message, arguments); } else { arguments.AddArgument(assignedValue); SendMessage(value1, message, arguments); } result = value1.ToString(); typeName = value1.Type.ToString(); return(null); }
private string BuildArgs(IPEndPoint endpoint, NetworkCredential credentials) { var args = CustomArgs + " "; if (endpoint == null) { throw new InvalidProgramException("Endpoint must be set before calling Connect()"); } args += Arguments.AddArgument(Args.Host, endpoint.Address); args += Arguments.AddArgument(Args.Port, endpoint.Port); if (credentials != null) { if (!String.IsNullOrEmpty(credentials.UserName)) { args += Arguments.AddArgument(Args.User, credentials.UserName); //No point in checking password if no username specified. if (!String.IsNullOrEmpty(credentials.UserName)) { args += Arguments.AddArgument(Args.Pass, credentials.Password); } } } if (FullScreen) { args += Arguments.AddSwitch(Args.Fullscreen); } return(args); }
public override Verb CreateVerb(string[] tokens) { var functionName = tokens[2]; Color(position, tokens[1].Length, Whitespaces); Color(functionName.Length, IsClassName(functionName) ? Types : Invokeables); Color(tokens[3].Length, Structures); Color(tokens[4].Length, Whitespaces); if (GetExpression(source, NextPosition, CloseParenthesis()) is Some <(Block, int)> some) { (var block, var index) = some.Value; var arguments = new Arguments(block); var blockOrLambdaParser = new BlockOrLambdaParser(); if (blockOrLambdaParser.Scan(source, index)) { index = blockOrLambdaParser.Position; var value = blockOrLambdaParser.Value; arguments.AddArgument(value); } overridePosition = index; return(new FunctionInvoke(functionName, arguments)); } return(null); }
public override void InternalConnect(IPEndPoint endpoint, NetworkCredential credential) { var path = Environment.GetEnvironmentVariable("windir"); StartInfo.FileName = path + "\\system32\\mstsc.exe"; var serverArg = String.Format("{0}:{1}", endpoint.Address, endpoint.Port); StartInfo.Arguments += Arguments.AddArgument(Args.Server, serverArg); Start(); }
private Arguments ProcessBookFromXToY(SpeechRecognitionResult res) { Arguments args = new Arguments(null); args.AddType(VoiceCommandType.BOOK_ME_A_CAB_FROM_X_TO_Y, true); try { var source = res.SemanticInterpretation.Properties["bookFromX"]; var destination = res.SemanticInterpretation.Properties["bookFromY"]; args.AddArgument("source", source.FirstOrDefault()); args.AddArgument("destination", destination.FirstOrDefault()); ReadSpeech(new MediaElement(), "All Success "); } catch (Exception ex) { args.AddArgument("source", "Auntys Place"); args.AddArgument("destination", "Home"); //ReadSpeech(new MediaElement(), ex.ToString()); } return(args); }
public override Verb CreateVerb(string[] tokens) { var message = tokens[2]; Color(position, tokens[1].Length, Structures); Color(message.Length, Messaging); Block actualArguments; Block executable = null; Parameters parameters = null; var index = position + length; var bracket = tokens[3]; Lambda lambda = null; if (bracket == "(") { Color(1, Structures); if (GetExpression(source, index, CloseParenthesis()).If(out actualArguments, out var newIndex)) { index = newIndex; } else { actualArguments = new Block(); } } else { actualArguments = new Block(); } if (blockOrLambdaParser.Scan(source, index)) { overridePosition = blockOrLambdaParser.Result.Position; if (blockOrLambdaParser.Result.Verb is IExecutable e) { parameters = e.Parameters; executable = e.Action; MessagingState.RegisterMessageCall(message); var arguments = new Arguments(actualArguments, executable, parameters); if (lambda != null) { arguments.AddArgument(lambda); } result.Value = new Message(message, arguments); } } return(new NullOp()); }
public override Value Evaluate() { if (affinity == 0) { return(lambda.Invoke(new Arguments())); } var stack = Runtime.State.Stack; if (affinity == 1) { var value = stack.Pop(true, LOCATION); return(lambda.Invoke(new Arguments(value))); } var right = stack.Pop(true, LOCATION); var left = stack.Pop(true, LOCATION); var arguments = new Arguments(); arguments.AddArgument(left); arguments.AddArgument(right); return(lambda.Invoke(arguments)); }
public override Value Evaluate(Arguments arguments, Value instance = null, bool register = true, bool setArguments = true) { if (parameters.Length <= 1) { return(base.Evaluate(arguments, instance, register, setArguments)); } var allParameters = parameters.GetParameters(); var firstParameter = allParameters[0]; var blocks = arguments.Blocks; var passedValue = blocks.Length > 0 ? blocks[0] : firstParameter.DefaultValue; passedValue.Expression = true; var builder = new CodeBuilder(); builder.AssignToNewField(true, firstParameter.Name, passedValue); builder.End(); for (var i = 1; i < allParameters.Length; i++) { var parameter = allParameters[i]; builder.Parameter(parameter); } builder.Inline(block); var curryingLambda = builder.CurryingLambda(); if (blocks.Length > 1) { var newArguments = new Arguments(); for (var i = 1; i < blocks.Length; i++) { var value = blocks[i].Evaluate(); if (value is IInvokable invokeable) { value = invokeable.Invoke(new Arguments()); } newArguments.AddArgument(value); } return(curryingLambda.Evaluate(newArguments, instance, register, setArguments)); } return(curryingLambda); }
public override bool TryParse(Word w, Parser p) { Arguments arg = new Arguments(); // 始まりの括弧が見つかる迄 StartArgsMarker m = p.Stack.Peek() as StartArgsMarker; if (m == null) { while (!p.Stack.IsEmpty) { if (p.Stack.IsTopPrefix) { // Prefix の適用先が見つからない return(false); } if (p.Stack.IsTopExpression) { if (!arg.AddArgument(p.Stack.PopOperand(-1, false))) { // 引数が同じスロットに上書きされた時 p.ReportError(w, "引数と引数の間に区切りが入っていない可能性があります。"); } continue; } DelimArgsMarker d = p.Stack.Peek() as DelimArgsMarker; if (d != null) { p.Stack.Pop(); arg.AddDelim(d.Word); continue; } m = p.Stack.Peek() as StartArgsMarker; if (m != null) { break; } break; } } if (m != null) { p.Stack.Pop(); p.PopContext(); #if PAREN_MATCH if (m.StartParen != this.start_paren) { // ※ 区間などの場合には始まりと終わりが食い違っても OK p.ReportError(w, "始まりの括弧と終わりの括弧が一致しません。"); return(true); } #endif p.Stack.Push(new ExpressionElement( new Tree.FunctionCallExpression( m.StartParen + w.word, m.FunctionExpression, arg.GetArguments(), arg.GetDelims() ) )); return(true); } else { p.ReportError(w, "対応する始まりの括弧が見つかりません。"); return(true); } }
public override Verb CreateVerb(string[] tokens) { var whitespace = tokens[1]; Color(position, whitespace.Length, Whitespaces); var type = tokens[2]; Color(type.Length, Structures); var message = tokens[3]; Color(message.Length, Messaging); Block actualArguments; Block executable = null; Parameters parameters = null; var index = position + length; var bracket = tokens[4]; Lambda lambda = null; if (bracket == "(") { Color(1, Structures); int newIndex; if (GetExpression(source, index, "").Assign(out actualArguments, out newIndex)) { index = newIndex; } else { actualArguments = new Block(); } } else { actualArguments = new Block(); } if (lambdaParser.Scan(source, index)) { var messageClosure = (Lambda)lambdaParser.Result.Value; parameters = messageClosure.Parameters; executable = messageClosure.Block; index = lambdaParser.Result.Position; } else if (blockParser.Scan(source, index)) { executable = (Block)blockParser.Result.Value; index = blockParser.Result.Position; } if (attachedLambdaParser.Scan(source, index)) { lambda = (Lambda)attachedLambdaParser.Result.Value; index = attachedLambdaParser.Result.Position; } overridePosition = index; MessagingState.RegisterMessageCall(message); var arguments = new Arguments(actualArguments, executable, parameters); if (lambda != null) { arguments.AddArgument(lambda); } return(new ApplyMessageToDefaultVariable(new Message(message, arguments))); }