Разбор алгоритма if-else if
Я пытаюсь создать очень простой парсер для структуры типа if-else, который будет создавать и выполнять оператор SQL.
Вместо того, чтобы тестировать условия для выполнения операторов, я бы тестировал условия для построения строки.
Примером отчета может быть:
select column1
from
#if(VariableA = Case1)
table1
#else if(VariableA = Case2)
table2
#else
defaultTable
#end
Если VariableA равна Case1, результирующая строка должна быть:select column1 from table1
Более сложный пример был бы с вложенными операторами if:
select column1
from
#if(VariableA = Case1)
#if(VariableB = Case3)
table3
#else
table4
#else if(VariableA = Case2)
table2
#else
defaultTable
#end
Это то, где у меня действительно возникают проблемы, я не могу придумать, как правильно определить каждую группу «если-либо-еще».
Кроме того, я не уверен, какой хороший способ отслеживать, должна ли строка в предложении «else» иметь значение true.
Я искал в сети различные типы алгоритмов синтаксического анализа, все они кажутся очень абстрактными и сложными.
Есть ли какие-либо предложения о том, где можно начать обучение по этой специальности, не связанной с информатикой?