public override PNode evaluate(PNode evaluateMe, PatternMatcher successfulMatch) { PatternMatcher match = successfulMatch; // Extract the "arguments" from the PatternMatcher. List <PNode> M = match.Matching; // The pattern -> prose index from the match TypeNameWord typeNameWord = ((TypeNameWord)M[1].value); string methodName = ((StringLiteralObject)M[4].value).literal; RawWord[] newMethodWord; if (M[6].value is RawWordObject) { newMethodWord = ((RawWordObject)M[6].value).RawWords; } else { newMethodWord = ((Word)M[6].value).RawWords; } BindMethodAction action = new BindMethodAction(typeNameWord, methodName, newMethodWord); value = new ProseObject[3]; value[0] = M[0].value; value[1] = action; value[2] = M[7].value; PNode ret = replaceWithValueAt(evaluateMe, successfulMatch); value = null; return(ret); }
public void performAction(ProseRuntime runtime) { // Look up the type. Type type = assemblyWord.AssemblyObject.GetType(typeName); TypeNameWord typeNameWord = new TypeNameWord(rawWords, runtime, type); runtime.addWord(typeNameWord); }
public void performAction(ProseRuntime runtime) { // Look up the type. Type type = assemblyWord.AssemblyObject.GetType(typeName); TypeNameWord typeNameWord = new TypeNameWord(rawWords, runtime, type); runtime.addWord(typeNameWord); }
public BindMethodAction(TypeNameWord typeWord, string methodName, RawWord[] rawWords) { this.typeWord = typeWord; this.methodName = methodName; this.rawWords = rawWords; }
public BindMethodAction(TypeNameWord typeWord, string methodName, RawWord[] rawWords) { this.typeWord = typeWord; this.methodName = methodName; this.rawWords = rawWords; }