public static void CustomSaveAssembly(string path) { if (File.Exists(path)) { File.Delete(path); } CODE_INFO.SaveAssembly(path); }
static void GetCurrentAssembly() { var path = Application.StartupPath; var files = CSEMainClass.SearchForFiles(path, extension: "dla"); foreach (var file in files) { CODE_INFO.LoadAssembly(file); } }
public static void ReadLanguageInfo(DarkLanguageInfo info) { foreach (var method in info.MethodHandlers) { CODE_INFO.AddMethod(method); } foreach (var possible in info.ObjectTypes) { CODE_INFO.AddPossible(possible); } }
public void InitializeCodeEditor() { List <WordCompletion> source = new List <WordCompletion>(); var objects = CODE_INFO.Possibles; var methods = CODE_INFO.Methods; var fields = CODE_INFO.AllCodeFields; var keywords = CODE_INFO.GetInfo(CODE_INFO.Keywords); var eventWords = CODE_INFO.GetInfo(CODE_INFO.EventWords); var common = CODE_INFO.GetInfo(CODE_INFO.Common); var commands = CODE_INFO.GetInfo(CODE_INFO.Commands); objects.ForEach((obj) => source.Add(new WordCompletion(obj.Name))); methods.ForEach((obj) => source.Add(new WordCompletion(obj.Name, $"({obj.ParametersRepresentation()})"))); fields.ForEach((obj) => source.Add(new WordCompletion($"{obj.Name} = {obj.Value+""}"))); keywords.ForEach((obj) => source.Add(new WordCompletion(obj))); eventWords.ForEach((obj) => source.Add(new WordCompletion(obj))); common.ForEach((obj) => source.Add(new WordCompletion(obj))); commands.ForEach((obj) => source.Add(new WordCompletion(obj))); codeBox.AutoCompletionSource = source.ToArray(); for (var i = 0; i < codeBox.WordInfos.Count; i++) { var info = codeBox.WordInfos[i]; if (objects.Exists((obj) => obj.Name != info.Word)) { codeBox.WordInfos.Remove(info); } if (fields.Exists((obj) => obj.Name != info.Word)) { codeBox.WordInfos.Remove(info); } } codeBox.WordInfos.Add(new WordInfo("DECLARE", Color.DodgerBlue)); codeBox.WordInfos.Add(new WordInfo("EVENT", Color.DodgerBlue)); objects.ForEach((obj) => codeBox.WordInfos.Add(new WordInfo(obj.Name, ObjectColor))); methods.ForEach((obj) => codeBox.WordInfos.Add(new WordInfo(obj.Name, MethodColor))); fields.ForEach((obj) => codeBox.WordInfos.Add(new WordInfo(obj.Name, FieldsColor))); GetAllStrings().ForEach((obj) => codeBox.WordInfos.Add(new WordInfo(obj, Color.Gold))); keywords.ForEach((obj) => codeBox.WordInfos.Add(new WordInfo(obj, KeywordColor))); eventWords.ForEach((obj) => codeBox.WordInfos.Add(new WordInfo(obj, EventWordsColor))); common.ForEach((obj) => codeBox.WordInfos.Add(new WordInfo(obj, CommonColor))); commands.ForEach((obj) => codeBox.WordInfos.Add(new WordInfo(obj, CommandsColor))); CODE_INFO.GetInfo(CODE_INFO.Specials).ForEach((obj) => codeBox.WordInfos.Add(new WordInfo(obj, SpecialColor))); GetAllStrings().ForEach((obj) => codeBox.WordInfos.Add(new WordInfo(obj, KeywordColor))); List <WordDescription> descs = new List <WordDescription>(); descs.Add(new WordDescription("Declare", "Declares a new variable in this method or script")); descs.Add(new WordDescription("var", descs[0].Description)); descs.Add(new WordDescription("String", "A characted literal array,it can be declared typing a text")); AutoCompletionBox.Descriptions.AddRange(descs); }
public void CheckScript(string read) { if (read == "Clear") { Console.Clear(); return; } if (read == "Save") { CODE_INFO.SaveAssembly("DarkLanguageAssembly"); Console.WriteLine("This Assembly Was Saved!!!"); Console.ReadKey(); return; } var scr = ScriptCompiler.GetScriptCode("../Script"); CompiledScript script = ScriptCompiler.CompileScript(scr); Console.WriteLine("///////////////Script////////////////"); foreach (var method in script.Methods) { foreach (var e in method.Events) { foreach (var condition in e.Conditions) { foreach (var action in condition.Actions) { Console.WriteLine(action.Code); } Console.WriteLine(condition.Condition); } Console.WriteLine(e.Type); } Console.WriteLine(method.Type); } Console.ReadKey(true); //CODE_EXEC.AutoExecuteCode(read); //Console.WriteLine("///////////FIELDS///////////////"); //foreach(var field in CODE_EXEC.Fields) //{ // Console.WriteLine(field); //} //Console.WriteLine("///////////METHOD//////////////"); //CODE_READER.CheckLanguageRoutines(read); //var rs = CODE_READER.GetReads(read); //foreach(var r in rs) //{ // Console.WriteLine(r); //} }
public static void SaveAssembly(string assemblyName = null) { if (string.IsNullOrEmpty(assemblyName)) { assemblyName = Path.GetRandomFileName(); } string path = $"../Assembly/{assemblyName}"; if (File.Exists(path)) { File.Delete(path); } CODE_INFO.SaveAssembly(path); }
public void Run() { CODE_INFO.LoadAssembly("DarkLanguageAssembly"); ScriptExecutor.StartAutoExecutor(); while (true) { var read = Console.ReadLine(); //CODE_EXEC.AutoExecuteCode(read); //if(CODE_EXEC.Fields.Count > 0) //{ // Console.WriteLine("/////////After//////////"); // Console.WriteLine(CODE_EXEC.Fields[0].Value); // var trl = CodeTranslator.TranslateCode(read); // Console.WriteLine(trl); // Console.WriteLine("/////////Before/////////"); // CODE_EXEC.AutoExecuteCode(trl); // Console.WriteLine(CODE_EXEC.Fields[0].Value); //} CheckScript(read); } }
/// <summary> /// Initialize this instance and make then to add the first Object reference to the code,the null type. /// </summary> public static void Initialize() { ScriptObjectType nullV = new ScriptObjectType("null", typeof(object), TryParseNull); CODE_INFO.AddPossible(nullV); }
/// <summary> /// Adds the script method. /// </summary> /// <param name="methodHandler">Method handler to add to code information class.</param> public static void AddScriptMethod(ScriptMethodHandler methodHandler) { CODE_INFO.AddMethod(methodHandler); }
/// <summary> /// Adds the type of the object. /// </summary> /// <param name="name">Name of the object.</param> /// <param name="type">Type of the object.</param> /// <param name="parseMethod">Parse method for string to object conversion.</param> /// <param name="defaultValue">Default value for this object.</param> public static void AddObjectType(string name, Type type, TryParseTo parseMethod, object defaultValue = null) { var objType = new ScriptObjectType(name, type, parseMethod, defaultValue); CODE_INFO.AddPossible(objType); }