V0.8: ignore edge-control specifiers
Update the specify code in V0.8 to ignore edge-control specifiers.
This commit is contained in:
parent
d70ccb6895
commit
d1e82d3d12
16
lexor.lex
16
lexor.lex
|
|
@ -101,6 +101,7 @@ static int comment_enter;
|
|||
%s UDPTABLE
|
||||
%x PPTIMESCALE
|
||||
%x PPDEFAULT_NETTYPE
|
||||
%s EDGES
|
||||
|
||||
W [ \t\b\f\r]+
|
||||
|
||||
|
|
@ -158,7 +159,7 @@ W [ \t\b\f\r]+
|
|||
with "*" and return that. */
|
||||
"(*"{W}*")" { return '*'; }
|
||||
|
||||
|
||||
<EDGES>"]" { BEGIN(0); return yytext[0]; }
|
||||
[}{;:\[\],()#=.@&!?<>%|^~+*/-] { return yytext[0]; }
|
||||
|
||||
\" { BEGIN(CSTRING); }
|
||||
|
|
@ -201,12 +202,25 @@ W [ \t\b\f\r]+
|
|||
<UDPTABLE>[pP] { return 'p'; }
|
||||
<UDPTABLE>[01\?\*\-] { return yytext[0]; }
|
||||
|
||||
<EDGES>"01" { return K_edge_descriptor; }
|
||||
<EDGES>"0x" { return K_edge_descriptor; }
|
||||
<EDGES>"0z" { return K_edge_descriptor; }
|
||||
<EDGES>"10" { return K_edge_descriptor; }
|
||||
<EDGES>"1x" { return K_edge_descriptor; }
|
||||
<EDGES>"1z" { return K_edge_descriptor; }
|
||||
<EDGES>"x0" { return K_edge_descriptor; }
|
||||
<EDGES>"x1" { return K_edge_descriptor; }
|
||||
<EDGES>"z0" { return K_edge_descriptor; }
|
||||
<EDGES>"z1" { return K_edge_descriptor; }
|
||||
|
||||
[a-zA-Z_][a-zA-Z0-9$_]* {
|
||||
int rc = lexor_keyword_code(yytext, yyleng);
|
||||
if (rc == IDENTIFIER) {
|
||||
yylval.text = strdup(yytext);
|
||||
if (strncmp(yylval.text,"PATHPULSE$", 10) == 0)
|
||||
rc = PATHPULSE_IDENTIFIER;
|
||||
} else if (rc == K_edge) {
|
||||
BEGIN(EDGES);
|
||||
} else {
|
||||
yylval.text = 0;
|
||||
}
|
||||
|
|
|
|||
14
parse.y
14
parse.y
|
|
@ -134,7 +134,8 @@ const static struct str_pair_t str_strength = { PGate::STRONG, PGate::STRONG };
|
|||
%token K_LOR K_LAND K_NAND K_NOR K_NXOR K_TRIGGER
|
||||
%token K_always K_and K_assign K_begin K_buf K_bufif0 K_bufif1 K_case
|
||||
%token K_casex K_casez K_cmos K_deassign K_default K_defparam K_disable
|
||||
%token K_edge K_else K_end K_endcase K_endfunction K_endmodule
|
||||
%token K_edge K_edge_descriptor
|
||||
%token K_else K_end K_endcase K_endfunction K_endmodule
|
||||
%token K_endprimitive K_endspecify K_endtable K_endtask K_event K_for
|
||||
%token K_force K_forever K_fork K_function K_highz0 K_highz1 K_if K_ifnone
|
||||
%token K_initial K_inout K_input K_integer K_join K_large K_localparam
|
||||
|
|
@ -2503,6 +2504,12 @@ spec_reference_event
|
|||
{ delete $2;
|
||||
delete $4;
|
||||
}
|
||||
| K_edge '[' edge_descriptor_list ']' expr_primary
|
||||
{ delete $5; }
|
||||
| K_edge '[' edge_descriptor_list ']' expr_primary K_TAND expression
|
||||
{ delete $5;
|
||||
delete $7;
|
||||
}
|
||||
| expr_primary K_TAND expression
|
||||
{ delete $1;
|
||||
delete $3;
|
||||
|
|
@ -2511,6 +2518,11 @@ spec_reference_event
|
|||
{ delete $1; }
|
||||
;
|
||||
|
||||
edge_descriptor_list
|
||||
: edge_descriptor_list ',' K_edge_descriptor
|
||||
| K_edge_descriptor
|
||||
;
|
||||
|
||||
spec_notifier_opt
|
||||
: /* empty */
|
||||
{ }
|
||||
|
|
|
|||
Loading…
Reference in New Issue