From 54a92f688346f0cbd865ad42d8738fee630fd3b3 Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Mon, 22 Jul 2019 20:08:22 -0400 Subject: Add for do loop Does not add for loop to parse tree. --- mypc.c | 6 ++++++ pc.l | 15 +++++++++++++++ pc.y | 8 ++++++++ 3 files changed, 29 insertions(+) diff --git a/mypc.c b/mypc.c index e8deeb1..3d1401c 100644 --- a/mypc.c +++ b/mypc.c @@ -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){ diff --git a/pc.l b/pc.l index e744c4d..1a686d3 100644 --- a/pc.l +++ b/pc.l @@ -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; diff --git a/pc.y b/pc.y index a3a5df9..495f64a 100644 --- a/pc.y +++ b/pc.y @@ -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 { -- cgit v1.1