领域特定语言(DSL)与 Groovy 语言入门
1. DSL 语法选择的考量
如果 DSL 的目标用户是非程序员,开发基于 XML 的语法可能会有问题。XML 有其特定的标签开闭和终止规则,这对非程序员来说晦涩难懂。嵌入式或内部 DSL 由于宿主语言的限制,永远无法像自定义外部 DSL 那样自由灵活。不过,基于 Groovy 的 DSL 能够以更易读的格式进行构建,但仍需使用规范的 Groovy 语法,在设计面向目标受众的易读 DSL 时,总会存在一些妥协。
2. 运算符重载
一些通用语言,如 C++、Lisp 和 Groovy,具备有助于开发小型语言语法的特性。C++ 是最早实现运算符重载概念的语言之一。通过运算符重载,我们可以让非数值对象表现得像数值一样。例如,为 String 对象添加加法运算符以支持字符串拼接。下面是一个表示复数的 ComplexNumber 类的实现:
class ComplexNumber {
public:
double real, imaginary;
ComplexNumber() { real = imag = 0; }
ComplexNumber(double r, double i) { real = r; imag = i; }
ComplexNumber& operator+(const ComplexNumber& num);
};
ComplexNumber& ComplexNumber::operator=(const ComplexNumber& num
超级会员免费看
订阅专栏 解锁全文
3187

被折叠的 条评论
为什么被折叠?



