阅读器宏与普通解析器

时间:2019-04-18 16:55:08

标签: parsing common-lisp

我正在实施将对SQL代码进行一些转换的程序。 在解析上述代码时,我考虑了两种方法。

  1. 使用普通函数实现“标准”解析器
  2. 实现在读取时进行此类解释的 Reader宏

我想知道实现读取器宏在这种情况下是否有效,还是最好用常规功能编写它,并避免使用火箭筒杀死昆虫。

1 个答案:

答案 0 :(得分:2)

如果需要,您可以使用阅读器宏作为内联SQL代码的方式,例如

#[SQL code here]

具有调用(sql "SQL code here")之类的函数,但是您将无法完成像使用阅读器宏编写完整的SQL解释器那样复杂的操作。此外,如果在读取时完成所有操作,又如何在运行时(可能需要时)访问数据库?

另一种方法是创建一个简单的SQL DSL,您可以在其中使用常规函数和宏。