From 5c5987d671ed390b0965c95f5744d86356a02ddf Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Fri, 24 May 2019 18:19:33 +0200 Subject: psl: can keep parenthesis during parse. --- src/psl/psl-nodes.adb | 6 +++- src/psl/psl-nodes.adb.in | 4 ++- src/psl/psl-nodes.ads | 18 +++++++++++- src/psl/psl-nodes_meta.adb | 72 +++++++++++++++++++++++++++++----------------- src/psl/psl-subsets.adb | 6 ++-- 5 files changed, 74 insertions(+), 32 deletions(-) (limited to 'src/psl') diff --git a/src/psl/psl-nodes.adb b/src/psl/psl-nodes.adb index d7de320a8..99b449d22 100644 --- a/src/psl/psl-nodes.adb +++ b/src/psl/psl-nodes.adb @@ -325,6 +325,7 @@ package body PSL.Nodes is case Get_Kind (N) is when N_And_Prop | N_Or_Prop + | N_Paren_Prop | N_Log_Imp_Prop | N_Always | N_Never @@ -372,7 +373,8 @@ package body PSL.Nodes is | N_Imp_Bool | N_False | N_True - | N_Boolean_Parameter => + | N_Boolean_Parameter + | N_Paren_Bool => return Type_Boolean; when N_Number | N_Const_Parameter => @@ -439,6 +441,7 @@ package body PSL.Nodes is | N_Before | N_Or_Prop | N_And_Prop + | N_Paren_Prop | N_Braced_SERE | N_Concat_SERE | N_Fusion_SERE @@ -451,6 +454,7 @@ package body PSL.Nodes is | N_Goto_Repeat_Seq | N_Plus_Repeat_Seq | N_Equal_Repeat_Seq + | N_Paren_Bool | N_Not_Bool | N_And_Bool | N_Or_Bool diff --git a/src/psl/psl-nodes.adb.in b/src/psl/psl-nodes.adb.in index 220ffee71..3c7888800 100644 --- a/src/psl/psl-nodes.adb.in +++ b/src/psl/psl-nodes.adb.in @@ -325,6 +325,7 @@ package body PSL.Nodes is case Get_Kind (N) is when N_And_Prop | N_Or_Prop + | N_Paren_Prop | N_Log_Imp_Prop | N_Always | N_Never @@ -372,7 +373,8 @@ package body PSL.Nodes is | N_Imp_Bool | N_False | N_True - | N_Boolean_Parameter => + | N_Boolean_Parameter + | N_Paren_Bool => return Type_Boolean; when N_Number | N_Const_Parameter => diff --git a/src/psl/psl-nodes.ads b/src/psl/psl-nodes.ads index ec3022c35..0b11d0641 100644 --- a/src/psl/psl-nodes.ads +++ b/src/psl/psl-nodes.ads @@ -67,6 +67,7 @@ package PSL.Nodes is N_Before, N_Or_Prop, N_And_Prop, + N_Paren_Prop, -- Sequences/SERE. N_Braced_SERE, @@ -85,6 +86,7 @@ package PSL.Nodes is N_Equal_Repeat_Seq, -- Boolean layer. + N_Paren_Bool, N_Not_Bool, N_And_Bool, N_Or_Bool, @@ -100,7 +102,7 @@ package PSL.Nodes is ); for Nkind'Size use 8; - subtype N_Booleans is Nkind range N_Not_Bool .. N_True; + subtype N_Booleans is Nkind range N_Paren_Bool .. N_True; subtype N_Sequences is Nkind range N_Braced_SERE .. N_Equal_Repeat_Seq; type PSL_Types is @@ -335,6 +337,10 @@ package PSL.Nodes is -- -- Get/Set_Right (Field2) + -- N_Paren_Prop (Short) + -- + -- Get/Set_Property (Field4) + -- N_Until (Short) -- N_Before (Short) -- @@ -378,6 +384,16 @@ package PSL.Nodes is -- -- Get/Set_Hash_Link (Field6) + -- N_Paren_Bool (Short) + -- + -- Get/Set_Presence (State1) + -- + -- Get/Set_Boolean (Field3) + -- + -- Get/Set_Hash (Field5) + -- + -- Get/Set_Hash_Link (Field6) + -- N_Not_Bool (Short) -- -- Get/Set_Presence (State1) diff --git a/src/psl/psl-nodes_meta.adb b/src/psl/psl-nodes_meta.adb index 04b42aceb..f33ac5122 100644 --- a/src/psl/psl-nodes_meta.adb +++ b/src/psl/psl-nodes_meta.adb @@ -203,6 +203,8 @@ package body PSL.Nodes_Meta is return "or_prop"; when N_And_Prop => return "and_prop"; + when N_Paren_Prop => + return "paren_prop"; when N_Braced_SERE => return "braced_sere"; when N_Concat_SERE => @@ -227,6 +229,8 @@ package body PSL.Nodes_Meta is return "plus_repeat_seq"; when N_Equal_Repeat_Seq => return "equal_repeat_seq"; + when N_Paren_Bool => + return "paren_bool"; when N_Not_Bool => return "not_bool"; when N_And_Bool => @@ -464,6 +468,8 @@ package body PSL.Nodes_Meta is -- N_And_Prop Field_Left, Field_Right, + -- N_Paren_Prop + Field_Property, -- N_Braced_SERE Field_SERE, -- N_Concat_SERE @@ -501,6 +507,11 @@ package body PSL.Nodes_Meta is Field_Sequence, Field_Low_Bound, Field_High_Bound, + -- N_Paren_Bool + Field_Hash, + Field_Presence, + Field_Boolean, + Field_Hash_Link, -- N_Not_Bool Field_Hash, Field_Presence, @@ -584,29 +595,31 @@ package body PSL.Nodes_Meta is N_Before => 99, N_Or_Prop => 101, N_And_Prop => 103, - N_Braced_SERE => 104, - N_Concat_SERE => 106, - N_Fusion_SERE => 108, - N_Within_SERE => 110, - N_Clocked_SERE => 112, - N_Match_And_Seq => 114, - N_And_Seq => 116, - N_Or_Seq => 118, - N_Star_Repeat_Seq => 121, - N_Goto_Repeat_Seq => 124, - N_Plus_Repeat_Seq => 125, - N_Equal_Repeat_Seq => 128, - N_Not_Bool => 132, - N_And_Bool => 137, - N_Or_Bool => 142, - N_Imp_Bool => 147, - N_HDL_Expr => 152, - N_False => 152, - N_True => 152, - N_EOS => 155, - N_Name => 157, - N_Name_Decl => 159, - N_Number => 160 + N_Paren_Prop => 104, + N_Braced_SERE => 105, + N_Concat_SERE => 107, + N_Fusion_SERE => 109, + N_Within_SERE => 111, + N_Clocked_SERE => 113, + N_Match_And_Seq => 115, + N_And_Seq => 117, + N_Or_Seq => 119, + N_Star_Repeat_Seq => 122, + N_Goto_Repeat_Seq => 125, + N_Plus_Repeat_Seq => 126, + N_Equal_Repeat_Seq => 129, + N_Paren_Bool => 133, + N_Not_Bool => 137, + N_And_Bool => 142, + N_Or_Bool => 147, + N_Imp_Bool => 152, + N_HDL_Expr => 157, + N_False => 157, + N_True => 157, + N_EOS => 160, + N_Name => 162, + N_Name_Decl => 164, + N_Number => 165 ); function Get_Fields (K : Nkind) return Fields_Array @@ -1007,7 +1020,8 @@ package body PSL.Nodes_Meta is | N_Next_Event | N_Next_Event_A | N_Next_Event_E - | N_Abort => + | N_Abort + | N_Paren_Prop => return True; when others => return False; @@ -1178,6 +1192,7 @@ package body PSL.Nodes_Meta is | N_Next_Event_E | N_Abort | N_Clocked_SERE + | N_Paren_Bool | N_Not_Bool => return True; when others => @@ -1198,7 +1213,8 @@ package body PSL.Nodes_Meta is function Has_Hash (K : Nkind) return Boolean is begin case K is - when N_Not_Bool + when N_Paren_Bool + | N_Not_Bool | N_And_Bool | N_Or_Bool | N_Imp_Bool @@ -1213,7 +1229,8 @@ package body PSL.Nodes_Meta is function Has_Hash_Link (K : Nkind) return Boolean is begin case K is - when N_Not_Bool + when N_Paren_Bool + | N_Not_Bool | N_And_Bool | N_Or_Bool | N_Imp_Bool @@ -1239,7 +1256,8 @@ package body PSL.Nodes_Meta is function Has_Presence (K : Nkind) return Boolean is begin case K is - when N_Not_Bool + when N_Paren_Bool + | N_Not_Bool | N_And_Bool | N_Or_Bool | N_Imp_Bool diff --git a/src/psl/psl-subsets.adb b/src/psl/psl-subsets.adb index 8aaf2b063..95f8d781c 100644 --- a/src/psl/psl-subsets.adb +++ b/src/psl/psl-subsets.adb @@ -163,7 +163,8 @@ package body PSL.Subsets is Check_Simple (Get_Right (N)); when N_Next | N_Next_A - | N_Next_E => + | N_Next_E + | N_Paren_Prop => Check_Simple (Get_Property (N)); when N_Next_Event | N_Next_Event_A @@ -171,7 +172,8 @@ package body PSL.Subsets is | N_Abort => Check_Simple (Get_Boolean (N)); Check_Simple (Get_Property (N)); - when N_Not_Bool => + when N_Not_Bool + | N_Paren_Bool => Check_Simple (Get_Boolean (N)); when N_Const_Parameter | N_Sequence_Parameter -- cgit v1.2.3