namespace tlang { internal class Parser { public Parser() { } public Node ParseExpression(List tokens,ref int i,bool isFirst=false) { if(tokens[i].Text == "{" || isFirst) { if(!isFirst) i++; ScopeNode scopeNode = new ScopeNode(); while(i tokens,ref int i) { Node myExpression = ParseSum(tokens,ref i); while(i tokens,ref int i) { Node myExpression = ParseFactor(tokens,ref i); while(i tokens,ref int i) { var token=tokens[i++]; if(token.IsString) return new ConstNode(new TString(token.Text)); if(token.IsChar) { return new ConstNode(new TNumber(token.Text.SingleOrDefault())); } long val; if(long.TryParse(token.Text,out val)) { if(i args = new List(); i++; while(i args = new List(); //function call baby while(i(); //function call baby while(i tokens,ref int i) { Node myExpression = ParseValue(tokens,ref i); while(i