Ну, проверить правильность основ (правильное количество аргументов, открывающие / закрывающие скобки, количество запятых и т. Д.) Не составит труда - вы можете легко обслужить вложенные IF, используя рекурсивные методы.
Но вы также должны сообщить нам, нужно ли также проверять правильность синтаксиса "условие" и "выражение"?
А запятые или скобки, например, будут допустимыми внутри выражения или условия? Если это так, вам нужно определить свои правила для квалификации строки, escape-символов и т. Д., Так что ваш синтаксический анализатор интерпретирует их как часть выражения или условия и не путает их как управляющие символы.
В самом простом виде, однако, некоторые psuedo -код:
var stmt = "IF(condition,expression,IF(condition,expr2,expr3))"
function checkIfSyntax(stmt){
var tokens = splitStmt(stmt); // careful to take into account where
// control chars (that is, commas and
// brackets) are qualified, escaped,
// or inside a nested IF()
checkCondition(tokens.condition); //with whatever rules you have, plus [1]
checkExpression(tokens.expr1); //with whatever rules, plus [1]
checkExpression(tokens.expr2); //with whatever rules, plus [1]
/* [1]: if any of the tokens are nested IF() statements,
call checkIfSyntax() from within checkCondition()
or checkExpression()
- (this is the recursive bit) */
}
Это просто , надеюсь , чтобы вы встали на правильный путь. Фактически полностью ответить на ваш вопрос - значит написать его для вас - я не думаю, что кто-то собирается это сделать. Постарайтесь понять вышеизложенное, а также прочитать ссылки, предоставленные другими, и, надеюсь, вы должны встать на правильный путь