From bacbb4cafdd3cf8b649a40ca1d23c3a94278ed79 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Mon, 23 Dec 2019 15:19:22 -0500 Subject: [PATCH] Parse join_any/join_none still as unsupported. --- src/verilog.l | 4 ++-- src/verilog.y | 26 +++++++++++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/verilog.l b/src/verilog.l index 0a082bd43..defc5430d 100644 --- a/src/verilog.l +++ b/src/verilog.l @@ -442,6 +442,8 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "inside" { FL; return yINSIDE; } "int" { FL; return yINT; } "interface" { FL; return yINTERFACE; } + "join_any" { FL; return yJOIN_ANY; } + "join_none" { FL; return yJOIN_NONE; } "local" { FL; return yLOCAL__LEX; } "logic" { FL; return yLOGIC; } "longint" { FL; return yLONGINT; } @@ -495,8 +497,6 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "ignore_bins" { ERROR_RSVD_WORD("SystemVerilog 2005"); } "illegal_bins" { ERROR_RSVD_WORD("SystemVerilog 2005"); } "intersect" { ERROR_RSVD_WORD("SystemVerilog 2005"); } - "join_any" { ERROR_RSVD_WORD("SystemVerilog 2005"); } - "join_none" { ERROR_RSVD_WORD("SystemVerilog 2005"); } "matches" { ERROR_RSVD_WORD("SystemVerilog 2005"); } "randomize" { ERROR_RSVD_WORD("SystemVerilog 2005"); } "randsequence" { ERROR_RSVD_WORD("SystemVerilog 2005"); } diff --git a/src/verilog.y b/src/verilog.y index 510e67b57..e840cefda 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -406,6 +406,8 @@ class AstSenTree; %token yINTEGER "integer" %token yINTERFACE "interface" %token yJOIN "join" +%token yJOIN_ANY "join_any" +%token yJOIN_NONE "join_none" %token yLOCALPARAM "localparam" %token yLOCAL__COLONCOLON "local-then-::" %token yLOCAL__ETC "local" @@ -2464,8 +2466,24 @@ seq_block: // ==IEEE: seq_block ; par_block: // ==IEEE: par_block - par_blockFront blockDeclStmtList yJOIN endLabelE { $$=$1; $1->addStmtsp($2); SYMP->popScope($1); GRAMMARP->endLabel($4,$1,$4); } - | par_blockFront /**/ yJOIN endLabelE { $$=$1; SYMP->popScope($1); GRAMMARP->endLabel($3,$1,$3); } + par_blockFront blockDeclStmtList yJOIN endLabelE + { $$ = $1; $1->addStmtsp($2); + SYMP->popScope($1); GRAMMARP->endLabel($4, $1, $4); } + | par_blockFront /**/ yJOIN endLabelE + { $$ = $1; + SYMP->popScope($1); GRAMMARP->endLabel($3, $1, $3); } + | par_blockFront blockDeclStmtList yJOIN_ANY endLabelE + { $$ = $1; $1->addStmtsp($2); + SYMP->popScope($1); GRAMMARP->endLabel($4, $1, $4); } + | par_blockFront /**/ yJOIN_ANY endLabelE + { $$ = $1; + SYMP->popScope($1); GRAMMARP->endLabel($3, $1, $3); } + | par_blockFront blockDeclStmtList yJOIN_NONE endLabelE + { $$ = $1; $1->addStmtsp($2); + SYMP->popScope($1); GRAMMARP->endLabel($4, $1, $4); } + | par_blockFront /**/ yJOIN_NONE endLabelE + { $$ = $1; + SYMP->popScope($1); GRAMMARP->endLabel($3, $1, $3); } ; seq_blockFront: // IEEE: part of seq_block @@ -2475,7 +2493,9 @@ seq_blockFront: // IEEE: part of seq_block par_blockFront: // IEEE: part of par_block yFORK { $$ = new AstBegin($1, "", NULL); SYMP->pushNew($$); - BBUNSUP($1, "Unsupported: fork statements"); } + BBUNSUP($1, "Unsupported: fork statements"); + // When support, record or BBUNSUP yJOIN_ANY/yJOIN_NONE + } | yFORK ':' idAny/*new-block_identifier*/ { $$ = new AstBegin($3, *$3, NULL); SYMP->pushNew($$); BBUNSUP($1, "Unsupported: fork statements"); } ;