From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- gcc/ada/scans.adb | 187 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 gcc/ada/scans.adb (limited to 'gcc/ada/scans.adb') diff --git a/gcc/ada/scans.adb b/gcc/ada/scans.adb new file mode 100644 index 000000000..7f6b808a5 --- /dev/null +++ b/gcc/ada/scans.adb @@ -0,0 +1,187 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT COMPILER COMPONENTS -- +-- -- +-- S C A N S -- +-- -- +-- B o d y -- +-- -- +-- Copyright (C) 1992-2010, 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. -- +-- -- +-- As a special exception under Section 7 of GPL version 3, you are granted -- +-- additional permissions described in the GCC Runtime Library Exception, -- +-- version 3.1, as published by the Free Software Foundation. -- +-- -- +-- You should have received a copy of the GNU General Public License and -- +-- a copy of the GCC Runtime Library Exception along with this program; -- +-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- +-- . -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +with Snames; use Snames; + +package body Scans is + + ----------------------------- + -- Initialize_Ada_Keywords -- + ----------------------------- + + procedure Initialize_Ada_Keywords is + procedure Set_Reserved (N : Name_Id; T : Token_Type); + pragma Inline (Set_Reserved); + -- Set given name as a reserved word (T is the corresponding token) + + ------------------ + -- Set_Reserved -- + ------------------ + + procedure Set_Reserved (N : Name_Id; T : Token_Type) is + begin + -- Set up Token_Type values in Names table entries for reserved + -- words. We use the Pos value of the Token_Type value. Note that + -- Is_Keyword_Name relies on the fact that Token_Type'Val (0) is not + -- a reserved word! + + Set_Name_Table_Byte (N, Token_Type'Pos (T)); + end Set_Reserved; + + -- Start of processing for Initialize_Ada_Keywords + + begin + -- Establish reserved words + + Set_Reserved (Name_Abort, Tok_Abort); + Set_Reserved (Name_Abs, Tok_Abs); + Set_Reserved (Name_Abstract, Tok_Abstract); + Set_Reserved (Name_Accept, Tok_Accept); + Set_Reserved (Name_Access, Tok_Access); + Set_Reserved (Name_And, Tok_And); + Set_Reserved (Name_Aliased, Tok_Aliased); + Set_Reserved (Name_All, Tok_All); + Set_Reserved (Name_Array, Tok_Array); + Set_Reserved (Name_At, Tok_At); + Set_Reserved (Name_Begin, Tok_Begin); + Set_Reserved (Name_Body, Tok_Body); + Set_Reserved (Name_Case, Tok_Case); + Set_Reserved (Name_Constant, Tok_Constant); + Set_Reserved (Name_Declare, Tok_Declare); + Set_Reserved (Name_Delay, Tok_Delay); + Set_Reserved (Name_Delta, Tok_Delta); + Set_Reserved (Name_Digits, Tok_Digits); + Set_Reserved (Name_Do, Tok_Do); + Set_Reserved (Name_Else, Tok_Else); + Set_Reserved (Name_Elsif, Tok_Elsif); + Set_Reserved (Name_End, Tok_End); + Set_Reserved (Name_Entry, Tok_Entry); + Set_Reserved (Name_Exception, Tok_Exception); + Set_Reserved (Name_Exit, Tok_Exit); + Set_Reserved (Name_For, Tok_For); + Set_Reserved (Name_Function, Tok_Function); + Set_Reserved (Name_Generic, Tok_Generic); + Set_Reserved (Name_Goto, Tok_Goto); + Set_Reserved (Name_If, Tok_If); + Set_Reserved (Name_In, Tok_In); + Set_Reserved (Name_Is, Tok_Is); + Set_Reserved (Name_Limited, Tok_Limited); + Set_Reserved (Name_Loop, Tok_Loop); + Set_Reserved (Name_Mod, Tok_Mod); + Set_Reserved (Name_New, Tok_New); + Set_Reserved (Name_Not, Tok_Not); + Set_Reserved (Name_Null, Tok_Null); + Set_Reserved (Name_Of, Tok_Of); + Set_Reserved (Name_Or, Tok_Or); + Set_Reserved (Name_Others, Tok_Others); + Set_Reserved (Name_Out, Tok_Out); + Set_Reserved (Name_Package, Tok_Package); + Set_Reserved (Name_Pragma, Tok_Pragma); + Set_Reserved (Name_Private, Tok_Private); + Set_Reserved (Name_Procedure, Tok_Procedure); + Set_Reserved (Name_Protected, Tok_Protected); + Set_Reserved (Name_Raise, Tok_Raise); + Set_Reserved (Name_Range, Tok_Range); + Set_Reserved (Name_Record, Tok_Record); + Set_Reserved (Name_Rem, Tok_Rem); + Set_Reserved (Name_Renames, Tok_Renames); + Set_Reserved (Name_Requeue, Tok_Requeue); + Set_Reserved (Name_Return, Tok_Return); + Set_Reserved (Name_Reverse, Tok_Reverse); + Set_Reserved (Name_Select, Tok_Select); + Set_Reserved (Name_Separate, Tok_Separate); + + -- We choose to make Some into a non-reserved word, so it is handled + -- like a regular identifier in most contexts. Uncomment the following + -- line if a pedantic Ada2012 mode is required. + + -- Set_Reserved (Name_Some, Tok_Some); + + Set_Reserved (Name_Subtype, Tok_Subtype); + Set_Reserved (Name_Tagged, Tok_Tagged); + Set_Reserved (Name_Task, Tok_Task); + Set_Reserved (Name_Terminate, Tok_Terminate); + Set_Reserved (Name_Then, Tok_Then); + Set_Reserved (Name_Type, Tok_Type); + Set_Reserved (Name_Until, Tok_Until); + Set_Reserved (Name_Use, Tok_Use); + Set_Reserved (Name_When, Tok_When); + Set_Reserved (Name_While, Tok_While); + Set_Reserved (Name_With, Tok_With); + Set_Reserved (Name_Xor, Tok_Xor); + + -- Ada 2005 reserved words + + Set_Reserved (Name_Interface, Tok_Interface); + Set_Reserved (Name_Overriding, Tok_Overriding); + Set_Reserved (Name_Synchronized, Tok_Synchronized); + + end Initialize_Ada_Keywords; + + ------------------------ + -- Restore_Scan_State -- + ------------------------ + + procedure Restore_Scan_State (Saved_State : Saved_Scan_State) is + begin + Scan_Ptr := Saved_State.Save_Scan_Ptr; + Token := Saved_State.Save_Token; + Token_Ptr := Saved_State.Save_Token_Ptr; + Current_Line_Start := Saved_State.Save_Current_Line_Start; + Start_Column := Saved_State.Save_Start_Column; + Checksum := Saved_State.Save_Checksum; + First_Non_Blank_Location := Saved_State.Save_First_Non_Blank_Location; + Token_Node := Saved_State.Save_Token_Node; + Token_Name := Saved_State.Save_Token_Name; + Prev_Token := Saved_State.Save_Prev_Token; + Prev_Token_Ptr := Saved_State.Save_Prev_Token_Ptr; + end Restore_Scan_State; + + --------------------- + -- Save_Scan_State -- + --------------------- + + procedure Save_Scan_State (Saved_State : out Saved_Scan_State) is + begin + Saved_State.Save_Scan_Ptr := Scan_Ptr; + Saved_State.Save_Token := Token; + Saved_State.Save_Token_Ptr := Token_Ptr; + Saved_State.Save_Current_Line_Start := Current_Line_Start; + Saved_State.Save_Start_Column := Start_Column; + Saved_State.Save_Checksum := Checksum; + Saved_State.Save_First_Non_Blank_Location := First_Non_Blank_Location; + Saved_State.Save_Token_Node := Token_Node; + Saved_State.Save_Token_Name := Token_Name; + Saved_State.Save_Prev_Token := Prev_Token; + Saved_State.Save_Prev_Token_Ptr := Prev_Token_Ptr; + end Save_Scan_State; + +end Scans; -- cgit v1.2.3