Добавление поля слияния в качестве токена в базовом интерпретаторе basicsharp C# basic
Привет я в настоящее время с использованием основных острых ссылке: https://github.com/Timu5/BasicSharp
Это базовый переводчик языка. Нам нужно использовать поля слияния в этом коде, чтобы заменить поля слияния значениями.
Например:
IF {Clients.Name} = "Patrick" THEN #Do something ENDIFполе слияния должно быть настроено как токен, а затем его значение анализируется и заменяется в зависимости от его типа.
таким образом, вышеизложенное будет проанализировано и заменено следующим образом:
IF "Patrick" = "Patrick" THEN #Do Something ENDIFЛюбая помощь была бы очень признательна, я готов пройти через это более подробно на скриншоте, если это поможет!
Что я уже пробовал:
Я попробовал приведенный ниже код из интерпретатора, так как он анализирует строку за строкой. Это одно из требований. Поскольку это можно использовать в цикле DO While, где значение базы данных может изменяться:
void Line() { string lineText = GetLine(); // MessageBox.Show(lineText); string regularExpressionPattern = @"\[.*?\]"; string inputText = lineText; int intVal = 0; double Double123 = 0.00; Regex re = new Regex(regularExpressionPattern); string finalvalue = ""; Run_Code rc = new Run_Code(); rc.case_ref = case_ref; rc.CaseTypeIndex = CaseTypeIndex; foreach (Match m in re.Matches(inputText)) { inputText = inputText.Replace(m.Value,'"' + rc.getDBValue(m.Value.Replace("[", "").Replace("]", "")) + '"'); } // skip empty new lines while (lastToken == Token.NewLine) GetNextToken(); if (lastToken == Token.EOF) { exit = true; return; } lineMarker = lex.TokenMarker; // save current line marker Statment(); // evaluate statment if (lastToken != Token.NewLine && lastToken != Token.EOF) Error("Expect new line got " + TranslateToken(lastToken.ToString())); }