xref: /aosp_15_r20/external/jsilver/src/com/google/streamhtmlparser/Parser.java (revision 650b9f7487be23191c9a5c1efcd9aa92af8ddcb8)
1*650b9f74SAndroid Build Coastguard Worker /*
2*650b9f74SAndroid Build Coastguard Worker  * Copyright (C) 2010 Google Inc.
3*650b9f74SAndroid Build Coastguard Worker  *
4*650b9f74SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*650b9f74SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*650b9f74SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*650b9f74SAndroid Build Coastguard Worker  *
8*650b9f74SAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
9*650b9f74SAndroid Build Coastguard Worker  *
10*650b9f74SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*650b9f74SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*650b9f74SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*650b9f74SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*650b9f74SAndroid Build Coastguard Worker  * limitations under the License.
15*650b9f74SAndroid Build Coastguard Worker  */
16*650b9f74SAndroid Build Coastguard Worker 
17*650b9f74SAndroid Build Coastguard Worker package com.google.streamhtmlparser;
18*650b9f74SAndroid Build Coastguard Worker 
19*650b9f74SAndroid Build Coastguard Worker /**
20*650b9f74SAndroid Build Coastguard Worker  * Defines essential functionality that every parser we implement
21*650b9f74SAndroid Build Coastguard Worker  * will support. This is then extended for HTML and Javascript parsing.
22*650b9f74SAndroid Build Coastguard Worker  *
23*650b9f74SAndroid Build Coastguard Worker  * <p>The typical caller is a Template System and will usually ask
24*650b9f74SAndroid Build Coastguard Worker  * us to parse either a character at a time or a fragment of a template
25*650b9f74SAndroid Build Coastguard Worker  * at a time, stopping only when it needs to determine the state of the
26*650b9f74SAndroid Build Coastguard Worker  * parser for escaping purposes.
27*650b9f74SAndroid Build Coastguard Worker  *
28*650b9f74SAndroid Build Coastguard Worker  * <p>We will later add methods to save and restore the full state
29*650b9f74SAndroid Build Coastguard Worker  * of the parser to better support conditional processing.
30*650b9f74SAndroid Build Coastguard Worker  */
31*650b9f74SAndroid Build Coastguard Worker public interface Parser {
32*650b9f74SAndroid Build Coastguard Worker 
33*650b9f74SAndroid Build Coastguard Worker   // Consider using a Constants class instead
34*650b9f74SAndroid Build Coastguard Worker   public final static ExternalState STATE_ERROR =
35*650b9f74SAndroid Build Coastguard Worker       new ExternalState("STATE_ERROR");
36*650b9f74SAndroid Build Coastguard Worker 
37*650b9f74SAndroid Build Coastguard Worker   /**
38*650b9f74SAndroid Build Coastguard Worker    * Tell the parser to process the provided {@code char}. Throws exception
39*650b9f74SAndroid Build Coastguard Worker    * on an unrecoverable parsing error.
40*650b9f74SAndroid Build Coastguard Worker    *
41*650b9f74SAndroid Build Coastguard Worker    * @param input the character read
42*650b9f74SAndroid Build Coastguard Worker    * @throws ParseException if an unrecoverable error occurred during parsing
43*650b9f74SAndroid Build Coastguard Worker    */
parse(char input)44*650b9f74SAndroid Build Coastguard Worker   void parse(char input) throws ParseException;
45*650b9f74SAndroid Build Coastguard Worker 
46*650b9f74SAndroid Build Coastguard Worker   /**
47*650b9f74SAndroid Build Coastguard Worker    * Tell the parser to process the provided {@code String}. Throws exception
48*650b9f74SAndroid Build Coastguard Worker    * on an unrecoverable parsing error.
49*650b9f74SAndroid Build Coastguard Worker    *
50*650b9f74SAndroid Build Coastguard Worker    * @param input the {@code String} to parse
51*650b9f74SAndroid Build Coastguard Worker    * @throws ParseException if an unrecoverable error occurred during parsing
52*650b9f74SAndroid Build Coastguard Worker    */
parse(String input)53*650b9f74SAndroid Build Coastguard Worker   void parse(String input) throws ParseException;
54*650b9f74SAndroid Build Coastguard Worker 
55*650b9f74SAndroid Build Coastguard Worker   /**
56*650b9f74SAndroid Build Coastguard Worker    * Reset the parser back to its initial default state.
57*650b9f74SAndroid Build Coastguard Worker    */
reset()58*650b9f74SAndroid Build Coastguard Worker   void reset();
59*650b9f74SAndroid Build Coastguard Worker 
60*650b9f74SAndroid Build Coastguard Worker   /**
61*650b9f74SAndroid Build Coastguard Worker    * Returns the current state of the parser. May be {@link #STATE_ERROR}
62*650b9f74SAndroid Build Coastguard Worker    * if the parser encountered an error. Such an error may be recoverable
63*650b9f74SAndroid Build Coastguard Worker    * and the caller may want to continue parsing until {@link #parse(String)}
64*650b9f74SAndroid Build Coastguard Worker    * returns {@code false}.
65*650b9f74SAndroid Build Coastguard Worker    *
66*650b9f74SAndroid Build Coastguard Worker    * @return current state of the parser
67*650b9f74SAndroid Build Coastguard Worker    */
getState()68*650b9f74SAndroid Build Coastguard Worker   ExternalState getState();
69*650b9f74SAndroid Build Coastguard Worker 
70*650b9f74SAndroid Build Coastguard Worker   /**
71*650b9f74SAndroid Build Coastguard Worker    * Sets the current line number which is returned during error messages.
72*650b9f74SAndroid Build Coastguard Worker    * @param lineNumber the line number to set in the parser
73*650b9f74SAndroid Build Coastguard Worker    */
setLineNumber(int lineNumber)74*650b9f74SAndroid Build Coastguard Worker   void setLineNumber(int lineNumber);
75*650b9f74SAndroid Build Coastguard Worker 
76*650b9f74SAndroid Build Coastguard Worker   /**
77*650b9f74SAndroid Build Coastguard Worker    * Returns the current line number.
78*650b9f74SAndroid Build Coastguard Worker    */
getLineNumber()79*650b9f74SAndroid Build Coastguard Worker   int getLineNumber();
80*650b9f74SAndroid Build Coastguard Worker 
81*650b9f74SAndroid Build Coastguard Worker   /**
82*650b9f74SAndroid Build Coastguard Worker    * Sets the current column number which is returned during error messages.
83*650b9f74SAndroid Build Coastguard Worker    * @param columnNumber the column number to set in the parser
84*650b9f74SAndroid Build Coastguard Worker    */
setColumnNumber(int columnNumber)85*650b9f74SAndroid Build Coastguard Worker   void setColumnNumber(int columnNumber);
86*650b9f74SAndroid Build Coastguard Worker 
87*650b9f74SAndroid Build Coastguard Worker   /**
88*650b9f74SAndroid Build Coastguard Worker    * Returns the current column number.
89*650b9f74SAndroid Build Coastguard Worker    */
getColumnNumber()90*650b9f74SAndroid Build Coastguard Worker   int getColumnNumber();
91*650b9f74SAndroid Build Coastguard Worker }
92