是否可以在没有宏的情况下将语言嵌入C 中



背景

当前,我正在使用C MySQL连接器与数据库进行通信,有时我需要通过连接发送硬编码命令。和很多次一样,我犯了错误/错别字等。这是针对非常基本的数据库系统类,因此没有涉及行业。

问题

是否可以将constexpr编译器实现为另一种只能运行词汇,语法和语义分析的语言,并报告错误吗?还是一些其他汇编步骤?

示例

假设我想发送此命令:

SELECT * FROM Persons

但是,我忘了键入 M

SELECT * FRO Persons

我会在运行时发现问题,如果知道语言,可以被编译器抓住。我唯一解决这个问题的想法是预处理器疯狂。

来自C ,我会这样称呼:

auto statement = sql_parse("...");

希望如果出现问题,应该会导致编译错误。

是否可以为另一种只能运行词汇,语法和语义分析的语言实施ConstexPR编译器并报告错误如果找到错误?还是一些其他汇编步骤?

否,在编译时间不可能仅使用C-Prepropessor/C 编译器。

您需要实现一个不同的工具来解析和验证SQL代码并为SQL绑定生成必要的C 代码。

auto statement = sql_parse("...");

将需要一个在运行时检查SQL语句的解析器。


有C 模板工具,例如boost::spirit,可以使您在编译时间集成DSL(例如SQL语法)。这超出了C-Prepropersors的作用。


对于一个简单且实用的解决方案,我建议您在将其采用C 代码之前分别使用适当的工具测试您的SQL语句。

相关内容

最新更新