1 | encapsulated package InstSection
|
---|
2 | uniontype Statement
|
---|
3 | record ALG_WHEN_A
|
---|
4 | list<list<Statement>> branches;
|
---|
5 | SourceInfo info;
|
---|
6 | end ALG_WHEN_A;
|
---|
7 |
|
---|
8 | record STMT_WHEN
|
---|
9 | list<Statement> statementLst;
|
---|
10 | Option<Statement> elseWhen;
|
---|
11 | end STMT_WHEN;
|
---|
12 | end Statement;
|
---|
13 |
|
---|
14 | function instStatement
|
---|
15 | input Statement inStatement;
|
---|
16 | output list<Statement> outStatements;
|
---|
17 | algorithm
|
---|
18 | outStatements := match inStatement
|
---|
19 | local
|
---|
20 | list<Statement> sstmts;
|
---|
21 | Option<Statement> when_stmt_opt;
|
---|
22 | Statement when_stmt;
|
---|
23 |
|
---|
24 | case ALG_WHEN_A()
|
---|
25 | algorithm
|
---|
26 | when_stmt_opt := NONE();
|
---|
27 |
|
---|
28 | for b in inStatement.branches loop
|
---|
29 | when_stmt := STMT_WHEN(b, when_stmt_opt);
|
---|
30 | when_stmt_opt := SOME(when_stmt);
|
---|
31 | end for;
|
---|
32 | then
|
---|
33 | {when_stmt};
|
---|
34 |
|
---|
35 | end match;
|
---|
36 | end instStatement;
|
---|
37 | end InstSection;
|
---|