Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
language:controlflow [2019/04/18 14:22] rajit |
language:controlflow [2020/12/02 01:00] 127.0.0.1 external edit |
||
---|---|---|---|
Line 78: | Line 78: | ||
===== Selections ===== | ===== Selections ===== | ||
+ | |||
+ | Conditional execution is supported by the selection statement. The | ||
+ | syntax of a selection statement is: | ||
+ | |||
+ | < | ||
+ | [ boolean_expression -> body | ||
+ | [] boolean_expression -> body | ||
+ | .. | ||
+ | ] | ||
+ | </ | ||
+ | The last Boolean expression in the conditional can be the keyword | ||
+ | '' | ||
+ | |||
+ | Any one body whose corresponding Boolean expression is true is | ||
+ | executed. For instance, we can create 32 registers with | ||
+ | something special for register 0 as follows: | ||
+ | |||
+ | < | ||
+ | (i : 32 : | ||
+ | [ i = 0 -> r0(in[i], | ||
+ | [] else -> r[i](in[i], | ||
+ | ] | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | Boolean expressions can be constructed from Boolean variables, the | ||
+ | constants '' | ||
+ | ''&'', | ||
+ | operations respectively. | ||
+ | ''<'', | ||
+ | the operators less than, less than or equal to, greater than, greater | ||
+ | than or equal to, equal to, and not equal to respectively. | ||
+ | |||
+ | ===== Recursion ===== | ||
+ | |||
+ | Type definitions can be recursive. For instance, the following | ||
+ | definition can be used to create a tree structure. | ||
+ | |||
+ | < | ||
+ | template< | ||
+ | defproc tree (bool a[N]) | ||
+ | { | ||
+ | [ N = 1 -> leaf l(a[0]); | ||
+ | [] N > 1 -> tree< | ||
+ | | ||
+ | ] | ||
+ | } | ||
+ | </ | ||
+ | |||