From 6123423f7832a31b65054c90f59259cfe7e53f65 Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 22 Aug 2017 22:34:16 -0400 Subject: [PATCH] I think math is stable now I need to rewrite how math is done to allow for the introduction of constructs --- parseManager/bin/Debug/parsetest2.txt | 6 ++++-- parseManager/parseManager.cs | 12 ++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/parseManager/bin/Debug/parsetest2.txt b/parseManager/bin/Debug/parsetest2.txt index 0128c1c..4ad0013 100644 --- a/parseManager/bin/Debug/parsetest2.txt +++ b/parseManager/bin/Debug/parsetest2.txt @@ -6,9 +6,8 @@ ENABLE leaking [START]{ "Test 1:" t=15 - test=2+t + test=2*100 "test = $test$" - "num = $num$" c=5 ::HERE:: a,b="sdf",true @@ -16,6 +15,9 @@ ENABLE leaking food="yum" test=true stop=21 + "food = $food$" + "test = $test$" + "stop = $stop$" "Test 2:" count=0 ::loop:: diff --git a/parseManager/parseManager.cs b/parseManager/parseManager.cs index 627ed93..9c6e6c3 100644 --- a/parseManager/parseManager.cs +++ b/parseManager/parseManager.cs @@ -428,7 +428,7 @@ namespace parseManager tCont = Regex.Replace(tCont, @"\-\-\[\[[\S\s]+\]\]", "", RegexOptions.Multiline); tCont = Regex.Replace(tCont, @"^\s+$[\r\n]*", "", RegexOptions.Multiline); _lines = tCont.Split(new [] { "\r\n", "\n" }, StringSplitOptions.None); - compile(); // compiles the code into something that can be used quickly + compile(); } void compile() { @@ -436,10 +436,13 @@ namespace parseManager for (int i = 0; i < _lines.Length - 1; i++) { temp = _lines[i]; var pureLine = Regex.Match(temp, "^\"(.+)\""); + var FuncTest = Regex.Match(temp, @"([a-zA-Z0-9_]+)\s?\((.*)\)"); var assignment = Regex.Match(temp, "^([a-zA-Z0-9_,\\[\\]\"]+)=([a-zA-Z\\|&\\^\\+\\-\\*/%0-9_\",\\[\\]]+)"); - if (assignment.ToString() != "") { // TODO fix mess! or write own number calculator + if (assignment.ToString() != "" && FuncTest.ToString()=="") { // TODO fix mess! or write own number calculator var expression = new Expression(assignment.Groups[2].Value); - if (!expression.HasErrors()) { + var extest = assignment.Groups[2].Value; + var res = Regex.Match(extest,@"[\+\-\*/%\^]"); + if (!expression.HasErrors() && res.ToString()!="") { temp=assignment.Groups[1].Value+"=CALC(\""+assignment.Groups[2]+"\")"; } } @@ -457,11 +460,9 @@ namespace parseManager string _funcif = (argsif.Groups[1]).ToString(); var _argsif = (argsif.Groups[2]).ToString(); string[] _resultif = Regex.Split(_argsif, ",(?=(?:[^\"']*[\"'][^\"']*[\"'])*[^\"']*$)"); - //Console.WriteLine(string.Join(",",_resultif)); string _funcelse = (argselse.Groups[1]).ToString(); var _argselse = (argselse.Groups[2]).ToString(); string[] _resultelse = Regex.Split(_argselse, ",(?=(?:[^\"']*[\"'][^\"']*[\"'])*[^\"']*$)"); - //Console.WriteLine(string.Join(",",_resultelse)); var mm = Regex.Matches(condition, "(.+?)([and ]+?[or ]+)"); var conds = new string[(mm.Count + 1) * 3]; var andors = new string[mm.Count]; @@ -485,7 +486,6 @@ namespace parseManager var s1a2 = s1p2.Groups[1].ToString(); var s1b2 = s1p2.Groups[2].ToString(); var s1c2 = s1p2.Groups[3].ToString(); - //Console.WriteLine(s1a2+"|"+s1b2+"|"+s1c2); conds[p++] = s1a2; conds[p++] = s1b2; conds[p++] = s1c2;