HLA编译时语言中的宏与控制结构详解
1. 文本对象与字符串转换
在HLA编程中, @string(identifier)
操作符能将文本对象转换为对应的字符串常量。不过,它只能生成字符串常量,而非字符串标识符,所以类似 ?@string(t) := "Hello"
这样的语句是不合法的。例如,若 t
赋值为 "stdout.put"
,上述语句会扩展为 ?"stdout.put" := "Hello";
,显然这是错误的。
为解决此问题,可使用 @toString:identifier
操作符。它能将文本对象转换为字符串对象并返回标识符,这样就能对其赋值。示例代码如下:
val
t:text := "stdout.put";
?@toString:t : text := "fileio.put";
2. 条件编译
HLA的编译时语言提供了 #if
语句,用于在编译时做决策,主要有两个用途:一是支持条件编译,可根据程序中符号或常量的值决定是否包含某些代码;二是作为编译时语言的基本条件判断语句。
#if
语句的最简形式如下:
#if( constant_boolean_expression )
<&l