src/share/classes/com/sun/tools/corba/se/idl/ParseException.java

Thu, 31 Aug 2017 18:10:36 +0800

author
aoqi
date
Thu, 31 Aug 2017 18:10:36 +0800
changeset 748
6845b95cba6b
parent 158
91006f157c46
parent 0
7ef37b2cdcad
permissions
-rw-r--r--

merge

     1 /*
     2  * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     8  * particular file as subject to the "Classpath" exception as provided
     9  * by Oracle in the LICENSE file that accompanied this code.
    10  *
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14  * version 2 for more details (a copy is included in the LICENSE file that
    15  * accompanied this code).
    16  *
    17  * You should have received a copy of the GNU General Public License version
    18  * 2 along with this work; if not, write to the Free Software Foundation,
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20  *
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    22  * or visit www.oracle.com if you need additional information or have any
    23  * questions.
    24  */
    25 /*
    26  * COMPONENT_NAME: idl.parser
    27  *
    28  * ORIGINS: 27
    29  *
    30  * Licensed Materials - Property of IBM
    31  * 5639-D57 (C) COPYRIGHT International Business Machines Corp. 1997, 1999
    32  * RMI-IIOP v1.0
    33  *
    34  */
    36 package com.sun.tools.corba.se.idl;
    38 // NOTES:
    39 // -D56351<daz> Update Prefix pragma directive to CORBA 2.3 (see spec.).
    40 // -D57110<daz> Update ID pragma directive to CORBA 2.3 (see spec.).
    41 // -D46094<daz> Prohibit exceptions from appearing wihtin structs, unions, exceptions.
    42 // -D46094<daz> Prohibit attributes from appearing as operation parameter types,
    43 //  operation return types, attribute types.
    44 // -D59166<daz> Prohibit identifiers form colliding with IDL keywords.
    45 // -F60858.1<daz> Add keyword collision warning.
    46 // -F60942<daz> Prohibit operations from appearing as operation parameter types.
    47 // -D62023<daz> Add deprecated keyword warning; cast char to byte for JDK 1.2 compatability.
    49 import java.io.IOException;
    51 /**
    52  *
    53  **/
    54 class ParseException extends Exception
    55 {
    56   /**
    57    * Constructor: print the supplied message to Standard.err
    58    * and create a new ParseException
    59    * @return a new ParseException.
    60    **/
    61   ParseException (String message)
    62   {
    63     super (message);
    64     System.err.println (message);
    65     detected = true;
    66   } // ctor
    68   /**
    69    * Constructor: print the supplied message to Standard.err, if it
    70    * is not a warning, and create a new ParseException.
    71    * @return a new ParseException.
    72    **/
    73   ParseException (String message, boolean onlyAWarning)
    74   {
    75    super (message);
    76    System.err.println (message);
    77    if (!onlyAWarning)
    78      detected = true;
    79   }
    81   static ParseException abstractValueBox (Scanner scanner)
    82   {
    83     return arg0 ("abstractValueBox", scanner);
    84   }
    86   static ParseException alreadyDeclared (Scanner scanner, String type)
    87   {
    88     return arg1 ("alreadyDeclared", scanner, type);
    89   }
    91   static ParseException declNotInSameFile( Scanner scanner, String type,
    92     String firstFile )
    93   {
    94     return arg2 ("declNotInSameFile", scanner, type, firstFile) ;
    95   }
    97   static ParseException alreadyDefaulted (Scanner scanner)
    98   {
    99     return arg0 ("alreadydefaulted", scanner);
   100   }
   102   static ParseException alreadyDerived (Scanner scanner, String derived, String iface)
   103   {
   104     return arg2 ("alreadyDerived", scanner, derived, iface);
   105   }
   107   static ParseException alreadyRaised (Scanner scanner, String exception)
   108   {
   109     return arg1 ("alreadyRaised", scanner, exception);
   110   }
   112   // <d60942>
   113   static ParseException attributeNotType (Scanner scanner, String attr)
   114   {
   115     return arg1 ("attributeNotType", scanner, attr);
   116   }
   118   static ParseException badAbstract (Scanner scanner, String name)
   119   {
   120     return arg1 ("badAbstract", scanner, name);
   121   }
   123   static ParseException badCustom (Scanner scanner)
   124   {
   125     return arg0 ("badCustom", scanner);
   126   }
   128   // <d57110>
   129   static ParseException badRepIDAlreadyAssigned (Scanner scanner, String entry)
   130   {
   131     return arg1 ("badRepIDAlreadyAssigned", scanner, entry);
   132   }
   134   // <d57110>
   135   static ParseException badRepIDForm (Scanner scanner, String entry)
   136   {
   137     return arg1 ("badRepIDForm", scanner, entry);
   138   }
   140   // <d56351>
   141   static ParseException badRepIDPrefix (Scanner scanner, String entry, String expected, String got)
   142   {
   143     return arg3 ("badRepIDPrefix", scanner, entry, expected, got);
   144   }
   146   static ParseException badState (Scanner scanner, String entry)
   147   {
   148     return arg1 ("badState", scanner, entry);
   149   }
   151   static ParseException branchLabel (Scanner scanner, String label)
   152   {
   153     return arg1 ("branchLabel", scanner, label);
   154   }
   156   static ParseException branchName (Scanner scanner, String name)
   157   {
   158     return arg1 ("branchName", scanner, name);
   159   }
   161   static ParseException duplicateInit (Scanner scanner)
   162   {
   163     return arg0 ("duplicateInit", scanner);
   164   }
   166   static ParseException duplicateState (Scanner scanner, String name)
   167   {
   168     return arg1 ("duplicateState", scanner, name);
   169   }
   171   static ParseException elseNoIf (Scanner scanner)
   172   {
   173     return arg0 ("elseNoIf", scanner);
   174   }
   176   static ParseException endNoIf (Scanner scanner)
   177   {
   178     return arg0 ("endNoIf", scanner);
   179   }
   181   static ParseException evaluationError (Scanner scanner, String problem)
   182   {
   183     return arg1 ("evaluation", scanner, problem);
   184   }
   186   static ParseException forwardEntry (Scanner scanner, String name)
   187   {
   188     return arg1 ("forwardEntry", scanner, name);
   189   }
   191   // <f46082.40> Cannot forward value boxes.
   192   static ParseException forwardedValueBox (Scanner scanner, String name)
   193   {
   194     return arg1 ("forwardedValueBox", scanner, name);
   195   }
   197   static ParseException generic (Scanner scanner, String message)
   198   {
   199     return arg1 ("generic", scanner, message);
   200   }
   202   static ParseException illegalArray (Scanner scanner, String name)
   203   {
   204     return arg1 ("illegalArray", scanner, name);
   205   }
   207   static ParseException illegalException (Scanner scanner, String name)
   208   {
   209     return arg1 ("illegalException", scanner, name);
   210   }
   212   static ParseException invalidConst (Scanner scanner, String mustBe, String is)
   213   {
   214     return arg2 ("invalidConst1", scanner, mustBe, is);
   215   }
   217   static ParseException invalidConst (Scanner scanner, String type)
   218   {
   219     return arg1 ("invalidConst2", scanner, type);
   220   }
   222   // <d59166> Non-escaped identifiers that collide with keywords are illegal.
   223   static ParseException keywordCollision (Scanner scanner, String id)
   224   {
   225     return arg1 ("keywordCollision", scanner, id);
   226   }
   228   // <d62023> Warning for keywords that will be removed in a future version of IDL.
   229   static ParseException deprecatedKeywordWarning (Scanner scanner, String id)
   230   {
   231     return arg1Warning ("deprecatedKeywordWarning", scanner, id);
   232   }
   234   // <f60858.1> Warning for above error.
   235   static ParseException keywordCollisionWarning (Scanner scanner, String id)
   236   {
   237     return arg1Warning ("keywordCollisionWarning", scanner, id);
   238   }
   240   static ParseException methodClash (Scanner scanner, String interf, String method)
   241   {
   242     return arg2 ("methodClash", scanner, interf, method);
   243   }
   245   static ParseException moduleNotType (Scanner scanner, String module)
   246   {
   247     return arg1 ("moduleNotType", scanner, module);
   248   }
   250   // <d59067>
   251   static ParseException nestedValueBox (Scanner scanner)
   252   {
   253     return arg0 ("nestedValueBox", scanner);
   254   }
   256   static ParseException noDefault (Scanner scanner)
   257   {
   258     return arg0 ("noDefault", scanner);
   259   }
   261   static ParseException nonAbstractParent (Scanner scanner, String baseClass, String parentClass)
   262   {
   263     return arg2 ("nonAbstractParent", scanner, baseClass, parentClass);
   264   }
   266   static ParseException nonAbstractParent2 (Scanner scanner, String baseClass, String parentClass)
   267   {
   268     return arg2 ("nonAbstractParent2", scanner, baseClass, parentClass);
   269   }
   271   static ParseException nonAbstractParent3 (Scanner scanner, String baseClass, String parentClass)
   272   {
   273     return arg2 ("nonAbstractParent3", scanner, baseClass, parentClass);
   274   }
   276   static ParseException notANumber (Scanner scanner, String notNumber)
   277   {
   278     return arg1 ("notANumber", scanner, notNumber);
   279   }
   281   static ParseException nothing (String filename)
   282   {
   283     return new ParseException (Util.getMessage ("ParseException.nothing", filename));
   284   }
   286   static ParseException notPositiveInt (Scanner scanner, String notPosInt)
   287   {
   288     return arg1 ("notPosInt", scanner, notPosInt);
   289   }
   291   static ParseException oneway (Scanner scanner, String method)
   292   {
   293     return arg1 ("oneway", scanner, method);
   294   }
   296   // <d60942>
   297   static ParseException operationNotType (Scanner scanner, String op)
   298   {
   299     return arg1 ("operationNotType", scanner, op);
   300   }
   302   static ParseException outOfRange (Scanner scanner, String value, String type)
   303   {
   304     return arg2 ("outOfRange", scanner, value, type);
   305   }
   307   static ParseException recursive (Scanner scanner, String type, String name)
   308   {
   309     return arg2 ("recursive", scanner, type, name);
   310   }
   312   static ParseException selfInherit (Scanner scanner, String name)
   313   {
   314     return arg1 ("selfInherit", scanner, name);
   315   }
   317   static ParseException stringTooLong (Scanner scanner, String str, String max)
   318   {
   319     return arg2 ("stringTooLong", scanner, str, max);
   320   }
   322   static ParseException syntaxError (Scanner scanner, int expected, int got)
   323   {
   324     return arg2 ("syntax1", scanner, Token.toString (expected), Token.toString (got));
   325   }
   327   static ParseException syntaxError (Scanner scanner, String expected, String got)
   328   {
   329     return arg2 ("syntax1", scanner, expected, got);
   330   }
   332   static ParseException syntaxError (Scanner scanner, int[] expected, int got)
   333   {
   334     return syntaxError (scanner, expected, Token.toString (got));
   335   }
   337   static ParseException syntaxError (Scanner scanner, int[] expected, String got)
   338   {
   339     String tokenList = "";
   340     for (int i = 0; i < expected.length; ++i)
   341       tokenList += " `" + Token.toString (expected[i]) + "'";
   342     return arg2 ("syntax2", scanner, tokenList, got);
   343   }
   345   static ParseException unclosedComment (String filename)
   346   {
   347     return new ParseException (Util.getMessage ("ParseException.unclosed", filename));
   348   }
   350   static ParseException undeclaredType (Scanner scanner, String undeclaredType)
   351   {
   352     return arg1 ("undeclaredType", scanner, undeclaredType);
   353   }
   355   static ParseException warning (Scanner scanner, String message)
   356   {
   357     scannerInfo (scanner);
   358     String[] parameters = { filename, Integer.toString (lineNumber), message, line, pointer };
   359     return new ParseException (Util.getMessage ("ParseException.warning", parameters), true);
   360   }
   362   static ParseException wrongType (Scanner scanner, String name, String mustBe, String is)
   363   {
   364     scannerInfo (scanner);
   365     String[] parameters = {filename, Integer.toString (lineNumber), name, is, mustBe, line, pointer};
   366     return new ParseException (Util.getMessage ("ParseException.wrongType", parameters));
   367   }
   369   static ParseException wrongExprType (Scanner scanner, String mustBe, String is)
   370   {
   371     scannerInfo (scanner);
   372     String[] parameters = {filename, Integer.toString (lineNumber),
   373       is, mustBe, line, pointer};
   374     return new ParseException (Util.getMessage ("ParseException.constExprType",
   375       parameters));
   376   }
   378   static ParseException illegalForwardInheritance( Scanner scanner, String declName,
   379     String baseName )
   380   {
   381     scannerInfo( scanner ) ;
   382     String[] parameters = { filename, Integer.toString(lineNumber),
   383         declName, baseName, line, pointer } ;
   384     return new ParseException (Util.getMessage(
   385         "ParseException.forwardInheritance", parameters ) ) ;
   386   }
   388   static ParseException illegalIncompleteTypeReference( Scanner scanner,
   389     String declName )
   390   {
   391     scannerInfo( scanner ) ;
   392     String[] parameters = { filename, Integer.toString(lineNumber),
   393         declName, line, pointer } ;
   394     return new ParseException (Util.getMessage(
   395         "ParseException.illegalIncompleteTypeReference", parameters ) ) ;
   396   }
   398   private static void scannerInfo (Scanner scanner)
   399   {
   400     filename   = scanner.filename ();
   401     line       = scanner.lastTokenLine ();
   402     lineNumber = scanner.lastTokenLineNumber ();
   403     int pos    = scanner.lastTokenLinePosition ();
   404     pointer    = "^";
   405     if (pos > 1)
   406     {
   407       byte[] bytes = new byte[ pos - 1 ];
   408       for (int i = 0; i < pos - 1; ++i)
   409         bytes[i] = (byte)' ';  // <d62023>
   410       pointer = new String (bytes) + pointer;
   411     }
   412   }
   414   private static ParseException arg0 (String msgId, Scanner scanner)
   415   {
   416     scannerInfo (scanner);
   417     String[] parameters = {filename, Integer.toString (lineNumber), line, pointer};
   418     return new ParseException (Util.getMessage ("ParseException." + msgId, parameters));
   419   }
   421   private static ParseException arg1 (String msgId, Scanner scanner, String arg1)
   422   {
   423     scannerInfo (scanner);
   424     String[] parameters = {filename, Integer.toString (lineNumber), arg1, line, pointer};
   425     return new ParseException (Util.getMessage ("ParseException." + msgId, parameters));
   426   }
   428   // <f60858.1>
   429   private static ParseException arg1Warning (String msgId, Scanner scanner, String arg1)
   430   {
   431     scannerInfo (scanner);
   432     String[] parameters = {filename, Integer.toString (lineNumber), arg1, line, pointer};
   433     return new ParseException (Util.getMessage ("ParseException." + msgId, parameters), true);
   434   }
   436   private static ParseException arg2 (String msgId, Scanner scanner, String arg1, String arg2)
   437   {
   438     scannerInfo (scanner);
   439     String[] parameters = {filename, Integer.toString (lineNumber), arg1, arg2, line, pointer};
   440     return new ParseException (Util.getMessage ("ParseException." + msgId, parameters));
   441   }
   443   private static ParseException arg3 (String msgId, Scanner scanner, String arg1, String arg2, String arg3)
   444   {
   445     scannerInfo (scanner);
   446     String[] parameters = {filename, Integer.toString (lineNumber), arg1, arg2, arg3, line, pointer};
   447     return new ParseException (Util.getMessage ("ParseException." + msgId, parameters));
   448   }
   450   private static String filename  = "";
   451   private static String line      = "";
   452   private static int   lineNumber = 0;
   453   private static String pointer   = "^";
   455   static boolean detected = false;
   456 } // class ParseException

mercurial