Skip to content

Commit efb5d3c

Browse files
committed
add control flow statements
1 parent b823f6e commit efb5d3c

12 files changed

+42
-2
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
out
22
**/__pycache__
3+
syntax/csharp/sequence-data/program.ebnf
4+
.DS_Store
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
case statement = "switch", "(", expression, ")", "{", { case }+, [default case], "}";
2+
3+
case = "case", constant expression, ":", { statement, ";" }*, ["break;"] ;
4+
5+
default case = "default:", { statement, ";" }* ;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
compound statement = "{", { statement, ";" }* ,"}" ;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
do while loop = "do", compound statement, "while", "(", expression, ")" ;
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
for loop = "for", "(", initialiser, ";", control, ";", increment, ")", statement;
2+
3+
initialiser = assignment statement ;
4+
5+
control = expression ;
6+
7+
increment = assignment statement ;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
if statement = "if", "(", expression, ")", statement, ["else", statement] ;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
break statement = "break";
2+
3+
continue statement = "continue";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
statement = method call | assignment statement | compound statement | branching statement | looping statement | jump statement;
2+
3+
branching stmt. = if statement | case statement ;
4+
5+
looping stmt. = while loop | do while loop | for loop ;
6+
7+
jump statement = break statement | continue statement ;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
while loop = "while", "(", expression, ")", statement ;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
assignment stmt. = standard assignment | post increment | post decrement | pre increment | pre decrement, ";" ;
2+
3+
std. assignment = variable name, "=" | "+=" | "-=" | "*=" | "/=" , expression ;
4+
5+
post increment = variable name, "++" ;
6+
post decrement = variable name, "--";
7+
pre increment = "++", variable name;
8+
pre decrement = "--", variable name;
9+
10+
variable name = identifier;
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
method call = method name, "(", { argument }*(",") ")" ;
1+
method call = method name, "(", { argument }*(",") ")", ";" ;
+3-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
program = [using clause], { instruction, ";" }* ;
1+
program = [using clause], { statement }* ;
22
using clause = "using", "static", class name ;
3+
4+
statement = variable declaration | method call | assignment statement;

0 commit comments

Comments
 (0)