public static IMaybe <(Block, bool)> OperatorBlock(Value value) { Verb verb; if (value.Type == Value.ValueType.Block) { var block = (Block)value; if (block.Count == 0) { return(none <(Block, bool)>()); } verb = regularizeVerb(block[0]); } else { var operatorText = value.Text; var type = TwoCharacterOperatorParser.Operator(operatorText); RejectNull(type, LOCATION, $"Didn't understand verb {operatorText}"); var instance = (Verb)Activator.CreateInstance(type); verb = regularizeVerb(instance); } return(OperatorBlock(verb)); }
public void Operator(string source) { var type = TwoCharacterOperatorParser.Operator(source); Runtime.RejectNull(type, LOCATION, $"Didn't recognize '{source}'"); var verb = (Verb)Activator.CreateInstance(type); block.Add(verb); }