DLR表达式:概念、特性与应用示例
1. 具体语法与序列化
DLR表达式与普通编程语言存在一个显著差异,即DLR表达式仅定义抽象语法,而不定义具体语法。具体语法指的是在使用某种编程语言进行编程时,在代码编辑器中实际输入的内容。例如,在C#中编写 5 + 2 ,这就是使用了C#的具体语法。当编译这段代码时,语言的解析器会将具体语法编写的代码解析,并在内存中以对象树的形式表示,这个树状表示被称为抽象语法树,它以抽象语法的形式呈现了与具体语法相同的代码。
多个具体语法表示可以映射到一个抽象语法表示。DLR表达式支持序列化,当将DLR表达式树序列化为文件时,存储表达式树的文本格式就是DLR表达式的一种具体语法表示。每个人都可以自由为DLR表达式定义自己的具体语法,并实现序列化/反序列化代码。
与之不同的是,像C#这样的典型编程语言定义了一种具体语法和一种抽象语法,从具体语法到抽象语法的映射是一对一的。当然,你也可以为C#代码设计自定义的具体语法,然后实现一个自定义解析器将其转换为C#的抽象语法,但这种情况较为罕见,而且C#的抽象语法可能并不对公众开放。
2. 表达式与语句
在编程语言中,表达式和语句是有区别的。简单来说,表达式会产生值,而语句不会。以下是C#中表达式的示例:
5 + 2
x = 7 //赋值表达式
i = j = 7 //这行代码由两个赋值表达式组成
someObject.Foo() //方法调用表达式
而语句的示例如下:
超级会员免费看
订阅专栏 解锁全文
5

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



