aboutsummaryrefslogtreecommitdiff
path: root/language/statements/structure.rst
diff options
context:
space:
mode:
Diffstat (limited to 'language/statements/structure.rst')
-rw-r--r--language/statements/structure.rst21
1 files changed, 21 insertions, 0 deletions
diff --git a/language/statements/structure.rst b/language/statements/structure.rst
new file mode 100644
index 0000000..9330bf6
--- /dev/null
+++ b/language/statements/structure.rst
@@ -0,0 +1,21 @@
+Structure Statements
+^^^^^^^^^^^^^^^^^^^^
+
+.. crowbar:element:: StructureStatement <- IfStatement / SwitchStatement / WhileStatement / DoWhileStatement / ForStatement
+
+ A structure statement creates some nonlinear control structure.
+ There are several types of these structures.
+
+.. crowbar:element:: IfStatement <- 'if' '(' Expression ')' Block ('else' Block)?
+
+ An if statement allows some action to be performed only sometimes, based on the value of the expression.
+
+ Compile-time Behavior:
+
+ If the expression does not have type bool, the compiler must emit an error.
+
+ Runtime Behavior:
+
+ First, the expression is evaluated.
+ If the expression evaluates to a ``bool`` value of ``true``, then the first block will be executed.
+ If the expression evaluates to a ``bool`` value of ``false``, either the second block is executed or nothing is executed.