当前位置: 首页 > article >正文

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 ]

数组切片操作的使用例程如下所示。在该例程中,截取索引在 02 范围内的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

http://www.kler.cn/a/525250.html

相关文章:

  • SpringBoot源码解析(八):Bean工厂接口体系
  • 基于Cipher的Java加密工具类
  • 机器人抓取与操作经典规划算法(深蓝)——2
  • 【数据结构】动态内存管理函数
  • KNN算法学习实践
  • 【反悔堆】力扣1642. 可以到达的最远建筑
  • 使用八爪鱼爬虫和Web Scraper抓取数据实战案例,附详细教程
  • 《 翻 之 》
  • DeepSeek R1:高效经济的RAG系统构建利器
  • 如果把Linux主机作为路由器转发流量,性能可靠吗?
  • DeepSeek API 的获取与对话示例
  • Ollama 运行从 ModelScope 下载的 GGUF 格式的模型
  • 【最后203篇系列】005 -QTV200 Online
  • 【llm对话系统】大模型源码分析之 LLaMA 模型的 Masked Attention
  • 春节主题c语言代码
  • 关于产品和技术架构的思索
  • LCR 139.训练计划 I
  • 使用Java提取Word文档表格数据
  • 论文阅读(十四):贝叶斯网络在全基因组DNA甲基化研究中的应用
  • java 正则表达式匹配Matcher 类
  • C# Dynamic关键字
  • 东方博宜25年1月-B组(才俊)- 农田作物
  • Kafka的内部通信协议
  • 什么是心跳
  • 怎么样控制API的访问速率,防止API被滥用?
  • 动态规划DP 最长上升子序列模型 最长上升子序列(题目分析+C++完整代码)