请考虑以下示例输入:
namespace Client
{
sql FindByQuery
{
SELECT * FROM client_Profile
WHERE 1 = 1
#ifNotEmpty(City, sql{ AND `City` = @City })
#ifNotEmpty(Zipcode, sql{ AND `Zipcode` = @Zipcode })
#ifNotEqual(State, "NY", sql{ AND `State` = @State })
#ifEqual(IsReactive, 1 , sql{ AND `WONum` LIKE CONCAT('B%', @WONum) })
#include(CommonOrderBy)
}
}
代码中有两种不同的语言:
如何将内部SQL语句解析为原始文本并处理宏以'#'正确?
或者有什么例子吗?
答案 0 :(得分:0)
ANTLR4 lexer模式可以做到这一点,它意味着创建一个单独的词法分析器g4文件,定义两种模式:DEFAULT模式和SQL模式。
“sql FindByQuery”语句推送到SQL模式,“}”弹出回DEFAULT模式。
在这两个单独的ANTLR4模式中,词法分析器可能完全不同。