Я пытаюсь сделать простой интерпретатор сценариев в своем приложении. Действительный скрипт для использования в моем приложении будет что-то вроде:Написание очень простого интерпретатора в C#
#this is a comment
*IDN? #this is a comment after a valid command
:READ? #this was also a comment after a valid command
RST
#last line was a valid comment but with no comment!
Теперь после загрузки содержимого сценария внутри массива строки, я хочу, чтобы выполнить каждую строку, если она не начинается с #
, а также игнор #
в такая же строка, если она exsist:
foreach(var command in commands)
{
if(!command.StartsWith("#"))
{
_handle.WriteString(command);
}
}
Мой код позаботится о начале комментариев. Но как проверить встроенные комментарии?
У меня есть эта идея, будет ли этот код IDIOT-PROOF?
foreach(var command in commands)
{
if(!command.StartsWith("#"))
{
if(command.IndexOf('#') != null)
{
_handle.WriteString(command.Remove(command.IndexOf('#')));
}
else
_handle.WriteString(command);
}
}
Простой. Не выполняйте ничего после «#». –
Да, но как узнать, что линия имеет # после команды? –
Я бы предположил, что пока вы игнорируете небольшую сложность, с которой вы сталкиваетесь, с тем, как обрабатывать встроенные комментарии, и сосредоточьтесь на остальной части вашего интерпретатора. Когда вы закончите, вы будете знать, как обрабатывать встроенные комментарии. ; -D –