поэтому я пишу что-то вроде игрушечного компилятора на C #, и я пытаюсь сделать это с помощью команды print, для каждой подстроки, начинающейся с символа '$' (например, - $ foo), замените еес соответствующей переменной.(в основном, символ '$' указывает на имя переменной).
На данный момент я использовал regex, чтобы найти все подстроки, содержащие символ '$', однако у меня возникли проблемы с заменой.метод.Как хранятся переменные, это через класс хранения переменных оценщика FLEE.(FLEE - быстрый анализатор облегченных выражений), они действуют как карта, где ключ - это имя переменной, а значение - значение переменной.
Мой код выглядит следующим образом:
public void print(string exp)
{
this.expression = exp;
MatchEvaluator eval = new MatchEvaluator(this.matchEval);
MatchCollection coll = Regex.Matches(exp, @"(?<!\w)\$\w+");
this.split = new string[coll.Count];
int index = 0;
foreach (Match match in coll)
{
this.split[index] = match.ToString();
index++;
}
this.i = 0;
Regex.Replace(exp, @"(?<!\w)\$\w+", eval);
Console.WriteLine(exp);
Console.ReadKey();
}
private string matchEval(Match m)
{
this.split[this.i] = this.split[this.i].TrimStart('$');
if(i != split.Length-1)
this.i++;
return this.split[this.i];
}
он еще не возвращает переменные, так как он по-прежнему возвращает совпадения с регулярным выражением, включая символ '$'.
любая помощь будет принята с благодарностью, спасибо.