c45b6ae007
2003-12-08 Jerome Guitton <guitton@act-europe.fr> * 5ytiitho.adb, 5zthrini.adb, 5ztiitho.adb, i-vthrea.adb, i-vthrea.ads, s-tpae65.adb, s-tpae65.ads: Cleanup: Remove a bunch of obsolete files. * Makefile.in: (rts-ravenscar): Generate an empty libgnat.a. (rts-zfp): Ditto. 2003-12-08 Robert Dewar <dewar@gnat.com> * 7sintman.adb: Minor reformatting * bindgen.adb: Configurable_Run_Time mode no longer suppresses the standard linker options to get standard libraries linked. We now plan to provide dummy versions of these libraries to match the appropriate configurable run-time (e.g. if a library is not needed at all, provide a dummy empty library). * targparm.ads: Configurable_Run_Time mode no longer affects linker options (-L parameters and standard libraries). What we plan to do is to provide dummy libraries where the libraries are not required. * gnatbind.adb: Minor comment improvement 2003-12-08 Javier Miranda <miranda@gnat.com> * exp_aggr.adb (Build_Record_Aggr_Code): Do not remove the expanded aggregate in the parent. Otherwise constants with limited aggregates are not supported. Add new formal to pass the component type (Ctype). It is required to call the corresponding IP subprogram in case of default initialized components. (Gen_Assign): In case of default-initialized component, generate a call to the IP subprogram associated with the component. (Build_Record_Aggr_Code): Remove the aggregate from the parent in case of aggregate with default initialized components. (Has_Default_Init_Comps): Improve implementation to recursively check all the present expressions. * exp_ch3.ads, exp_ch3.adb (Build_Initialization_Call): Add new formal to indicate that the initialization call corresponds to a default-initialized component of an aggregate. In case of default initialized aggregate with tasks this parameter is used to generate a null string (this is just a workaround that must be improved later). In case of discriminants, this parameter is used to generate a selected component node that gives access to the discriminant value. * exp_ch9.ads, exp_ch9.adb (Build_Task_Allocate_Block_With_Stmts): New subprogram, based on Build_Task_Allocate_Block, but adapted to expand allocated aggregates with default-initialized components. * par-ch4.adb (P_Aggregate_Or_Paren_Expr): Improve error message if the box notation is used in positional aggregates. 2003-12-08 Samuel Tardieu <tardieu@act-europe.fr> * lib.ads: Fix typo in comment 2003-12-08 Vincent Celier <celier@gnat.com> * prj.adb (Project_Empty): New component Unkept_Comments (Scan): Remove procedure; moved to Prj.Err. * prj.ads (Project_Data): New Boolean component Unkept_Comments (Scan): Remove procedure; moved to Prj.Err. * prj-dect.adb: Manage comments for the different declarations. * prj-part.adb (With_Record): New component Node (Parse): New Boolean parameter Store_Comments, defaulted to False. Set the scanner to return ends of line and comments as tokens, if Store_Comments is True. (Pre_Parse_Context_Clause): Create the N_With_Clause nodes so that comments are associated with these nodes. Store the node IDs in the With_Records. (Post_Parse_Context_Clause): Use the N_With_Clause nodes stored in the With_Records. (Parse_Single_Project): Call Pre_Parse_Context_Clause before creating the N_Project node. Call Tree.Save and Tree.Reset before scanning the current project. Call Tree.Restore afterwards. Set the various nodes for comment storage (Next_End, End_Of_Line, Previous_Line, Previous_End). * prj-part.ads (Parse): New Boolean parameter Store_Comments, defaulted to False. * prj-pp.adb (Write_String): New Boolean parameter Truncated, defaulted to False. When Truncated is True, truncate the string, never go to the next line. (Write_End_Of_Line_Comment): New procedure (Print): Process comments for nodes N_With_Clause, N_Package_Declaration, N_String_Type_Declaration, N_Attribute_Declaration, N_Typed_Variable_Declaration, N_Variable_Declaration, N_Case_Construction, N_Case_Item. Process nodes N_Comment. * prj-tree.ads, prj-tree.adb (Default_Project_Node): If it is a node without comments and there are some comments, set the flag Unkept_Comments to True. (Scan): If there are comments, set the flag Unkept_Comments to True and clear the comments. (Project_Node_Kind): Add enum values N_Comment_Zones, N_Comment (Next_End_Nodes: New table (Comment_Zones_Of): New function (Scan): New procedure; moved from Prj. Accumulate comments in the Comments table and set end of line comments, comments after, after end and before end. (Add_Comments): New procedure (Save, Restore, Seset_State): New procedures (There_Are_Unkept_Comments): New function (Set_Previous_Line_Node, Set_Previous_End_Node): New procedures (Set_End_Of_Line, Set_Next_End_Node, Remove_Next_End_Node): New procedures. (First_Comment_After, First_Comment_After_End): New functions (First_Comment_Before, First_Comment_Before_End): New functions (Next_Comment): New function (End_Of_Line_Comment, Follows_Empty_Line, Is_Followed_By_Empty_Line): New functions (Set_First_Comment_After, Set_First_Comment_After_End): New procedures (Set_First_Comment_Before, Set_First_Comment_Before_End): New procedures (Set_Next_Comment): New procedure (Default_Project_Node): Associate comment before if the node can store comments. * scans.ads (Token_Type): New enumeration value Tok_Comment (Comment_Id): New global variable * scng.ads, scng.adb (Comment_Is_Token): New Boolean global variable, defaulted to False. (Scan): Store position of start of comment. If comments are tokens, set Comment_Id and set Token to Tok_Comment when scanning a comment. (Set_Comment_As_Token): New procedure * sinput-p.adb: Update Copyright notice (Source_File_Is_Subunit): Call Prj.Err.Scanner.Scan instead of Prj.Scan that no longer exists. 2003-12-08 Javier Miranda <miranda@gnat.com> * sem_aggr.adb: Add dependence on Exp_Tss package Correct typo in comment (Resolve_Aggregate): In case of array aggregates set the estimated type of the aggregate before calling resolve. This is needed to know the name of the corresponding IP in case of limited array aggregates. (Resolve_Array_Aggregate): Delay the resolution to the expansion phase in case of default initialized array components. * sem_ch12.adb (Analyze_Formal_Object_Declaration): Allow limited types. Required to give support to limited aggregates in generic formals. 2003-12-08 Ed Schonberg <schonberg@gnat.com> * sem_ch3.adb (Check_Initialization): For legality purposes, an inlined body functions like an instantiation. (Decimal_Fixed_Point_Declaration): Do not set kind of first subtype until bounds are analyzed, to diagnose premature use of type. * sem_util.adb (Wrong_Type): Improve error message when the type of the expression is used prematurely. 2003-12-08 GNAT Script <nobody@gnat.com> * Make-lang.in: Makefile automatically updated From-SVN: r74414
107 lines
5.3 KiB
Ada
107 lines
5.3 KiB
Ada
------------------------------------------------------------------------------
|
|
-- --
|
|
-- GNAT COMPILER COMPONENTS --
|
|
-- --
|
|
-- S C N G --
|
|
-- --
|
|
-- S p e c --
|
|
-- --
|
|
-- Copyright (C) 1992-2003 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 2, 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 COPYING. If not, write --
|
|
-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
|
|
-- MA 02111-1307, USA. --
|
|
-- --
|
|
-- GNAT was originally developed by the GNAT team at New York University. --
|
|
-- Extensive contributions were provided by Ada Core Technologies Inc. --
|
|
-- --
|
|
------------------------------------------------------------------------------
|
|
|
|
-- This package contains a generic lexical analyzer. This is used
|
|
-- for scanning Ada source files or text files with an Ada-like syntax,
|
|
-- such as project files. It is instantiated in Scn and Prj.Err.
|
|
|
|
with Casing; use Casing;
|
|
with Styleg;
|
|
with Types; use Types;
|
|
|
|
generic
|
|
with procedure Post_Scan;
|
|
-- Procedure called by Scan for the following tokens:
|
|
-- Tok_Char_Literal, Tok_Identifier, Tok_Real_Literal, Tok_Real_Literal,
|
|
-- Tok_Integer_Literal, Tok_String_Literal, Tok_Operator_Symbol.
|
|
|
|
with procedure Error_Msg (Msg : String; Flag_Location : Source_Ptr);
|
|
-- Output a message at specified location
|
|
|
|
with procedure Error_Msg_S (Msg : String);
|
|
-- Output a message at current scan pointer location
|
|
|
|
with procedure Error_Msg_SC (Msg : String);
|
|
-- Output a message at the start of the current token
|
|
|
|
with procedure Error_Msg_SP (Msg : String);
|
|
-- Output a message at the start of the previous token
|
|
|
|
with package Style is new Styleg
|
|
(Error_Msg, Error_Msg_S, Error_Msg_SC, Error_Msg_SP);
|
|
-- Instantiation of Styleg with the same error reporting routines
|
|
|
|
package Scng is
|
|
|
|
procedure Initialize_Scanner
|
|
(Unit : Unit_Number_Type;
|
|
Index : Source_File_Index);
|
|
-- Initialize lexical scanner for scanning a new file. The caller has
|
|
-- completed the construction of the Units.Table entry for the specified
|
|
-- Unit and Index references the corresponding source file. A special
|
|
-- case is when Unit = No_Unit_Number, and Index corresponds to the
|
|
-- source index for reading the configuration pragma file.
|
|
-- Initialize_Scanner does not call Scan.
|
|
|
|
procedure Scan;
|
|
-- Scan scans out the next token, and advances the scan state accordingly
|
|
-- (see package Scan_State for details). If the scan encounters an illegal
|
|
-- token, then an error message is issued pointing to the bad character,
|
|
-- and Scan returns a reasonable substitute token of some kind.
|
|
-- For tokens Char_Literal, Identifier, Real_Literal, Integer_Literal,
|
|
-- String_Literal and Operator_Symbol, Post_Scan is called after scanning.
|
|
|
|
function Determine_Token_Casing return Casing_Type;
|
|
pragma Inline (Determine_Token_Casing);
|
|
-- Determines the casing style of the current token, which is
|
|
-- either a keyword or an identifier. See also package Casing.
|
|
|
|
procedure Set_Special_Character (C : Character);
|
|
-- Indicate that one of the following character '#', '$', '?', '@', '`',
|
|
-- '\', '^', '_' or '~', when found is a Special token.
|
|
|
|
procedure Reset_Special_Characters;
|
|
-- Indicate that there is no characters that are Special tokens., which
|
|
-- is the default.
|
|
|
|
procedure Set_End_Of_Line_As_Token (Value : Boolean);
|
|
-- Indicate if End_Of_Line is a token or not.
|
|
-- By default, End_Of_Line is not a token.
|
|
|
|
procedure Set_Comment_As_Token (Value : Boolean);
|
|
-- Indicate if a comment is a token or not.
|
|
-- By default, a comment is not a token.
|
|
|
|
function Set_Start_Column return Column_Number;
|
|
-- This routine is called with Scan_Ptr pointing to the first character
|
|
-- of a line. On exit, Scan_Ptr is advanced to the first non-blank
|
|
-- character of this line (or to the terminating format effector if the
|
|
-- line contains no non-blank characters), and the returned result is the
|
|
-- column number of this non-blank character (zero origin), which is the
|
|
-- value to be stored in the Start_Column scan variable.
|
|
|
|
end Scng;
|