diff options
author | Tucker Evans <tuckerevans24@gmail.com> | 2019-07-22 20:08:22 -0400 |
---|---|---|
committer | Tucker Evans <tuckerevans24@gmail.com> | 2019-07-22 20:08:22 -0400 |
commit | 54a92f688346f0cbd865ad42d8738fee630fd3b3 (patch) | |
tree | b0cc5257b3b417af60b72ec9e09ff1190bac3a5b | |
parent | db268547e272dada20d7404a25881bef50d3be8d (diff) |
Add for do loop
Does not add for loop to parse tree.
-rw-r--r-- | mypc.c | 6 | ||||
-rw-r--r-- | pc.l | 15 | ||||
-rw-r--r-- | pc.y | 8 |
3 files changed, 29 insertions, 0 deletions
@@ -65,6 +65,12 @@ union YYSTYPE* y; fprintf(stderr, "[WHILE]"); } else if (d == DO){ fprintf(stderr, "[DO]"); + } else if (d == FOR){ + fprintf(stderr, "[FOR]"); + } else if (d == TO){ + fprintf(stderr, "[TO]"); + } else if (d == DT){ + fprintf(stderr, "[DOWNTO]"); } else if (d == NOT){ fprintf(stderr, "[NOT]"); } else if (d == DOTS){ @@ -104,6 +104,21 @@ id [A-Za-z][A-Za-z0-9_]* return DO; } +"for" { + debug_print(FOR, NULL); + return FOR; +} + +"to" { + debug_print(TO, NULL); + return TO; +} + +"downto" { + debug_print(DT, NULL); + return DT; +} + "not" { debug_print(NOT, NULL); return NOT; @@ -56,6 +56,7 @@ extern int yylex(); %token IF ELSE THEN %token WHILE DO +%token FOR TO DT %token FCALL PCALL %token ARRAY_ACCESS @@ -227,8 +228,15 @@ statement { $$ = mktree(WHILE, $2, $4); } + |FOR var ASSIGNOP expr TD expr DO statement + { + /*TODO design tree structure for FOR loops*/ + $$ = NULL; + } ; +TD: TO | DT; + var :ID { |