<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xml.xpath2.processor.internal</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xml.xpath2.processor.internal</strong></font><br>
               Class XPathFlex</h2><br><hr><pre>public class <strong>XPathFlex</strong>
extends java.lang.Object</pre>This class is a scanner generated by 
 <a href="http://www.jflex.de/">JFlex</a> 1.4.3
 on 12/14/09 2:02 AM from the specification file
 <tt>/Users/jesper/Documents/workspace-3.5M5/org.eclipse.wst.xml.xpath2.processor/grammars/xpath.lex</tt><hr><table width="100%" border="1"><tr cols="2" bgcolor="#CCCCFF"><td colspan="2" width="100%"><h2>Field Summary</h2></td></tr><tr valign="top"><td width="20%" align="right"><code>public static  int</code></td><td width="80%" align="left"><code><a href="#field_COMMENT">COMMENT</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public static  int</code></td><td width="80%" align="left"><code><a href="#field_YYEOF">YYEOF</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               This character denotes the end of file</td></tr><tr valign="top"><td width="20%" align="right"><code>public static  int</code></td><td width="80%" align="left"><code><a href="#field_YYINITIAL">YYINITIAL</a></code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               lexical states</td></tr></table><br><table width="100%" border="1"><tr bgcolor="#CCCCFF"><td width="100%"><h2>Constructor Summary</h2></td></tr><tr><td><code><strong><a href="#con_XPathFlex">XPathFlex</a></strong>(java.io.Reader in)</code></td></tr><tr><td><code><strong><a href="#con_XPathFlex">XPathFlex</a></strong>(java.io.InputStream in)</code></td></tr></table><br><table width="100%" border="1"><tr cols="2" bgcolor="#CCCCFF"><td colspan="2" width="100%"><h2>Method Summary</h2></td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_colno">colno</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_lineno">lineno</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public java_cup.runtime.Symbol</code></td><td width="" align="left"><code><a href="#method_next_token">next_token</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Resumes scanning until the next regular expression is matched,
 the end of input is encountered or an I/O-Error occurs.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_yybegin">yybegin</a>(int newState)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Enters a new lexical state</td></tr><tr valign="top"><td width="20%" align="right"><code>public char</code></td><td width="" align="left"><code><a href="#method_yycharat">yycharat</a>(int pos)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the character at position <tt>pos</tt> from the 
 matched text. 
 
 It is equivalent to yytext().charAt(pos), but faster</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_yyclose">yyclose</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Closes the input stream.</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_yylength">yylength</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the length of the matched text region.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_yypushback">yypushback</a>(int number)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Pushes the specified amount of characters back into the input stream.

 They will be read again by then next call of the scanning method</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_yyreset">yyreset</a>(java.io.Reader reader)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Resets the scanner to read from a new input stream.
 Does not close the old reader.

 All internal variables are reset, the old input stream 
 <b>cannot</b> be reused (internal buffer is discarded and lost).
 Lexical state is set to <tt>ZZ_INITIAL</tt>.</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_yystate">yystate</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the current lexical state.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code><a href="#method_yytext">yytext</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the text matched by the current regular expression.</td></tr></table><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Field Detail
               </h2></td></tr></table><h2><a name="field_COMMENT">COMMENT</a></h2><p><code>public static  int <strong>COMMENT</strong></code></p><hr><h2><a name="field_YYEOF">YYEOF</a></h2><p><code>public static  int <strong>YYEOF</strong></code></p><table><tr><td>This character denotes the end of file</td></tr></table><hr><h2><a name="field_YYINITIAL">YYINITIAL</a></h2><p><code>public static  int <strong>YYINITIAL</strong></code></p><table><tr><td>lexical states</td></tr></table><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Constructor Detail
               </h2></td></tr></table><h2><a name="con_XPathFlex">XPathFlex</a></h2><p><code>public <strong>XPathFlex</strong>(java.io.Reader in)</code></p><p>Creates a new scanner
 There is also a java.io.InputStream version of this constructor.</p><hr><h2><a name="con_XPathFlex">XPathFlex</a></h2><p><code>package-private <strong>XPathFlex</strong>(java.io.InputStream in)</code></p><p>Creates a new scanner.
 There is also java.io.Reader version of this constructor.</p><hr><table cols="2" width="100%" border="1"><tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left"><td><h2>
                  Methods Detail
               </h2></td></tr></table><h2><a name="method_colno">colno</a></h2><p><code>public int <strong>colno</strong>()</code></p><p></p><h3>Returns</h3><p><code>int</code></p><hr><h2><a name="method_lineno">lineno</a></h2><p><code>public int <strong>lineno</strong>()</code></p><p></p><h3>Returns</h3><p><code>int</code></p><hr><h2><a name="method_next_token">next_token</a></h2><p><code>public java_cup.runtime.Symbol <strong>next_token</strong>()</code></p><p>Resumes scanning until the next regular expression is matched,
 the end of input is encountered or an I/O-Error occurs.</p><h3>Returns</h3><p><code>java_cup.runtime.Symbol</code> - the next token</p><h3>Throws:</h3><p><code>java.io.IOException</code></p><hr><h2><a name="method_yybegin">yybegin</a></h2><p><code>public void <strong>yybegin</strong>(int newState)</code></p><p>Enters a new lexical state</p><h3>Parameters</h3><p><code>newState</code> - the new lexical state</p><hr><h2><a name="method_yycharat">yycharat</a></h2><p><code>public char <strong>yycharat</strong>(int pos)</code></p><p>Returns the character at position <tt>pos</tt> from the 
 matched text. 
 
 It is equivalent to yytext().charAt(pos), but faster</p><h3>Parameters</h3><p><code>pos</code> - the position of the character to fetch.              A value from 0 to yylength()-1.</p><h3>Returns</h3><p><code>char</code> - the character at position pos</p><hr><h2><a name="method_yyclose">yyclose</a></h2><p><code>public void <strong>yyclose</strong>()</code></p><p>Closes the input stream.</p><h3>Throws:</h3><p><code>java.io.IOException</code></p><hr><h2><a name="method_yylength">yylength</a></h2><p><code>public int <strong>yylength</strong>()</code></p><p>Returns the length of the matched text region.</p><h3>Returns</h3><p><code>int</code></p><hr><h2><a name="method_yypushback">yypushback</a></h2><p><code>public void <strong>yypushback</strong>(int number)</code></p><p>Pushes the specified amount of characters back into the input stream.

 They will be read again by then next call of the scanning method</p><h3>Parameters</h3><p><code>number</code> - the number of characters to be read again.                 This number must not be greater than yylength()!</p><hr><h2><a name="method_yyreset">yyreset</a></h2><p><code>public void <strong>yyreset</strong>(java.io.Reader reader)</code></p><p>Resets the scanner to read from a new input stream.
 Does not close the old reader.

 All internal variables are reset, the old input stream 
 <b>cannot</b> be reused (internal buffer is discarded and lost).
 Lexical state is set to <tt>ZZ_INITIAL</tt>.</p><h3>Parameters</h3><p><code>reader</code> - the new input stream</p><hr><h2><a name="method_yystate">yystate</a></h2><p><code>public int <strong>yystate</strong>()</code></p><p>Returns the current lexical state.</p><h3>Returns</h3><p><code>int</code></p><hr><h2><a name="method_yytext">yytext</a></h2><p><code>public java.lang.String <strong>yytext</strong>()</code></p><p>Returns the text matched by the current regular expression.</p><h3>Returns</h3><p><code>java.lang.String</code></p><hr></body></html>