程序结构 (Program Structure)

1
2
3
<程序> ::= <模块定义> , { <语句> }

<模块定义> ::= 'MODULE' <标识符> { 'IN:' <标识符> }

类型系统 (Type System)

1
<类型> ::= 'BOOL' | 'CHAR'

声明与定义 (Declarations & Definitions)

1
2
3
4
5
6
7
8
9
10
<声明> ::= <单比特声明>

<单比特声明> ::= 'SIG' <标识符> '@' 'BOOL' <字面量集合>
| 'SIG' <标识符> '@' 'CHAR' <字面量集合>

<布尔字面量> ::= 'T' | 'F' | 'TRUE' | 'FALSE'

<字面量集合> ::= '[' <布尔字面量> { '|' <布尔字面量> } ']'
| '[' <字符字面量> { '|' <字符字面量> } ']'
| '[' ']' (* 初始值必须提供,此形式仅用于 EBNF 泛指 *)

表达式 (Expressions)

1
2
3
4
5
6
7
8
9
10
11
<表达式> ::= <或表达式>

<或表达式> ::= <与表达式> { 'or' <与表达式> }

<与表达式> ::= <非表达式> { 'and' <非表达式> }

<非表达式> ::= 'not' <非表达式> | <基本项>

<基本项> ::= <信号引用> | '(' <表达式> ')'

<信号引用> ::= <标识符>

语句 (Statements)

1
2
3
4
5
6
7
<语句> ::= <声明> | <连接语句> | <io语句> | <ret语句>

<连接语句> ::= <标识符> '@' <表达式>

<io语句> ::= 'LIGHT' <信号引用>

<ret语句> ::= 'RET' <信号引用>