============================================
|
|
Expression statements
|
|
============================================
|
|
|
|
int main() {
|
|
x;
|
|
}
|
|
|
|
---
|
|
|
|
(function_declaration
|
|
(identifier)
|
|
(identifier)
|
|
(formal_parameters)
|
|
(statement_block
|
|
(expression_statement (identifier))))
|
|
|
|
============================================
|
|
If statements
|
|
============================================
|
|
|
|
int main() {
|
|
if (a)
|
|
b;
|
|
|
|
if (!a) {
|
|
b;
|
|
} else {
|
|
c;
|
|
}
|
|
}
|
|
|
|
---
|
|
|
|
(function_declaration
|
|
(identifier)
|
|
(identifier)
|
|
(formal_parameters)
|
|
(statement_block
|
|
(if_statement (identifier)
|
|
(expression_statement (identifier)))
|
|
(if_statement (bool_op (identifier))
|
|
(statement_block
|
|
(expression_statement (identifier)))
|
|
(statement_block
|
|
(expression_statement (identifier))))))
|
|
|
|
============================================
|
|
For loops
|
|
============================================
|
|
|
|
int main() {
|
|
for (;;)
|
|
x;
|
|
|
|
for (int i = 0; i < 5; i++) {
|
|
y;
|
|
}
|
|
|
|
for (start(); check(); step())
|
|
z;
|
|
}
|
|
|
|
---
|
|
|
|
(function_declaration (identifier) (identifier) (formal_parameters)
|
|
(statement_block
|
|
(for_statement
|
|
(expression_statement (identifier)))
|
|
(for_statement
|
|
(var_declaration (identifier) (var_assignment (identifier) (number)))
|
|
(rel_op (identifier) (number))
|
|
(math_op (identifier))
|
|
(statement_block (expression_statement (identifier))))
|
|
(for_statement
|
|
(function_call (identifier))
|
|
(function_call (identifier))
|
|
(function_call (identifier))
|
|
(expression_statement (identifier)))))
|
|
|
|
============================================
|
|
While loops
|
|
============================================
|
|
|
|
int main() {
|
|
while (x)
|
|
printf("hi");
|
|
}
|
|
|
|
---
|
|
|
|
(function_declaration (identifier) (identifier) (formal_parameters)
|
|
(statement_block
|
|
(while_statement (identifier)
|
|
(expression_statement (function_call (identifier) (string))))))
|