From a043b124b5390380638eeec56fb143d2670af85c Mon Sep 17 00:00:00 2001 From: Larry Doolittle Date: Thu, 23 Nov 2017 18:34:08 -0800 Subject: First stupid attempt to finish part select No attempt to figure out -: vs. +: Already yields much better results on test files --- src/vhd2vl.y | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) (limited to 'src/vhd2vl.y') diff --git a/src/vhd2vl.y b/src/vhd2vl.y index be3102c..46deefc 100644 --- a/src/vhd2vl.y +++ b/src/vhd2vl.y @@ -302,30 +302,33 @@ slist *addind(slist *sl){ return sl; } -slist *addpar(slist *sl, vrange *v){ +slist *addpar_snug(slist *sl, vrange *v){ + fprintf(stderr,"addpar_snug %d: ", v->sizeval); + fslprint(stderr, v->size_expr); + fprintf(stderr,"\n"); if(v->nlo != NULL) { /* indexes are simple expressions */ - sl=addtxt(sl," ["); + sl=addtxt(sl,"["); if(v->nhi != NULL){ sl=addsl(sl,v->nhi); + if(v->sizeval==-2) sl=addtxt(sl,"+"); sl=addtxt(sl,":"); } - sl=addsl(sl,v->nlo); - sl=addtxt(sl,"] "); - } else { - sl=addtxt(sl," "); + if(v->sizeval==-2){ + sl=addsl(sl,v->size_expr); + sl=addtxt(sl," + 1"); + } else { + sl=addsl(sl,v->nlo); + } + sl=addtxt(sl,"]"); } return sl; } -slist *addpar_snug(slist *sl, vrange *v){ +slist *addpar(slist *sl, vrange *v){ + sl=addtxt(sl," "); if(v->nlo != NULL) { /* indexes are simple expressions */ - sl=addtxt(sl,"["); - if(v->nhi != NULL){ - sl=addsl(sl,v->nhi); - sl=addtxt(sl,":"); - } - sl=addsl(sl,v->nlo); - sl=addtxt(sl,"]"); + sl=addpar_snug(sl, v); + sl=addtxt(sl," "); } return sl; } @@ -1219,6 +1222,7 @@ vec_range : simple_expr updown simple_expr { } } else if ((range_diff = slist_check_diff($$->nhi, $$->nlo))) { if (DEBUG_RANGE) fprintf(stderr, "difference: %s\n", range_diff); + $$->sizeval = -2; /* special */ $$->size_expr = addtxt(NULL, range_diff); } else { /* make an expression to calculate the width of this vrange: -- cgit v1.2.1