aboutsummaryrefslogtreecommitdiffstats
path: root/parse.adb
diff options
context:
space:
mode:
Diffstat (limited to 'parse.adb')
-rw-r--r--parse.adb21
1 files changed, 15 insertions, 6 deletions
diff --git a/parse.adb b/parse.adb
index d2c931ee6..7a69de24a 100644
--- a/parse.adb
+++ b/parse.adb
@@ -12,7 +12,7 @@
-- for more details.
--
-- You should have received a copy of the GNU General Public License
--- along with GCC; see the file COPYING. If not, write to the Free
+-- along with GHDL; see the file COPYING. If not, write to the Free
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-- 02111-1307, USA.
with Iir_Chains; use Iir_Chains;
@@ -4342,16 +4342,16 @@ package body Parse is
-- precond: PROCESS
-- postcond: null
--
- -- [ §9.2 ]
+ -- [ LRM87 9.2 / LRM08 11.3 ]
-- process_statement ::=
-- [ PROCESS_label : ]
- -- [ POSTPONED ] PROCESS [ ( sensitivity_list ) ] [ IS ]
+ -- [ POSTPONED ] PROCESS [ ( process_sensitivity_list ) ] [ IS ]
-- process_declarative_part
-- BEGIN
-- process_statement_part
-- END [ POSTPONED ] PROCESS [ PROCESS_label ] ;
--
- -- FIXME: POSTPONED
+ -- process_sensitivity_list ::= ALL | sensitivity_list
function Parse_Process_Statement
(Label: Name_Id; Loc : Location_Type; Is_Postponed : Boolean)
return Iir
@@ -4365,9 +4365,18 @@ package body Parse is
if Current_Token = Tok_Left_Paren then
Res := Create_Iir (Iir_Kind_Sensitized_Process_Statement);
Scan.Scan;
- Sensitivity_List := Create_Iir_List;
+ if Current_Token = Tok_All then
+ if Vhdl_Std < Vhdl_08 then
+ Error_Msg_Parse
+ ("all sensitized process allowed only in vhdl 08");
+ end if;
+ Sensitivity_List := Iir_List_All;
+ Scan.Scan;
+ else
+ Sensitivity_List := Create_Iir_List;
+ Parse_Sensitivity_List (Sensitivity_List);
+ end if;
Set_Sensitivity_List (Res, Sensitivity_List);
- Parse_Sensitivity_List (Sensitivity_List);
Expect (Tok_Right_Paren);
Scan.Scan;
else