protected override object ReallyDoEvaluate(Irony.Interpreter.ScriptThread thread) { var sw = thread.tc().Writer; sw.WriteLine("/*********************************************************************"); sw.WriteLine(" * This C# program was generated by Shakespeare2CS by James Curran *"); sw.WriteLine(" * based on spl2c, the Shakespeare to C *"); sw.WriteLine(" * converter by Jon Åslund and Karl Hasselström. *"); sw.WriteLine(" *********************************************************************/"); sw.WriteLine(); sw.WriteLine("using System;"); sw.WriteLine("using Shakespeare.Support;"); sw.WriteLine(); sw.WriteLine("namespace Shakespeare.Program"); sw.WriteLine("{"); sw.WriteLine("\tclass Program"); sw.WriteLine("\t{"); sw.WriteLine("\t\tstatic void Main(string[] args)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tvar script = new Script();"); sw.WriteLine("\t\t\tscript.Action();"); sw.WriteLine("\t\t}"); sw.WriteLine("\t}"); sw.WriteLine(); sw.WriteLine("\t\tclass Script : Dramaturge"); sw.WriteLine("\t\t{"); sw.WriteLine(); sw.WriteLine("\t\tpublic Script()"); sw.WriteLine("\t\t : base(Console.In, Console.Out)"); sw.WriteLine("\t\t{ }"); sw.WriteLine(); sw.WriteLine("\t\tpublic void Action()"); sw.WriteLine("\t\t{"); AstNode1.Evaluate(thread); // Title sw.WriteLine(); var cdl = AstNode2 as CharacterDeclarationListNode; foreach (var ch in cdl.Characters) ch.Evaluate(thread); sw.WriteLine(); AstNode3.Evaluate(thread); sw.WriteLine("\t\t}"); sw.WriteLine("\t}"); sw.WriteLine("}"); sw.Flush(); sw.Close(); return sw; }
protected override object ReallyDoEvaluate(Irony.Interpreter.ScriptThread thread) { var sw = thread.tc().Writer; sw.WriteLine("/********************************************************************"); sw.WriteLine(" * This C program was generated by spl2c, the Shakespeare to C *"); sw.WriteLine(" * converter by Jon Åslund and Karl Hasselström. *"); sw.WriteLine(" ********************************************************************/"); sw.WriteLine(""); sw.WriteLine("/* libspl definitions and function prototypes */"); sw.WriteLine("#include \"spl.h\""); sw.WriteLine(""); sw.WriteLine("int main(void)"); sw.WriteLine("{"); AstNode1.Evaluate(thread); // Title sw.WriteLine(); var cdl = AstNode2 as CharacterDeclarationListNode; foreach (var ch in cdl.Characters) sw.WriteLine(ch.Declaration); sw.WriteLine("\tint comp1, comp2;"); sw.WriteLine("\tglobal_initialize();"); foreach (var ch in cdl.Characters) sw.WriteLine(ch.Initialization); sw.WriteLine(); sw.WriteLine(); AstNode3.Evaluate(thread); sw.WriteLine("\treturn 0;"); sw.WriteLine("}"); sw.Flush(); sw.Close(); return sw; }