public void WriteMethod(Method meth) { fastColoredTextBox1.Text += Environment.NewLine + "\t\t"+meth.visibility.ToString().ToLower() + " " + string.Join(" ", meth.options); if (meth.returntype == typeof(void)) { fastColoredTextBox1.Text += "void "; } else { fastColoredTextBox1.Text += meth.returntype.Name + " "; } fastColoredTextBox1.Text+= meth.name + "()" + Environment.NewLine + "\t\t{"; foreach (var loc in meth.code) { try { fastColoredTextBox1.Text += Environment.NewLine+"\t\t\t" + ConvertCode(loc); } catch (Exception e) { fastColoredTextBox1.Text += "\t\t\t/*Error:" + e.Message + Environment.NewLine + e.InnerException + "*/"; } } fastColoredTextBox1.Text += Environment.NewLine + "\t\t}"; }
public void ParseRawLoc(Method m) { int no = 0; while (no != m.rawcode.Count) { if (m.rawcode[no].ToLower().StartsWith("goto")) { Code c= new Code(typeof(callmethod)); c.To<callmethod>().methodname = m.rawcode[no].Replace("goto ", ""); m.code.Add(c); } if (m.rawcode[no].ToLower().StartsWith("pause")) { m.code.Add(new Code(typeof(pause))); } if (m.rawcode[no].ToLower().StartsWith("echo ")) { Code c = new Code(typeof(Output)); c.To<Output>().outstring = m.rawcode[no].Replace("echo ", "") + Environment.NewLine; if (m.rawcode[no].ToLower().StartsWith("echo.")) { c.To<Output>().outstring = Environment.NewLine; } m.code.Add(c); } if (m.rawcode[no].ToLower().StartsWith("set")) { #region set Var v = new Var(); v.isdeclared = true; //0 1 ///p var= #region getvarname foreach (var item in m.rawcode[no].Split(' ')) { if (item.Contains("=")) { v.name = item.Substring(0,item.IndexOf('=')); } } #endregion // 0 1 2 //set /p var= #region getvartype try { if (m.rawcode[no].Split(' ')[1].Contains("/a")) { v.type = typeof(int); } else { v.type = typeof(string); } } catch { v.type = typeof(string); } v.isvardataset = false; #endregion #region declare var Code c = new Code(typeof(DeclareVariable)); #region set if (!string.IsNullOrEmpty(m.rawcode[no].Split('=')[1])) { v.data = m.rawcode[no].Split('=')[1].Replace("=", ""); c.To<DeclareVariable>().setvariabledata = true; } #endregion // c.To<DeclareVariable>().setvariabledata = false; c.To<DeclareVariable>().variable = v; m.code.Add(c);// string s; #endregion //---------------------------------------------------------- #region mathematical var definition mk1 //v super fancy comment switch //* if (m.rawcode[no].Split(' ')[1].Contains("/a")) { Code cc = new Code(typeof(MathDeclareVariable)); List<string> vars = new List<string>(); #region parse all vars involved foreach (var item in m.rawcode[no].Split(' ')[2].Substring( m.rawcode[no].Split(' ')[2].IndexOf('=') + 0, m.rawcode[no].Split(' ')[2].Length)) { #region parsing stuff if (item == '%') { string varname = ""; vars.Add(varname); } else if (new char[]{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p' ,'q','r','s','t','u','v','w','x','y','z'}.Contains(item.ToString().ToLower()[0])) { vars[vars.Count] += item; } if (item == '+') { cc.To<MathDeclareVariable>().mathematicaloperators.Add(Operator.add); } if (item == '-') { cc.To<MathDeclareVariable>().mathematicaloperators.Add(Operator.minus); } if (item == '/') { cc.To<MathDeclareVariable>().mathematicaloperators.Add(Operator.divide); } if (item == '*') { cc.To<MathDeclareVariable>().mathematicaloperators.Add(Operator.multiply); } #endregion } #region remove empty values no = 0; while (no != vars.Count) { if (string.IsNullOrEmpty(vars[no])) { vars.RemoveAt(no); } no++; } #endregion #endregion foreach (var va in vars) { Var var = new Var(); var.isdeclared = true; var.isvardataset = true;//probably or else batch wont compile var.name = va; var.type = typeof(int);//"" cc.To<MathDeclareVariable>().vars.Add(var); } v.isvardataset = true; cc.To<MathDeclareVariable>().outputvar = v; m.code.Add(cc); } /*/ //* // #endregion #region mathematical var def mk2 if (m.rawcode[no].Split(' ')[1].Contains("/a")) { Code cc = new Code(typeof(MathDeclareVariable)); v.isvardataset = true; cc.To<MathDeclareVariable>().outputvar = v; cc.options.Add(m.rawcode[no].Split(' ')[1] } //*/ #endregion if (m.rawcode[no].Split(' ')[1].Contains("/p")) { //set /p var= Code cc = new Code(typeof(Input)); cc.To<Input>().storevar = true; v.isvardataset = true; cc.To<Input>().var = v; //vvvv //VARNAME = Console.ReadLine(); m.code.Add(cc); } #endregion } no++; } }