comp.lang.ada
 help / color / mirror / Atom feed
From: James Alan Farrell <jfarrell@nospam.com>
Subject: Question on use of ! instead of |
Date: Wed, 22 Jun 2005 09:35:10 -0400
Date: 2005-06-22T09:35:10-04:00	[thread overview]
Message-ID: <42b96967$1_1@newsfeed.slurp.net> (raw)

[-- Attachment #1: Type: text/plain, Size: 3257 bytes --]

Hi all,
I'm working on a program to analyze Ada code using ASIS.  We use ACATS 
to test our software, and this has turned up some behavior I'm having 
troubles explaining.

ACATS test a2a031a.adb (below) has a line in it:

      VAR := (A!B => E2, C ! D => 0);    -- AGGREGATE.

According to ASIS, "A!B" is an identifier.  If I put spaces around the ! 
then A and B are identifiers and things work the way I expect, and if I 
replace the ! with a | again things work the way I expect.

Could this be a bug in the compiler or in ASIS?

I couldn't find ! in the ARM.  It's supposed to be a direct replacement 
for |, correct?  (ie, they should work the same semantically and 
syntactically?)

I am using gnat 3.15p and the appropriate matching version of ASIS.

Thanks,
James Alan Farrell
Grammatech, inc.


-- A2A031A.ADA

--                             Grant of Unlimited Rights
--
--     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
--     F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
--     unlimited rights in the software and documentation contained herein.
--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making
--     this public release, the Government intends to confer upon all
--     recipients unlimited rights  equal to those held by the Government.
--     These rights include rights to use, duplicate, release or 
disclose the
--     released technical data and computer software in whole or in 
part, in
--     any manner and for any purpose whatsoever, and to have or permit 
others
--     to do so.
--
--                                    DISCLAIMER
--
--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE 
AVAILABLE
--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
--     PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT AN EXCLAMATION MARK CAN REPLACE A VERTICAL BAR WHEN THE
-- VERTICAL BAR IS USED AS A SEPARATOR.

-- CONTEXTS ARE:
--   AS A CHOICE IN A VARIANT PART
--   IN A DISCRIMINANT CONSTRAINT
--   IN A CASE STATEMENT CHOICE
--   IN AN AGGREGATE
--   IN AN EXCEPTION HANDLER.

-- JBG 5/25/85

WITH REPORT; USE REPORT;
PROCEDURE A2A031A IS

      TYPE ENUM IS (E1, E2, E3);
      TYPE REC (A, B : ENUM) IS
           RECORD
                C : INTEGER;
                CASE A IS
                     WHEN E1 ! E2 =>     -- CHOICE OF VARIANT.
                          D : INTEGER;
                     WHEN E3 =>
                          E : FLOAT;
                END CASE;
           END RECORD;

      EX1, EX2, EX3 : EXCEPTION;

      VAR  : REC (A!B => E2);            -- DISCRIMINANT CONSTRAINT.

      EVAR : ENUM := E2;

BEGIN

      TEST ("A2A031A", "CHECK USE OF ! AS SEPARATOR IN PLACE OF |");

      CASE EVAR IS
           WHEN E3 => NULL;
           WHEN E2!E1 => NULL;           -- CASE STATEMENT CHOICE.
      END CASE;

      VAR := (A!B => E2, C ! D => 0);    -- AGGREGATE.

      RESULT;
EXCEPTION
      WHEN EX1!EX2 ! EX3 => NULL;        -- EXCEPTION HANDLER.
END A2A031A;

[-- Attachment #2: jfarrell.vcf --]
[-- Type: text/x-vcard, Size: 88 bytes --]

begin:vcard
fn:James Alan Farrell
n:Farrell;James
org:GrammaTech
version:2.1
end:vcard


             reply	other threads:[~2005-06-22 13:35 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-22 13:35 James Alan Farrell [this message]
2005-06-22 22:35 ` Question on use of ! instead of | Manuel G. R.
2005-06-23 13:00   ` James Alan Farrell
2005-06-23  1:27 ` Steve
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox