PragmaHandler.java revision 608:7e06bf1dcb09
1/*
2 * Copyright (c) 1999, 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 */
35
36package com.sun.tools.corba.se.idl;
37
38// NOTES:
39// - Add openScope and closeScope.
40
41import java.io.IOException;
42
43public abstract class PragmaHandler
44{
45  public abstract boolean process (String pragma, String currentToken) throws IOException;
46
47  void init (Preprocessor p)
48  {
49    preprocessor = p;
50  } // init
51
52  // Utility methods.
53
54  /** Get the current token. */
55  protected String currentToken ()
56  {
57    return preprocessor.currentToken ();
58  } // currentToken
59
60  /** This method, given an entry name, returns the entry with that name.
61      It can take fully or partially qualified names and returns the
62      appropriate entry defined within the current scope.  If no entry
63      exists, null is returned. */
64  protected SymtabEntry getEntryForName (String string)
65  {
66    return preprocessor.getEntryForName (string);
67  } // getEntryForName
68
69  /** This method returns a string of all of the characters from the input
70      file from the current position up to, but not including, the end-of-line
71      character(s). */
72  protected String getStringToEOL () throws IOException
73  {
74    return preprocessor.getStringToEOL ();
75  } // getStringToEOL
76
77  /** This method returns a string of all of the characters from the input
78      file from the current position up to, but not including, the given
79      character.  It encapsulates parenthesis and quoted strings, meaning
80      it does not stop if the given character is found within parentheses
81      or quotes.  For instance, given the input of `start(inside)end',
82      getUntil ('n') will return "start(inside)e" */
83  protected String getUntil (char c) throws IOException
84  {
85    return preprocessor.getUntil (c);
86  } // getUntil
87
88  /** This method returns the next token String from the input file. */
89  protected String nextToken () throws IOException
90  {
91    return preprocessor.nextToken ();
92  } // nextToken
93
94  /** This method assumes that the current token marks the beginning
95      of a scoped name.  It then parses the subsequent identifier and
96      double colon tokens, builds the scoped name, and finds the symbol
97      table entry with that name. */
98  protected SymtabEntry scopedName () throws IOException
99  {
100    return preprocessor.scopedName ();
101  } // scopedName
102
103  /** Skip to the end of the line. */
104  protected void skipToEOL () throws IOException
105  {
106    preprocessor.skipToEOL ();
107  } // skipToEOL
108
109  /** This method skips the data in the input file until the specified
110      character is encountered, then it returns the next token. */
111  protected String skipUntil (char c) throws IOException
112  {
113    return preprocessor.skipUntil (c);
114  } // skipUntil
115
116  /** This method displays a Parser Exception complete with line number
117      and position information with the given message string. */
118  protected void parseException (String message)
119  {
120    preprocessor.parseException (message);
121  } // parseException
122
123  /** This method is called when the parser encounters a left curly brace.
124      An extender of PragmaHandler may find scope information useful.
125      For example, the prefix pragma takes effect as soon as it is
126      encountered and stays in effect until the current scope is closed.
127      If a similar pragma extension is desired, then the openScope and
128      closeScope methods are available for overriding.
129      @param entry the symbol table entry whose scope has just been opened.
130       Be aware that, since the scope has just been entered, this entry is
131       incomplete at this point.  */
132  protected void openScope (SymtabEntry entry)
133  {
134  } // openScope
135
136  /** This method is called when the parser encounters a right curly brace.
137      An extender of PragmaHandler may find scope information useful.
138      For example, the prefix pragma takes effect as soon as it is
139      encountered and stays in effect until the current scope is closed.
140      If a similar pragma extension is desired, then the openScope and
141      closeScope methods are available for overriding.
142      @param entry the symbol table entry whose scope has just been closed. */
143  protected void closeScope (SymtabEntry entry)
144  {
145  } // closeScope
146
147  private Preprocessor preprocessor = null;
148} // class PragmaHandler
149