Mon 16 Mar 11:39:34 CET 2026
This commit is contained in:
parent
4ae719d057
commit
dc43949cf7
51
doc/Untitled.md
Normal file
51
doc/Untitled.md
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
## Program Control
|
||||
|
||||
### Statement block
|
||||
|
||||
A statement block binds single statements enclosed in a curled paranthesis pair.
|
||||
```
|
||||
{ Φ Φ Φ .. }
|
||||
```
|
||||
|
||||
### Conditional Branches
|
||||
|
||||
There is only a `if then else` statement branching to conditional statements. Conditional statements can be replaced by statement blocks, too.
|
||||
|
||||
| Statement | Description |
|
||||
|:--|:--|
|
||||
| `if ε:Φ:Φ:.. ` | If expression ε is true (not equal 0), then the following line statements are executed. |
|
||||
| `if ε then Φ:Φ:.. ` | If expression ε is true (not equal 0), then the following line statements are executed. |
|
||||
| `if ε { Φ }` | If expression ε is true (not equal 0), then the following block statement is executed. |
|
||||
| `if ε then { Φ }` | If expression ε is true (not equal 0), then the following block statement is executed. |
|
||||
| `if ε Φ1 else Φ2` | If expression ε is true (not equal 0), then the following statement Φ1 is executed else Φ2. |
|
||||
| `if ε { Φ1 } else { Φ1 }` | If expression ε is true (not equal 0), then the following block statement Φ1 is executed, else Φ2. |
|
||||
|
||||
|
||||
### Loops
|
||||
|
||||
There are conuting, conditional, and unconditional loops. Body statements can be replaced by statement blocks, too.
|
||||
|
||||
| Statement | Description | F-Stack Frame |
|
||||
|:--|:--|
|
||||
| `for i = a,b: Φ: Φ: ..` | Counting loop starting with *i*=*a* and terminating with i=b. The default increment value is one. | F(b,control address,end address,'F') |
|
||||
| `for i = a,b do Φ: Φ: ..` | Counting loop starting with *i*=*a* and terminating with i=b. The default increment value is one. | F(b,control address,end address,'F') |
|
||||
| `for i = a,b,s: Φ: Φ: ..` | Counting loop starting with *i*=*a* and looping as long as *i*<=*b*. The increment value (step size) is *s*. | F(b,step,control address,end address,'F') |
|
||||
| `while ε: Φ: Φ: ..` | Conditional loop checking the expression ε at start. | F(start address,end address, 'W') |
|
||||
| `while ε do Φ: Φ: ..` | Conditional loop checking the expression ε at start. | F(start address,end address, 'W') |
|
||||
| `do Φ: Φ: .. while ε` | Conditional loop checking the expression ε at end. | F(start address,end address, 'D') |
|
||||
| `repeat Φ` | Endless (service) loop, but breakable. | F(start address,end address, 'D') |
|
||||
| `break` | Leave current (innerst) loop | - |
|
||||
| `continue` | Branch to end of loop body (starting new loop iteration) | - |
|
||||
|
||||
### Functions and Procedures
|
||||
|
||||
| Statement | Description | F-Stack Frame |
|
||||
|:--|:--|
|
||||
| `proc pname { Φ } ` | Defines a procedure (no arguments, no return value) | - |
|
||||
| `func fname(a,b,c) { Φ } ` | Defines a function with arguments (a,b,c) and a return value. | - |
|
||||
| `return` | Return from procedure call (no return value) | - |
|
||||
| `return ε` | Return from function call with return value ε | - |
|
||||
| `call pname` | Call procedure | F() |
|
||||
| `call fname(ε,..)` | Call function without return value | F() |
|
||||
| `x=call fname(ε,..)` | Call function (in expression) with return value | F() |
|
||||
|
||||
Loading…
Reference in New Issue
Block a user