Skip to content

Commit d7d18ef

Browse files
committed
add pattern ::= '(' pattern ')' production
1 parent dcbb4a2 commit d7d18ef

File tree

2 files changed

+58
-65
lines changed

2 files changed

+58
-65
lines changed

sv-parser-parser/src/behavioral_statements/patterns.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use nom::Parser;
2+
13
use crate::*;
24

35
// -----------------------------------------------------------------------------
@@ -14,6 +16,7 @@ pub(crate) fn pattern(s: Span) -> IResult<Span, Pattern> {
1416
pattern_tagged,
1517
pattern_list,
1618
pattern_identifier_list,
19+
paren(pattern).map(|p| p.nodes.1),
1720
))(s)
1821
}
1922

sv-parser-parser/src/tests.rs

+55-65
Original file line numberDiff line numberDiff line change
@@ -5987,71 +5987,61 @@ mod spec {
59875987
end"##,
59885988
Ok((_, _))
59895989
);
5990-
// TODO
5991-
// tagged can't have paren.
5992-
//test!(
5993-
// many1(module_item),
5994-
// r##"initial begin
5995-
// case (instr) matches
5996-
// tagged Add '{.r1, .r2, .rd} &&& (rd != 0) : rf[rd] = rf[r1] + rf[r2];
5997-
// tagged Jmp (tagged JmpU .a) : pc = pc + a;
5998-
// tagged Jmp (tagged JmpC '{.c, .a}) : if (rf[c]) pc = a;
5999-
// endcase
6000-
// end"##,
6001-
// Ok((_, _))
6002-
//);
6003-
// TODO
6004-
// tagged can't have paren.
6005-
//test!(
6006-
// many1(module_item),
6007-
// r##"initial begin
6008-
// case (instr) matches
6009-
// tagged Add '{reg2:.r2,regd:.rd,reg1:.r1} &&& (rd != 0):
6010-
// rf[rd] = rf[r1] + rf[r2];
6011-
// tagged Jmp (tagged JmpU .a) : pc = pc + a;
6012-
// tagged Jmp (tagged JmpC '{addr:.a,cc:.c}) : if (rf[c]) pc = a;
6013-
// endcase
6014-
// end"##,
6015-
// Ok((_, _))
6016-
//);
6017-
// TODO
6018-
// tagged can't have paren.
6019-
//test!(
6020-
// many1(module_item),
6021-
// r##"initial begin
6022-
// if (e matches (tagged Jmp (tagged JmpC '{cc:.c,addr:.a})))
6023-
// ; // c and a can be used here
6024-
// else
6025-
// ;
6026-
// end"##,
6027-
// Ok((_, _))
6028-
//);
6029-
// TODO
6030-
// tagged can't have paren.
6031-
//test!(
6032-
// many1(module_item),
6033-
// r##"initial begin
6034-
// if (e matches (tagged Jmp .j) &&&
6035-
// j matches (tagged JmpC '{cc:.c,addr:.a}))
6036-
// ; // c and a can be used here
6037-
// else
6038-
// ;
6039-
// end"##,
6040-
// Ok((_, _))
6041-
//);
6042-
// TODO
6043-
// tagged can't have paren.
6044-
//test!(
6045-
// many1(module_item),
6046-
// r##"initial begin
6047-
// if (e matches (tagged Jmp (tagged JmpC '{cc:.c,addr:.a}))
6048-
// &&& (rf[c] != 0))
6049-
// ; // c and a can be used here
6050-
// else
6051-
// ;
6052-
// end"##,
6053-
// Ok((_, _))
6054-
//);
5990+
test!(
5991+
many1(module_item),
5992+
r##"initial begin
5993+
case (instr) matches
5994+
tagged Add '{.r1, .r2, .rd} &&& (rd != 0) : rf[rd] = rf[r1] + rf[r2];
5995+
tagged Jmp (tagged JmpU .a) : pc = pc + a;
5996+
tagged Jmp (tagged JmpC '{.c, .a}) : if (rf[c]) pc = a;
5997+
endcase
5998+
end"##,
5999+
Ok((_, _))
6000+
);
6001+
test!(
6002+
many1(module_item),
6003+
r##"initial begin
6004+
case (instr) matches
6005+
tagged Add '{reg2:.r2,regd:.rd,reg1:.r1} &&& (rd != 0):
6006+
rf[rd] = rf[r1] + rf[r2];
6007+
tagged Jmp (tagged JmpU .a) : pc = pc + a;
6008+
tagged Jmp (tagged JmpC '{addr:.a,cc:.c}) : if (rf[c]) pc = a;
6009+
endcase
6010+
end"##,
6011+
Ok((_, _))
6012+
);
6013+
test!(
6014+
many1(module_item),
6015+
r##"initial begin
6016+
if (e matches (tagged Jmp (tagged JmpC '{cc:.c,addr:.a})))
6017+
; // c and a can be used here
6018+
else
6019+
;
6020+
end"##,
6021+
Ok((_, _))
6022+
);
6023+
test!(
6024+
many1(module_item),
6025+
r##"initial begin
6026+
if (e matches (tagged Jmp .j) &&&
6027+
j matches (tagged JmpC '{cc:.c,addr:.a}))
6028+
; // c and a can be used here
6029+
else
6030+
;
6031+
end"##,
6032+
Ok((_, _))
6033+
);
6034+
test!(
6035+
many1(module_item),
6036+
r##"initial begin
6037+
if (e matches (tagged Jmp (tagged JmpC '{cc:.c,addr:.a}))
6038+
&&& (rf[c] != 0))
6039+
; // c and a can be used here
6040+
else
6041+
;
6042+
end"##,
6043+
Ok((_, _))
6044+
);
60556045
test!(
60566046
many1(module_item),
60576047
r##"module m;

0 commit comments

Comments
 (0)