aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-parse_psl.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdl/vhdl-parse_psl.adb')
-rw-r--r--src/vhdl/vhdl-parse_psl.adb110
1 files changed, 61 insertions, 49 deletions
diff --git a/src/vhdl/vhdl-parse_psl.adb b/src/vhdl/vhdl-parse_psl.adb
index b664ec5c2..e50367648 100644
--- a/src/vhdl/vhdl-parse_psl.adb
+++ b/src/vhdl/vhdl-parse_psl.adb
@@ -679,12 +679,12 @@ package body Vhdl.Parse_Psl is
begin
case Get_Kind (N) is
when N_Sequence_Instance
- | N_Star_Repeat_Seq
- | N_Plus_Repeat_Seq
- | N_Equal_Repeat_Seq
- | N_Goto_Repeat_Seq
- | N_Braced_SERE
- | N_Clocked_SERE =>
+ | N_Star_Repeat_Seq
+ | N_Plus_Repeat_Seq
+ | N_Equal_Repeat_Seq
+ | N_Goto_Repeat_Seq
+ | N_Braced_SERE
+ | N_Clocked_SERE =>
return N;
when N_And_Prop =>
Res := Create_Node (N_And_Seq);
@@ -699,52 +699,54 @@ package body Vhdl.Parse_Psl is
Set_Right (N, Property_To_Sequence (Get_Right (N)));
return N;
when N_Clock_Event
- | N_Always
- | N_Never
- | N_Eventually
- | N_Until
- | N_Property_Parameter
- | N_Property_Instance
- | N_Endpoint_Instance
- | N_Strong
- | N_Abort
- | N_Next_Event_E
- | N_Next_Event_A
- | N_Next_Event
- | N_Next_E
- | N_Next_A
- | N_Next
- | N_Log_Imp_Prop
- | N_Paren_Prop =>
+ | N_Always
+ | N_Never
+ | N_Eventually
+ | N_Until
+ | N_Property_Parameter
+ | N_Property_Instance
+ | N_Endpoint_Instance
+ | N_Strong
+ | N_Abort
+ | N_Next_Event_E
+ | N_Next_Event_A
+ | N_Next_Event
+ | N_Next_E
+ | N_Next_A
+ | N_Next
+ | N_Log_Imp_Prop
+ | N_Log_Equiv_Prop
+ | N_Paren_Prop =>
Error_Msg_Parse (+N, "construct not allowed in sequences");
return N;
when N_Const_Parameter
- | N_Boolean_Parameter
- | N_Sequence_Parameter
- | N_Actual
- | N_And_Seq
- | N_Or_Seq
- | N_Imp_Seq
- | N_Overlap_Imp_Seq
- | N_Match_And_Seq
- | N_Imp_Bool
- | N_Or_Bool
- | N_And_Bool
- | N_Not_Bool
- | N_Paren_Bool
- | N_Fusion_SERE
- | N_HDL_Expr
- | N_HDL_Bool
- | N_Hdl_Mod_Name
- | N_Concat_SERE
- | N_Within_SERE
- | N_False
- | N_True
- | N_Number
- | N_Name_Decl
- | N_Name
- | N_EOS
- | N_Error =>
+ | N_Boolean_Parameter
+ | N_Sequence_Parameter
+ | N_Actual
+ | N_And_Seq
+ | N_Or_Seq
+ | N_Imp_Seq
+ | N_Equiv_Bool
+ | N_Overlap_Imp_Seq
+ | N_Match_And_Seq
+ | N_Imp_Bool
+ | N_Or_Bool
+ | N_And_Bool
+ | N_Not_Bool
+ | N_Paren_Bool
+ | N_Fusion_SERE
+ | N_HDL_Expr
+ | N_HDL_Bool
+ | N_Hdl_Mod_Name
+ | N_Concat_SERE
+ | N_Within_SERE
+ | N_False
+ | N_True
+ | N_Number
+ | N_Name_Decl
+ | N_Name
+ | N_EOS
+ | N_Error =>
return N;
when N_Vmode
| N_Vunit
@@ -812,6 +814,7 @@ package body Vhdl.Parse_Psl is
loop
case Current_Token is
when Tok_Minus_Greater =>
+ -- ->
if Prio > Prio_Bool_Imp then
return Res;
end if;
@@ -820,6 +823,15 @@ package body Vhdl.Parse_Psl is
Scan;
Set_Right (N, Parse_FL_Property (Prio_Bool_Imp));
Res := N;
+ when Tok_Equiv_Arrow =>
+ if Prio > Prio_Bool_Imp then
+ return Res;
+ end if;
+ N := Create_Node_Loc (N_Log_Equiv_Prop);
+ Set_Left (N, Res);
+ Scan;
+ Set_Right (N, Parse_FL_Property (Prio_Bool_Imp));
+ Res := N;
when Tok_Bar_Arrow =>
if Prio > Prio_Seq_Imp then
return Res;