Things to do for the REPL support in MCS: Documentation for the REPL mode for MCS can be found here: http://mono-project.com/CsharpRepl * Embedding API * Booting the compiler without Main () * Expose LoadAssembly/LoadPackage * Register fields? * Register a lookup function for fields? * Register classes to expose to REPL * Embedded Library * Run a REPL on a socket (from Joe Shaw) * Host a REPL on XSP (from Nat). * TODO Clear struct fields inside the clearing code. * Other ideas: MD addin for "csharp" * Supporting class-level declarations Currently the evaluator has this feature disabled, to enable it edit the eval.cs file and make this be the default: - parser.Lexer.putback_char = Tokenizer.EvalUsingDeclarationsParserCharacter; - //parser.Lexer.putback_char = Tokenizer.EvalCompilationUnitParserCharacter; + //parser.Lexer.putback_char = Tokenizer.EvalUsingDeclarationsParserCharacter; + parser.Lexer.putback_char = Tokenizer.EvalCompilationUnitParserCharacter; It currently has a few problems: * The usability is not as useful, since the defaults for C# are still to make members private, we should change this default to be public in those cases. * Clearing data TODO: when clearing data for variables that have been overwritten we need to check for structs and clear all the fields that contain reference types. * DEBATABLE: Implement auto-insert-semicolon This is easy to implement, just retry the parse with a semicolon, the question is whether this is a good idea to do in the first place or not. Completion support ================== Supported: a. to complete members of type `a' a for types and namespaces a.W a for local variables Unsupported: delegate { FOO. using statement autocompletion