2016-06-06 9 views
0

Так на моем языке программирования я делаю, я добавляю, если заявления, до сих пор он может сказать, если переменная равна другой переменной, и это код:Как запустить несколько команд в инструкции IF?

if (line.Contains("IF")) 
{ 
    string n1 = line.Substring(line.IndexOf(' ') + 1).Split('=')[0]; 
    string n2 = line.Substring(line.IndexOf('=') + 1).Split(':')[0]; 

    string com = line.Substring(line.IndexOf(':') + 1).Split(',')[0]; 

    string val = ""; 
    string val2 = ""; 

    foreach (KeyValuePair<string, string> kvp in variables) 
    { 
     if (n1 == kvp.Key) 
     { 
      val = kvp.Value; 
     } 

     if (n2 == kvp.Key) 
     { 
      val2 = kvp.Value; 
     } 
    } 

    if (val == val2) 
    { 
     if (com.Contains("PRINT")) 
     { 
      Console.WriteLine("PRINT"); 
     } 
    } 
} 

фрагмент кода, который говорит:

if (val == val2) 
{ 
    if (com.Contains("PRINT")) 
    { 
     Console.WriteLine("PRINT"); 
    } 
} 

должен выглядеть, если площадь между : и , имеет PRINT и если она затем выписывают PRINT, вот пример того, что он должен выглядеть следующим образом:

$age=14; 
PRINT:How old are you? 
WRITE:>; 
[email protected]; 
IF age=newage:PRINT PRINT, 

Он видит, что возрасты одинаковы, и если они затем PRINT, BTW @ означает ввод, поэтому он будет устанавливать пользовательский возраст нового возраста, он обнаруживает, что область между и , содержит PRINT, но она будет только пишите PRINT один раз, и я не уверен, что делать, я пытался использовать список и добавляю элементы между ними, но я получил тот же результат.

+2

о, ручной язык синтаксического анализатора. Ты уверен? Возможно, вы рассмотрите такие инструменты, как ANTLR: http://www.antlr.org/? – Dennis

+0

Он означает, что вы пытаетесь изобрести колесо. Используйте ANTLR. Он построен для этого. –

+0

Но я уже зашел так далеко, у меня есть не только этот код, его более 266 строк кода, и я не хочу его переписывать, но я дам ему взглянуть. –

ответ

0

Я в основном сделал еще одну функцию, которая считывает файлы, так что вместо того, чтобы искать команды между : и ;, просто введите имя файла, который вы хотите запустить, как ваши команды, и она будет запускать их:

if (val == val2) 
{ 
    FileParse(f) 
} 

его будут делать то же самое, что и TextParse(TextBox tb), но вместо этого он ищет файл FileParse(string filePath)

Смежные вопросы