diff --git a/vpi/sdf_lexor.lex b/vpi/sdf_lexor.lex index 44d0aa94b..c9c645909 100644 --- a/vpi/sdf_lexor.lex +++ b/vpi/sdf_lexor.lex @@ -41,8 +41,19 @@ static int yywrap(void) # define yylval sdflval %} +%x CCOMMENT + %% + /* Skip C++-style comments. */ +"//".* { sdflloc.first_line += 1; } + + /* Skip C-style comments. */ +"/*" { BEGIN(CCOMMENT); } +. { yymore(); } +\n { sdflloc.first_line += 1; yymore(); } +"*/" { BEGIN(0); } + [ \m\t] { /* Skip white space. */; } /* Count lines so that the parser can assign line numbers. */ diff --git a/vpi/sdf_parse.y b/vpi/sdf_parse.y index 8ac41013c..74c451ea7 100644 --- a/vpi/sdf_parse.y +++ b/vpi/sdf_parse.y @@ -62,6 +62,10 @@ static char use_hchar = '.'; source_file : '(' K_DELAYFILE sdf_header_list cell_list ')' + | '(' K_DELAYFILE error ')' + { vpi_printf("%s:%d:SDF ERROR: Invalid DELAYFILE format\n", + sdf_parse_path, @2.first_line); + } ; sdf_header_list @@ -304,5 +308,5 @@ signed_real_number void yyerror(const char*msg) { - fprintf(stderr, "SDF ERROR: %s\n", msg); + vpi_printf("%s:SDF ERROR: Too many errors: %s\n", sdf_parse_path, msg); }