结构
1、标示符
- 必须包含字母,可以包含下划线
- 以字母开头,区分大小写
2、模块
- 定义部分
- 可选的控制部分
3、范围
- 模块定义部分
- 模块控制部分
- 元件类型
- 函数
- altstep
- test case
- 语句块
- 实例
- 用户定义名称类型
4、常数
- 关键字const
- 必须在声明的时候赋值
- 不能使用rnd()函数
5、变量
- 关键字var
- 不能再模块层声明,即不允许全局变量
- 声明时可以赋值,如果为赋值前读或用将导致run-time error
9、函数
- 关键字function在模块定义部分中定义
- type前加in传递数,out和inout传递reference
- 支持外部函数external
11、参数初始值
- in可以有初始值,out和inout不能有
- 带初始值的参数后面跟无初始值的参数,中间使用破折号隔开
语句
1、操作符、表达式、赋值
- 数学:+, -, *, /, mod, rem
- 关系:==, <, >, != , >=,<=
- 逻辑:not and, or, xor
- 字符:not4b, and4b, xor4b, or4b
- 字符串:&, <<, >>, <@, @>
2、选择语句
- if-else
- select-case
3、循环
- for
- do-while
- while
支持break和continue
4、label和goto
- label:定义逻辑语句块中独一无二的标签
- goto:直接跳到同一语句块中label的位置,不允许跨函数、test case或控制部分的跳,也不允许跳入循环和if-else。
5、log
- 可以log变量、数组元素、常数、函数参数;也可log测试组件引用、模板、timer和相关TTCN-3操作
- 函数参数只有当return定义时才可以被引用
- 不建议log影响测试动作或包含loop结构的实例
6、控制部分
- 相当于main函数
7、预处理宏
- 宏可以使用在定义或控制部分
- 模板和注释中的字符串值不会被宏替换