Lustre Core 语法 - 数组操作表达式
概述
Lustre v6 中的 Lustre Core 部分支持的表达式种类中,支持数组操作表达式。相关的表达式包含数组构造、数组拼接、数组切片、取数组元素等操作。相应的文法定义如下
Expression ::= [ ExpressionList ]
| Expression ^ Expression
| Expression | Expression
| Expression [ Expression ]
| Expression [ Select ]
Select ::= Expression .. Expression Step
Step ::= [ step Expression ]
数组构造
构造数组有两种方式,一种为使用 []
构造,另一种为使用 ^
构造。相应的文法定义如下
Expression ::= [ ExpressionList ]
| Expression ^ Expression
使用[]
构造数组的例子如下。在该例程中,构造一维数组,元素分别为1,2,3
。
function arrDefExpr() returns (o: int^3)
let
o = [1,2,3];
tel
使用 ^
构造数组的例子如下。在该例程中,构造了一维数组,元素类型为布尔类型,长度为3,元素值为 true。
function caretExpr() returns (o: bool^3)
let
o = true ^ 3;
tel
数组拼接
数组拼接使用 |
符号将两项数组拼接位一项数组。文法定义如下
Expression ::= Expression | Expression
使用样例如下所示。在该例程中,i1,i2
为长度为3的整型数组,经过 |
拼接,生成长度为 6 的整型数组。
function concatExpr(i1,i2: int^3) returns (o: int^6)
let
o = i1 | i2;
tel
数组切片
数组切片使用 [ .. ]
符号截取数组中的片段。相关的文法定义如下
Expression ::= Expression [ Select ]
Select ::= Expression .. Expression Step
Step ::= [ step Expression ]
数组切片操作的使用例程如下所示。在该例程中,截取索引在 0
至 2
范围内的3项元素的数组。
function sliceExpr(in_arr: int^4) returns (o_arr: int^3)
let
o_arr = in_arr[0..2];
tel
获取数组元素
获取数组元素使用标记 []
。相关的文法定义如下
Expression ::= Expression [ Expression ]
其中,[]
内的 Expression
表达式需要为编译时就能确定的常量。
获取数组元素的使用样例如下。在该例程中,获取数组索引为1
的元素。
function projectionExpr(arr: int^3) returns (o1: int)
let
o1 = arr[1];
tel