- add after clause parsing in concurrent assignment statements

- add note on unsupported statements when an error message is displayed
This commit is contained in:
Ludovic Jacomme 2004-09-03 19:11:18 +00:00
parent bef44491e3
commit 694ad8fbd3
3 changed files with 49 additions and 3 deletions

View File

@ -48,9 +48,12 @@
# define my_fprintf fprintf( stdout, "%s %d : ", basename(__FILE__), __LINE__ ); fprintf # define my_fprintf fprintf( stdout, "%s %d : ", basename(__FILE__), __LINE__ ); fprintf
# define my_vbl_error(N,V) \ # define my_vbl_error(N,V) \
do { fprintf( stderr, "%s %d : ", basename(__FILE__), __LINE__); vbl_error(N,V); } while(0) do { fprintf( stderr, "%s %d : ", basename(__FILE__), __LINE__); vbl_error(N,V); } while(0)
# define my_vbl_warning(N,V) \
do { fprintf( stderr, "%s %d : ", basename(__FILE__), __LINE__); vbl_warning(N,V); } while(0)
#else #else
# define my_fprintf fprintf # define my_fprintf fprintf
# define my_vbl_error vbl_error # define my_vbl_error vbl_error
# define my_vbl_warning vbl_warning
#endif #endif
#ifdef VBL_DEBUG #ifdef VBL_DEBUG
@ -6043,9 +6046,28 @@ signal_assignment_statement
; ;
waveform_element waveform_element
: expression : expression
{ $$ = $1; } .AFTER__delay_expression.
; {
$$ = $1;
}
;
.AFTER__delay_expression.
: /*empty*/
{ }
| AFTER
delay_expression
{
my_vbl_warning( 0, "after clauses ignored !" );
}
;
delay_expression
: AbstractLit
time_label
{ }
;
if_statement if_statement
: IF : IF

View File

@ -88,5 +88,6 @@ extern int vbl_intSize();
extern int vbl_vextonum(); extern int vbl_vextonum();
extern vbtyp_list *vbl_getbasetype(); extern vbtyp_list *vbl_getbasetype();
extern void vbl_error(); extern void vbl_error();
extern void vbl_warning();
extern int vbl_tobin(); extern int vbl_tobin();

View File

@ -502,6 +502,9 @@ char *str1;
break; break;
} }
fprintf( stderr,
"Note that errors might also be due to unsupported statements\n" );
if (VBL_ERRFLG > VBL_MXRDFN) if (VBL_ERRFLG > VBL_MXRDFN)
{ {
(void) fprintf (stderr,"Too many errors. Cannot continue further more\n"); (void) fprintf (stderr,"Too many errors. Cannot continue further more\n");
@ -512,6 +515,26 @@ char *str1;
autexit(1); autexit(1);
} }
void vbl_warning (code,str1)
int code;
char *str1;
{
(void)fprintf (stderr,"Warning %d line %ld in file %s :",code,VBL_LINNUM, VBL_FILENAME);
switch (code)
{
case 0:
(void) fprintf (stderr," %s\n", str1);
break;
default:
(void) fprintf (stderr, "unknown warning\n");
break;
}
}
/* ###--------------------------------------------------------------### */ /* ###--------------------------------------------------------------### */
/* function : vbl_y_error */ /* function : vbl_y_error */
/* ###--------------------------------------------------------------### */ /* ###--------------------------------------------------------------### */