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.adb31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/vhdl/vhdl-parse_psl.adb b/src/vhdl/vhdl-parse_psl.adb
index 808c2dae7..e456514bf 100644
--- a/src/vhdl/vhdl-parse_psl.adb
+++ b/src/vhdl/vhdl-parse_psl.adb
@@ -812,6 +812,8 @@ package body Vhdl.Parse_Psl is
| N_Endpoint_Instance
| N_Strong
| N_Abort
+ | N_Async_Abort
+ | N_Sync_Abort
| N_Next_Event_E
| N_Next_Event_A
| N_Next_Event
@@ -864,6 +866,18 @@ package body Vhdl.Parse_Psl is
end case;
end Property_To_Sequence;
+ function Parse_Abort (Kind : Nkind; Left : Node) return Node
+ is
+ N : Node;
+ begin
+ N := Create_Node_Loc (Kind);
+ Set_Property (N, Left);
+ Scan;
+ Set_Boolean (N, Parse_Boolean (Prio_Lowest));
+ -- Left associative.
+ return N;
+ end Parse_Abort;
+
-- A.4.4 PSL properties
-- FL_Property::=
-- Boolean
@@ -959,12 +973,17 @@ package body Vhdl.Parse_Psl is
if Prio > Prio_FL_Abort then
return Res;
end if;
- N := Create_Node_Loc (N_Abort);
- Set_Property (N, Res);
- Scan;
- Set_Boolean (N, Parse_Boolean (Prio_Lowest));
- -- Left associative.
- return N;
+ return Parse_Abort (N_Abort, Res);
+ when Tok_Sync_Abort =>
+ if Prio > Prio_FL_Abort then
+ return Res;
+ end if;
+ return Parse_Abort (N_Sync_Abort, Res);
+ when Tok_Async_Abort =>
+ if Prio > Prio_FL_Abort then
+ return Res;
+ end if;
+ return Parse_Abort (N_Async_Abort, Res);
when Tok_Exclam_Mark =>
N := Create_Node_Loc (N_Strong);
Set_Property (N, Res);