aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/gcc/ada/par-ch7.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.4.3/gcc/ada/par-ch7.adb')
-rw-r--r--gcc-4.4.3/gcc/ada/par-ch7.adb279
1 files changed, 0 insertions, 279 deletions
diff --git a/gcc-4.4.3/gcc/ada/par-ch7.adb b/gcc-4.4.3/gcc/ada/par-ch7.adb
deleted file mode 100644
index 2fdca9ae7..000000000
--- a/gcc-4.4.3/gcc/ada/par-ch7.adb
+++ /dev/null
@@ -1,279 +0,0 @@
-------------------------------------------------------------------------------
--- --
--- GNAT COMPILER COMPONENTS --
--- --
--- P A R . C H 7 --
--- --
--- B o d y --
--- --
--- Copyright (C) 1992-2007, Free Software Foundation, Inc. --
--- --
--- GNAT is free software; you can redistribute it and/or modify it under --
--- terms of the GNU General Public License as published by the Free Soft- --
--- ware Foundation; either version 3, or (at your option) any later ver- --
--- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
--- for more details. You should have received a copy of the GNU General --
--- Public License distributed with GNAT; see file COPYING3. If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license. --
--- --
--- GNAT was originally developed by the GNAT team at New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc. --
--- --
-------------------------------------------------------------------------------
-
-pragma Style_Checks (All_Checks);
--- Turn off subprogram body ordering check. Subprograms are in order
--- by RM section rather than alphabetical
-
-separate (Par)
-package body Ch7 is
-
- ---------------------------------------------
- -- 7.1 Package (also 8.5.3, 10.1.3, 12.3) --
- ---------------------------------------------
-
- -- This routine scans out a package declaration, package body, or a
- -- renaming declaration or generic instantiation starting with PACKAGE
-
- -- PACKAGE_DECLARATION ::= PACKAGE_SPECIFICATION;
-
- -- PACKAGE_SPECIFICATION ::=
- -- package DEFINING_PROGRAM_UNIT_NAME is
- -- {BASIC_DECLARATIVE_ITEM}
- -- [private
- -- {BASIC_DECLARATIVE_ITEM}]
- -- end [[PARENT_UNIT_NAME .] IDENTIFIER]
-
- -- PACKAGE_BODY ::=
- -- package body DEFINING_PROGRAM_UNIT_NAME is
- -- DECLARATIVE_PART
- -- [begin
- -- HANDLED_SEQUENCE_OF_STATEMENTS]
- -- end [[PARENT_UNIT_NAME .] IDENTIFIER]
-
- -- PACKAGE_RENAMING_DECLARATION ::=
- -- package DEFINING_IDENTIFIER renames package_NAME;
-
- -- PACKAGE_BODY_STUB ::=
- -- package body DEFINING_IDENTIFIER is separate;
-
- -- The value in Pf_Flags indicates which of these possible declarations
- -- is acceptable to the caller:
-
- -- Pf_Flags.Spcn Set if specification OK
- -- Pf_Flags.Decl Set if declaration OK
- -- Pf_Flags.Gins Set if generic instantiation OK
- -- Pf_Flags.Pbod Set if proper body OK
- -- Pf_Flags.Rnam Set if renaming declaration OK
- -- Pf_Flags.Stub Set if body stub OK
-
- -- If an inappropriate form is encountered, it is scanned out but an
- -- error message indicating that it is appearing in an inappropriate
- -- context is issued. The only possible settings for Pf_Flags are those
- -- defined as constants in package Par.
-
- -- Note: in all contexts where a package specification is required, there
- -- is a terminating semicolon. This semicolon is scanned out in the case
- -- where Pf_Flags is set to Pf_Spcn, even though it is not strictly part
- -- of the package specification (it's just too much trouble, and really
- -- quite unnecessary, to deal with scanning out an END where the semicolon
- -- after the END is not considered to be part of the END.
-
- -- The caller has checked that the initial token is PACKAGE
-
- -- Error recovery: cannot raise Error_Resync
-
- function P_Package (Pf_Flags : Pf_Rec) return Node_Id is
- Package_Node : Node_Id;
- Specification_Node : Node_Id;
- Name_Node : Node_Id;
- Package_Sloc : Source_Ptr;
-
- begin
- Push_Scope_Stack;
- Scope.Table (Scope.Last).Etyp := E_Name;
- Scope.Table (Scope.Last).Ecol := Start_Column;
- Scope.Table (Scope.Last).Lreq := False;
-
- Package_Sloc := Token_Ptr;
- Scan; -- past PACKAGE
-
- if Token = Tok_Type then
- Error_Msg_SC ("TYPE not allowed here");
- Scan; -- past TYPE
- end if;
-
- -- Case of package body. Note that we demand a package body if that
- -- is the only possibility (even if the BODY keyword is not present)
-
- if Token = Tok_Body or else Pf_Flags = Pf_Pbod then
- if not Pf_Flags.Pbod then
- Error_Msg_SC ("package body cannot appear here!");
- end if;
-
- T_Body;
- Name_Node := P_Defining_Program_Unit_Name;
- Scope.Table (Scope.Last).Labl := Name_Node;
- TF_Is;
-
- if Separate_Present then
- if not Pf_Flags.Stub then
- Error_Msg_SC ("body stub cannot appear here!");
- end if;
-
- Scan; -- past SEPARATE
- TF_Semicolon;
- Pop_Scope_Stack;
-
- Package_Node := New_Node (N_Package_Body_Stub, Package_Sloc);
- Set_Defining_Identifier (Package_Node, Name_Node);
-
- else
- Package_Node := New_Node (N_Package_Body, Package_Sloc);
- Set_Defining_Unit_Name (Package_Node, Name_Node);
- Parse_Decls_Begin_End (Package_Node);
- end if;
-
- return Package_Node;
-
- -- Cases other than Package_Body
-
- else
- Name_Node := P_Defining_Program_Unit_Name;
- Scope.Table (Scope.Last).Labl := Name_Node;
-
- -- Case of renaming declaration
-
- Check_Misspelling_Of (Tok_Renames);
-
- if Token = Tok_Renames then
- if not Pf_Flags.Rnam then
- Error_Msg_SC ("renaming declaration cannot appear here!");
- end if;
-
- Scan; -- past RENAMES;
-
- Package_Node :=
- New_Node (N_Package_Renaming_Declaration, Package_Sloc);
- Set_Defining_Unit_Name (Package_Node, Name_Node);
- Set_Name (Package_Node, P_Qualified_Simple_Name);
-
- No_Constraint;
- TF_Semicolon;
- Pop_Scope_Stack;
- return Package_Node;
-
- else
- TF_Is;
-
- -- Case of generic instantiation
-
- if Token = Tok_New then
- if not Pf_Flags.Gins then
- Error_Msg_SC
- ("generic instantiation cannot appear here!");
- end if;
-
- Scan; -- past NEW
-
- Package_Node :=
- New_Node (N_Package_Instantiation, Package_Sloc);
- Set_Defining_Unit_Name (Package_Node, Name_Node);
- Set_Name (Package_Node, P_Qualified_Simple_Name);
- Set_Generic_Associations
- (Package_Node, P_Generic_Actual_Part_Opt);
- TF_Semicolon;
- Pop_Scope_Stack;
-
- -- Case of package declaration or package specification
-
- else
- Specification_Node :=
- New_Node (N_Package_Specification, Package_Sloc);
-
- Set_Defining_Unit_Name (Specification_Node, Name_Node);
- Set_Visible_Declarations
- (Specification_Node, P_Basic_Declarative_Items);
-
- if Token = Tok_Private then
- Error_Msg_Col := Scope.Table (Scope.Last).Ecol;
-
- if Style.RM_Column_Check then
- if Token_Is_At_Start_Of_Line
- and then Start_Column /= Error_Msg_Col
- then
- Error_Msg_SC
- ("(style) PRIVATE in wrong column, should be@");
- end if;
- end if;
-
- Scan; -- past PRIVATE
- Set_Private_Declarations
- (Specification_Node, P_Basic_Declarative_Items);
-
- -- Deal gracefully with multiple PRIVATE parts
-
- while Token = Tok_Private loop
- Error_Msg_SC
- ("only one private part allowed per package");
- Scan; -- past PRIVATE
- Append_List (P_Basic_Declarative_Items,
- Private_Declarations (Specification_Node));
- end loop;
- end if;
-
- if Pf_Flags = Pf_Spcn then
- Package_Node := Specification_Node;
- else
- Package_Node :=
- New_Node (N_Package_Declaration, Package_Sloc);
- Set_Specification (Package_Node, Specification_Node);
- end if;
-
- if Token = Tok_Begin then
- Error_Msg_SC ("begin block not allowed in package spec");
- Scan; -- past BEGIN
- Discard_Junk_List (P_Sequence_Of_Statements (SS_None));
- end if;
-
- End_Statements (Specification_Node);
- end if;
-
- return Package_Node;
- end if;
- end if;
- end P_Package;
-
- ------------------------------
- -- 7.1 Package Declaration --
- ------------------------------
-
- -- Parsed by P_Package (7.1)
-
- --------------------------------
- -- 7.1 Package Specification --
- --------------------------------
-
- -- Parsed by P_Package (7.1)
-
- -----------------------
- -- 7.1 Package Body --
- -----------------------
-
- -- Parsed by P_Package (7.1)
-
- -----------------------------------
- -- 7.3 Private Type Declaration --
- -----------------------------------
-
- -- Parsed by P_Type_Declaration (3.2.1)
-
- ----------------------------------------
- -- 7.3 Private Extension Declaration --
- ----------------------------------------
-
- -- Parsed by P_Type_Declaration (3.2.1)
-
-end Ch7;