Scade 表达式 - 算术表达式

发布于:2024-12-18 ⋅ 阅读:(6721) ⋅ 点赞:(0)

本篇 Scade 语言教程将讲述 Scade 表达式中的算术类表达式算子。

在Scade 文法定义中,与算术表达式相关的文法定义如下

expr ::= ...
    | arith_expr
    ...

arith_expr ::= unary_arith_op expr
    | expr bin_arith_op expr
    | ( expr : type_expr )

unary_arith_op ::= – | + | lnot
bin_arith_op ::= + | – | * | / | mod | land | lor | lxor | lsl | lsr

算术类表达式包括三类

  • 一元算术表达式
  • 二元算术表达式
  • 数值类型转换表达式

一元算术表达式

一元算术表达式为左结合的表达式,算子包括: -, +, lnot

- 一元表达式

- 一元表达式代表取负操作。使用样例如下

function unaryMinusOp(ival1: int8) returns (ival2: int8)
let  
  ival2 = - ival1;
tel

+ 一元表达式

+ 一元表达式代表取正操作。使用样例如下

function unaryPlusOp(i: int8) returns (o: int8) 
	o = + i;

lnot 一元表达式

lnot 一元表达式表达式代表逻辑取反操作。使用样例如下

function lnotOp(ui8val1: uint8) returns (ui8val2: uint8)
let  
  ui8val2 = lnot ui8val1;
tel

二元算术表达式

二元算术表达式算子包括 +, -, *, /, mod, land, lor, lxor, lsl, lsr

+ 二元表达式

+ 二元表达式代表加法。使用样例如下

function plusOp(ival1, ival2: int8) returns (ival3: int8)
let  
  ival3 = ival1 + ival2;
tel

- 二元表达式

- 二元表达式代表减法。使用样例如下

function minusOp(i8val1, i8val2: int8) returns (i8val3: int8)
let
  i8val3 = i8val1 - i8val2;
tel

* 二元表达式

* 二元表达式代表乘法。使用样例如下

function multiplicationOp(ival1, ival2: int8) returns (ival3: int8)
let  
  ival3 = ival1 * ival2;
tel

/ 二元表达式

/ 二元表达式代表除法。使用样例如下

function divisionOp(ival1, ival2: int8) returns (ival3: int8)
let
  ival3 = ival1 / ival2;
tel

mod 二元表达式

mod 二元表达式代表取余。使用样例如下

function modOp(ival1, ival2: int8) returns (ival3: int8)
let  
  ival3 = ival1 mod ival2;
tel

land 二元表达式

land 二元表达式代表按位与。使用样例如下

function landOp(ui8val1, ui8val2: uint8) returns (ui8val3: uint8)
let  
  ui8val3 = ui8val1 land ui8val2;
tel

lor 二元表达式

lor 二元表达式代表按位或。使用样例如下

function lorOp(ui8val1, ui8val2: uint8) returns (ui8val3: uint8)
let
  ui8val3 = ui8val1 lor ui8val2;
tel

lxor 二元表达式

lxor 二元表达式代表按位异或。使用样例如下

function lxorOp(ui8val1, ui8val2: uint8) returns (ui8val3: uint8)
let  
  ui8val3 = ui8val1 lxor ui8val2;
tel

lsl 二元表达式

lsl 二元表达式代表左移。使用样例如下

function lslOp(ui8val1, ui8val2: uint8) returns (ui8val3: uint8)
let  
  ui8val3 = ui8val1 lsl ui8val2;
tel

lsr 二元表达式

lsr 二元表达式代表右移。使用样例如下

function lsrOp(ui8val1, ui8val2: uint8) returns (ui8val3: uint8)
let  
  ui8val3 = ui8val1 lsr ui8val2;
tel

数值类型转换表达式

( expr : type_expr ) 为数值类型转换表达式,将数值 expr 转为 type_expr 类型。使用样例如下

function numericCastOp(i16val1: int16) returns (i16val2: int8)
let  
  i16val2 = (i16val1 : int8);
tel

网站公告

今日签到

点亮在社区的每一天
去签到