aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-03-18 13:21:58 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-03-18 13:21:58 +0000
commiteae17d816ea2aa8075d671635c45d3d6b7891e90 (patch)
tree9d7c24035bddb199a728b16cb3cf1c301e47ff92 /c_compiler
parentf8d984811645f0af6859deff1bf53250317ca542 (diff)
downloadCompiler-eae17d816ea2aa8075d671635c45d3d6b7891e90.tar.gz
Compiler-eae17d816ea2aa8075d671635c45d3d6b7891e90.zip
Working while loop
Diffstat (limited to 'c_compiler')
-rw-r--r--c_compiler/src/c_parser.y2
-rw-r--r--c_compiler/test/in/while.c11
2 files changed, 12 insertions, 1 deletions
diff --git a/c_compiler/src/c_parser.y b/c_compiler/src/c_parser.y
index 721a6e3..8f70a90 100644
--- a/c_compiler/src/c_parser.y
+++ b/c_compiler/src/c_parser.y
@@ -212,7 +212,7 @@ JumpStatement: T_RETURN Expression T_SC { $$ = new JumpStatement($2); }
;
IterationStatement:
- T_WHILE T_LRB Expression T_RRB Statement { $$ = $5; }
+ T_WHILE T_LRB Expression T_RRB Statement { $$ = new WhileLoop($3, $5); }
| T_DO Statement T_WHILE T_LRB Expression T_RRB T_SC { $$ = $2; }
| T_FOR T_LRB Expression T_SC Expression T_SC Expression T_RRB Statement { $$ = $9; }
;
diff --git a/c_compiler/test/in/while.c b/c_compiler/test/in/while.c
new file mode 100644
index 0000000..00ad19d
--- /dev/null
+++ b/c_compiler/test/in/while.c
@@ -0,0 +1,11 @@
+int main()
+{
+ int x = 0;
+
+ while(x < 10)
+ {
+ x = x + 1;
+ }
+
+ return x;
+}