[英]How to check SQL, Language syntax in String at compile time (Scala)
我正在写一个将DSL转换为多种编程语言的转换器(看起来像Apache Thrift )。
例如,
// an example DSL
LOG_TYPE: COMMERCE
COMMON_FIELD : session_id
KEY: buy
FIELD: item_id, transaction_id
KEY: add_to_cart
FIELD: item_id
// will be converted to Java
class Commerce {
private String session_id
private String key;
private String item_id;
private String transaction_id
// auto-created setter, getter, helper methods
...
}
还应该将其翻译为Objective-C和JavaScript。
要实现它,我必须替换字符串
// 1. create or load code fragments
String variableDeclarationInJava = "private String {$field};";
String variableDeclarationInJavascript = "...";
String variableDeclarationInObjC = "...";
// 2. replace it
variableDeclarationInJava.replace(pattern, fieldName)
...
替换String中的代码片段类型不安全且令人沮丧,因为即使有错误,它也不会提供任何信息。
所以,我的问题是在编译时可以解析String吗? 像Scala sqltyped库
如果有可能,我想知道如何实现。
谢谢。
据我了解,可能是这样。 请看一下字符串插值。 您实现了一个自定义内插器(就像在准报价中或在Slick中一样)。
您可能想做的事情的一个很好的例子是这里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.