diff --git a/tools/lexer/jflex-1.4/.classpath b/tools/lexer/jflex-1.4/.classpath
deleted file mode 100644
index c7ff90e6b35c..000000000000
--- a/tools/lexer/jflex-1.4/.classpath
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
- JFlex can be easily integrated with Ant build tool. - To use JFlex with Ant, simply copy JFlex.jar to $ANT_HOME/lib/ directory. -
-- The JFlex Ant Task invokes the JFlex lexical - analyzer generator on a grammar file. -
-- To use the JFlex task, the following line must be placed in the Ant build file: -
-<taskdef classname="JFlex.anttask.JFlexTask" name="jflex" />- -
- The JFlex task requires the file attribute to be set to the source grammar file (*.flex). - Unless the target directory is specified with the destdir option, - the generated class will be saved to the same directory where grammar file resides. - Like javac, the JFlex task creates subdirectories in destdir according to the - generated class package. -
-- This task only invokes JFlex if the grammar file is newer than the generated - files. -
- -| Attribute | -Description | -Required | -Default | -
| file="file" | -The grammar file to process. | -Yes | -- |
| destdir="dir" | -- The directory to write the generated files to. If not set, the files - are written to the directory containing the grammar file. Note that unlike - JFlex's "-d" command line option, destdir causes the generated file to be written to - {destdir}/{package name}. This behaviour is similar to javac -d dir. - | -No | -- |
| outdir="dir" | -- The directory to write the generated files to. If not set, the files - are written to the directory containing the grammar file. This options works - exactly like JFlex's "-d" command line option, it causes the output file to - be written to dir regardless of the package name. - | -No | -- |
| verbose | -Display generation process messages. | -No | -"off" | -
| dump | -Dump character classes, NFA and DFA tables. | -No | -"off" | -
| time or timeStatistics |
- Display generation time statistics. | -No | -"off" | -
| nomin or skipMinimization |
- Skip minimization step. | -No | -"off" | -
| skel="file" or skeleton="file" |
- Use external skeleton file. | -No | -"off" | -
| dot or generateDot |
- Write graphviz .dot files for the generated automata (alpha). | -No | -"off" | -
| nobak | -Do not make a backup if the generated file exists. | -No | -"off" | -
| switch | -Use code generation method switch. | -No | -"off" | -
| table | -Use code generation method table. | -No | -"off" | -
| pack | -Use code generation method pack. | -No | -"on" | -
--<jflex - file="src/parser/Parser.flex" - destdir="build/generated/" -/> -
- JFlex generates the lexical analyzer for src/parser/Parser.flex and saves the result - to build/generated/parser/, providing Parser.flex declares to be in package parser. -
- ---<jflex - file="src/parser/Parser.flex" - destdir="build/generated/" -/> -<javac - srcdir="build/generated/" - destdir="build/classes/" -/> -
- The same as above plus compile generated classes to build/classes -
-- -
--
-
-
-
-
-
written in Java. It is also a rewrite of the very useful tool JLex [3] which
-was developed by Elliot Berk at Princeton University. As Vern Paxon states
-for his C/C++ tool flex [11]: They do not share any code though.
-
-- -
- -
-The next section of this manual describes installation procedures
-for JFlex. If you never worked with JLex or
-just want to compare a JLex and a JFlex scanner specification you
-should also read Working with JFlex - an example
-(section
). All options and the complete
-specification syntax are presented in
-Lexical specifications (section
);
-Encodings, Platforms, and Unicode (section
)
-provides information about scannig text vs. binary files.
-If you are interested in performance
-considerations and comparing JLex with JFlex speed,
-a few words on performance (section
)
-might be just right for you. Those who want to
-use their old JLex specifications may want to check out section
-Porting from JLex to avoid possible problems
-with not portable or non standard JLex behavior that has been fixed in
-JFlex. Section
talks about porting scanners from the
-Unix tools lex and flex. Interfacing JFlex scanners with the LALR
-parser generators CUP and BYacc/J is explained in working
- together (section
). Section
-Bugs gives a list of currently known active bugs.
-The manual concludes with notes about
-Copying and License (section
) and
-references.
-
-
- -
- -
- -
C:\, the following directory structure
-should be generated:
-
--C:\JFlex\ - +--bin\ (start scripts) - +--doc\ (FAQ and manual) - +--examples\ - +--binary\ (scanning binary files) - +--byaccj\ (calculator example for BYacc/J) - +--cup\ (calculator example for cup) - +--interpreter\ (interpreter example for cup) - +--java\ (Java lexer specification) - +--simple\ (example scanner) - +--standalone\ (a simple standalone scanner) - +--lib\ (the precompiled classes) - +--src\ - +--JFlex\ (source code of JFlex) - +--JFlex\gui (source code of JFlex UI classes) - +--java_cup\runtime\ (source code of cup runtime classes) -- -
-
bin\jflex.bat
-(in the example it's C:\JFlex\bin\jflex.bat)
-such that
-
-- -
C:\java) and
-C:\JFlex)
--
bin\ directory of JFlex in your path.
-(the one that contains the start script, in the example: C:\JFlex\bin).
-- -
-To install JFlex on a Unix system, follow these two steps: - -
-tar -C /usr/share -xvzf jflex-1.4.tar.gz - -
-(The example is for site wide installation. You need to - be root for that. User installation works exactly the - same way--just choose a directory where you have write - permission) - -
-
-ln -s /usr/share/JFlex/bin/jflex /usr/bin/jflex - -
-If the java interpreter is not in your binary path, you - need to supply its location in the script bin/jflex. -
-You can verify the integrity of the downloaded file with -the MD5 checksum available on the JFlex download page. -If you put the checksum file in the same directory -as the archive, you run: - -
-md5sum --check jflex-1.4.tar.gz.md5
-
-
-It should tell you - -
-jflex-1.4.tar.gz: OK - -
- -
- -
-You can verify the integrity of the downloaded rpm file with - -
-rpm --checksig jflex-1.4-0.rpm
-
-
-This requires my pgp public key. If you don't have it, you can use - -
-rpm --checksig --nopgp jflex-1.4-0.rpm
-
-
-or you can get it from http://www.jflex.de/public-key.asc. - -
- -
-jflex <options> <inputfiles> - -
-It is also possible to skip the start script in bin\
-and include the file lib\JFlex.jar
-in your CLASSPATH environment variable instead.
-
-
-Then you run JFlex with: - -
-java JFlex.Main <options> <inputfiles> - -
-The input files and options are in both cases optional. If you don't provide a file name on -the command line, JFlex will pop up a window to ask you for one. - -
-JFlex knows about the following options: - -
-
-d <directory>
-<directory>
-
--
--skel <file>
-<file>. This is mainly for JFlex
- maintenance and special low level customizations. Use only when you
- know what you are doing! JFlex comes with a skeleton file in the
- src directory that reflects exactly the internal, precompiled
- skeleton and can be used with the -skel option.
-
--
--nomin
--
--jlex
--
--dot
--
--dump
--
--verbose or -v
--
--quiet or -q
--
--time
--
--version
--
--info
--
--pack
--
--table
--
--switch
--
--help or -h
-- -
-/* JFlex example: part of Java language lexer specification */ -import java_cup.runtime.*; - -/** - * This class is a simple example lexer. - */ -%% --
-%class Lexer -%unicode -%cup -%line -%column --
-%{
- StringBuffer string = new StringBuffer();
-
- private Symbol symbol(int type) {
- return new Symbol(type, yyline, yycolumn);
- }
- private Symbol symbol(int type, Object value) {
- return new Symbol(type, yyline, yycolumn, value);
- }
-%}
-
-
-LineTerminator = \r|\n|\r\n
-InputCharacter = [^\r\n]
-WhiteSpace = {LineTerminator} | [ \t\f]
-
-/* comments */
-Comment = {TraditionalComment} | {EndOfLineComment} | {DocumentationComment}
-
-TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/"
-EndOfLineComment = "//" {InputCharacter}* {LineTerminator}
-DocumentationComment = "/**" {CommentContent} "*"+ "/"
-CommentContent = ( [^*] | \*+ [^/*] )*
-
-Identifier = [:jletter:] [:jletterdigit:]*
-
-DecIntegerLiteral = 0 | [1-9][0-9]*
-
--%state STRING - -%% --
-/* keywords */
-<YYINITIAL> "abstract" { return symbol(sym.ABSTRACT); }
-<YYINITIAL> "boolean" { return symbol(sym.BOOLEAN); }
-<YYINITIAL> "break" { return symbol(sym.BREAK); }
-
-
-<YYINITIAL> {
- /* identifiers */
- {Identifier} { return symbol(sym.IDENTIFIER); }
-
- /* literals */
- {DecIntegerLiteral} { return symbol(sym.INTEGER_LITERAL); }
- \" { string.setLength(0); yybegin(STRING); }
-
- /* operators */
- "=" { return symbol(sym.EQ); }
- "==" { return symbol(sym.EQEQ); }
- "+" { return symbol(sym.PLUS); }
-
- /* comments */
- {Comment} { /* ignore */ }
-
- /* whitespace */
- {WhiteSpace} { /* ignore */ }
-}
-
-
-<STRING> {
- \" { yybegin(YYINITIAL);
- return symbol(sym.STRING_LITERAL,
- string.toString()); }
- [^\n\r\"\\]+ { string.append( yytext() ); }
- \\t { string.append('\t'); }
- \\n { string.append('\n'); }
-
- \\r { string.append('\r'); }
- \\\" { string.append('\"'); }
- \\ { string.append('\\'); }
-}
-
-
-/* error fallback */
-.|\n { throw new Error("Illegal character <"+
- yytext()+">"); }
-
-
--From this specification JFlex generates a .java file with one -class that contains code for the scanner. The class will have a -constructor taking a java.io.Reader from which the input is -read. The class will also have a function yylex() that runs the -scanner and that can be used to get the next token from the input (in this -example the function actually has the name next_token() because -the specification uses the %cup switch). - -
-As with JLex, the specification consists of three parts, divided by %%: - -
- -
- -
- -
-
for more information on character sets, encodings, and
- scanning text vs. binary files.
-
--
-
-
-
-The code included in %{...%}
-is copied verbatim into the generated lexer class source.
-Here you can declare member variables and functions that are used
-inside scanner actions. In our example we declare a StringBuffer ``string''
-in which we will store parts of string literals and two helper functions
-``symbol'' that create java_cup.runtime.Symbol objects
-with position information of the current token (see section
-JFlex and CUP
-for how to interface with the parser generator CUP). As JFlex options, both
-%{ and \%} must begin a line.
-
-
-The specification continues with macro declarations. Macros are -abbreviations for regular expressions, used to make lexical specifications -easier to read and understand. A macro declaration -consists of a macro identifier followed by =, then followed by -the regular expression it represents. This regular expression may -itself contain macro usages. Although this allows a grammar like specification -style, macros are still just abbreviations and not non terminals - they -cannot be recursive or mutually recursive. Cycles in macro definitions -are detected and reported at generation time by JFlex. - -
-Here some of the example macros in more detail: - -
-
-
-
-
-The last part of the second section in our -lexical specification is a lexical state declaration: -%state STRING -declares a lexical state STRING that can be -used in the ``lexical rules'' part of the specification. A state declaration -is a line starting with %state followed by a space or comma -separated list of state identifiers. There can be more than one line starting -with %state. - -
- -
{Identifier}
-matches more of this input at once (i.e. it matches all of it)
-than any other rule in the specification. If two regular expressions both
-have the longest match for a certain input, the scanner chooses the action
-of the expression that appears first in the specification. In that way, we
-get for input "break" the keyword "break" and not an
-Identifier "break".
-
--Additional to regular expression matches, one can use lexical states to -refine a specification. A lexical state acts like a start condition. -If the scanner is in lexical state STRING, only expressions that -are preceded by the start condition <STRING> can be matched. -A start condition of a regular expression can contain more than one lexical -state. It is then matched when the lexer is in any of these lexical states. -The lexical state YYINITIAL is predefined and is also the state -in which the lexer begins scanning. If a regular expression has no start -conditions it is matched in all lexical states. - -
-Since you often have a bunch of expressions with the same start conditions, -JFlex allows the same abbreviation as the Unix tool flex: -
-<STRING> {
- expr1 { action1 }
- expr2 { action2 }
-}
-
-means that both expr1 and expr2 have start condition <STRING>.
-
--The first three rules in our example demonstrate the syntax of a regular -expression preceded by the start condition <YYINITIAL>. - -
-<YYINITIAL> "abstract" { return symbol(sym.ABSTRACT); }
-
-
-matches the input "abstract" only if the scanner is in its -start state "YYINITIAL". When the string "abstract" is -matched, the scanner function returns the CUP symbol sym.ABSTRACT. -If an action does not return a value, the scanning process is resumed immediately -after executing the action. - -
-The rules enclosed in - -
-demonstrate the abbreviated syntax and are also only matched in state YYINITIAL. - -
-Of these rules, one may be of special interest: - -
-\" { string.setLength(0); yybegin(STRING); }
-
-
-If the scanner matches a double quote in state YYINITIAL we -have recognized the start of a string literal. Therefore we clear our StringBuffer -that will hold the content of this string literal and tell the scanner -with yybegin(STRING) to switch into the lexical state STRING. -Because we do not yet return a value to the parser, our scanner proceeds -immediately. - -
-In lexical state STRING another -rule demonstrates how to refer to the input that has been matched: - -
-[^\n\r\"]+ { string.append( yytext() ); }
-
-
-The expression [^\n\r\"]+ matches
-all characters in the input up to the next backslash (indicating an
-escape sequence such as \n), double quote (indicating the end
-of the string), or line terminator (which must not occur in a string literal).
-The matched region of the input is referred to with yytext()
-and appended to the content of the string literal parsed so far.
-
-
-The last lexical rule in the example specification -is used as an error fallback. It matches any character in any state that -has not been matched by another rule. It doesn't conflict with any other -rule because it has the least priority (because it's the last rule) and -because it matches only one character (so it can't have longest match -precedence over any other rule). - -
- -
Installing JFlex)
-
--
-
-jflex java-lang.flex - -
-
-
-
- -
-UserCode
-
%%
-
Options and declarations
-
%%
-
Lexical rules
-
-
-In all parts of the specification comments of the form -/* comment text */ and the Java style end of line comments starting with // -are permitted. JFlex comments do nest - so the number of /* and */ -should be balanced. - -
- -
- -
-Each JFlex directive must be situated at the beginning of a line -and starts with the % character. Directives that have one or -more parameters are described as follows: - -
-%class "classname" - -
-means that you start a line with %class followed by a space followed
-by the name of the class for the generated scanner (the double quotes are
-not to be entered, see the example specification in
-section
).
-
-
- -
-Tells JFlex to give the generated class the name "classname" and to -write the generated code to a file "classname.java". If the --d <directory> command line option is not used, the code -will be written to the directory where the specification file resides. If -no %class directive is present in the specification, the generated -class will get the name "Yylex" and will be written to a file -"Yylex.java". There should be only one %class directive -in a specification. - -
-
-Makes the generated class implement the specified interfaces. If more than -one %implements directive is present, all the specified interfaces -will be implemented. - -
-
-Makes the generated class a subclass of the class ``classname''. -There should be only one %extends directive in a specification. - -
-
-Makes the generated class public (the class is only accessible in its -own package by default). - -
-
-Makes the generated class final. - -
-
-Makes the generated class abstract. - -
-
-Makes all generated methods and fields of the class
-private. Exceptions are the constructor, user code in the
-specification, and, if %cup is present, the method
-next_token. All occurences of
-" public " (one space character before and after public)
-in the skeleton file are replaced by
-" private " (even if a user-specified skeleton is used).
-Access to the genarated class is expected to be mediated by user class
-code (see next switch).
-
-
-
%{
-%}
-
-
-The code enclosed in %{ and %} is copied verbatim
-into the generated class. Here you can define your own member variables
-and functions in the generated scanner. Like all options, both %{
-and %} must start a line in the specification. If more than one
-class code directive %{...%} is present, the code is concatenated
-in order of appearance in the specification.
-
-
-
%init{
-%init}
-
-
-The code enclosed in %init{ and %init} is copied
-verbatim into the constructor of the generated class. Here, member
-variables declared in the %{...%} directive can be initialized.
-If more than one initializer option is present, the code is concatenated
-in order of appearance in the specification.
-
-
-
%initthrow{
-%initthrow}
-
--or (on a single line) just - -
-%initthrow "exception1" [, "exception2", ...] - -
-Causes the specified exceptions to be declared in the throws
-clause of the constructor. If more than one %initthrow{ ... %initthrow}
-directive is present in the specification, all specified exceptions will
-be declared.
-
-
-
-Causes the generated scanner to throw an instance of the specified -exception in case of an internal error (default is -java.lang.Error). Note that this exception is only for -internal scanner errors. With usual specifications it should never -occur (i.e. if there is an error fallback rule in the specification -and only the documented scanner API is used). - -
-
-Set the initial size of the scan buffer to the specified value -(decimal, in bytes). The default value is 16384. - -
-
-Replaces the %include verbatim by the specified file. This -feature is still experimental. It works, but error reporting can be -strange if a syntax error occurs on the last token in the included -file. - -
-
- -
-Causes the scanning method to get the specified name. If no %function -directive is present in the specification, the scanning method gets the -name ``yylex''. This directive overrides settings of the -%cup switch. Please note that the default name -of the scanning method with the %cup switch is -next_token. Overriding this name might lead to the generated scanner -being implicitly declared as abstract, because it does not provide -the method next_token of the interface java_cup.runtime.Scanner. -It is of course possible to provide a dummy implemention of that method -in the class code section, if you still want to override the function name. - -
-
-Both cause the scanning method to be declared as of Java type int. -Actions in the specification can then return int values as tokens. -The default end of file value under this setting is YYEOF, which is a public -static final int member of the generated class. - -
-
-Causes the scanning method to be declared as of the Java wrapper type -Integer. Actions in the specification can then return Integer -values as tokens. The default end of file value under this setting is null. - -
-
-Causes the scanning method to be declared as returning values of the specified type. -Actions in the specification can then return values of typename -as tokens. The default end of file value under this setting is null. -If typename is not a subclass of java.lang.Object, -you should specify another end of file value using the -%eofval{ ... %eofval} -directive or the <<EOF>> rule. -The %type directive overrides settings of the -%cup switch. - -
-
%yylexthrow{
-%yylexthrow}
-
--or (on a single line) just - -
-%yylexthrow "exception1" [, "exception2", ...] - -
-The exceptions listed inside %yylexthrow{ ... %yylexthrow}
-will be declared in the throws clause of the scanning method. If there is
-more than one %yylexthrow{ ... %yylexthrow} clause in
-the specification, all specified exceptions will be declared.
-
- -
-The default end of file values depends on the return type of the scanning method: - -
-
-
-new java_cup.runtime.Symbol(sym.EOF) -
-User values and code to be executed at the end of file can be defined using these directives: - -
%eofval{
-%eofval}
-
-
-The code included in %eofval{ ... %eofval} will
-be copied verbatim into the scanning method and will be executed each time
-when the end of file is reached (this is possible when
-the scanning method is called again after the end of file has been
-reached). The code should return the value that indicates the end of
-file to the parser. There should be only one %eofval{
-... %eofval} clause in the specification.
-The %eofval{ ... %eofval} directive overrides settings of the
-%cup switch and %byaccj switch.
-As of version 1.2 JFlex provides
-a more readable way to specify the end of file value using the
-<<EOF>> rule (see also section
).
-
-
-
%eof{
-%eof}
-
-
-The code included in %{eof ... %eof} will be executed
- exactly once, when the end of file is reached. The code is included
- inside a method void yy_do_eof() and should not return any
- value (use %eofval{...%eofval} or
- <<EOF>> for this purpose). If more than one
- end of file code directive is present, the code will be concatenated
- in order of appearance in the specification.
-
-
-
%eofthrow{
-%eofthrow}
-
--or (on a single line) just - -
-%eofthrow "exception1" [, "exception2", ...] - -
-The exceptions listed inside %eofthrow{...%eofthrow} will
- be declared in the throws clause of the method yy_do_eof()
- (see %eof for more on that method).
- If there is more than one %eofthrow{...%eofthrow} clause
- in the specification, all specified exceptions will be declared.
-
-
-Causes JFlex to close the input stream at the end of file. The code
- yyclose() is appended to the method yy_do_eof()
- (together with the code specified in %eof{...%eof}) and
- the exception java.io.IOException is declared in the throws
- clause of this method (together with those of
- %eofthrow{...%eofthrow})
-
-
-
-Turns the effect of %eofclose off again (e.g. in case closing of - input stream is not wanted after %cup). - -
-
- -
-Creates a main function in the generated class that expects the name -of an input file on the command line and then runs the scanner on this -input file by printing information about each returned token to the Java -console until the end of file is reached. The information includes: -line number (if line counting is enabled), column (if column counting is enabled), -the matched text, and the executed action (with line number in the specification). - -
-
-Creates a main function in the generated class that expects the name -of an input file on the command line and then runs the scanner on this -input file. The values returned by the scanner are ignored, but any unmatched -text is printed to the Java console instead (as the C/C++ tool flex does, if -run as standalone program). To avoid having to use an extra token class, the -scanning method will be declared as having default type int, not YYtoken -(if there isn't any other type explicitly specified). -This is in most cases irrelevant, but could be useful to know when making -another scanner standalone for some purpose. You should also consider using -the %debug directive, if you just want to be able to run the scanner -without a parser attached for testing etc. - -
-
- -
JFlex and CUP
-if you are interested in how to interface your generated
-scanner with CUP.
-
--The %cup directive enables the CUP compatibility mode and is equivalent -to the following set of directives: - -
-
-%implements java_cup.runtime.Scanner
-%function next_token
-%type java_cup.runtime.Symbol
-%eofval{
- return new java_cup.runtime.Symbol(<CUPSYM>.EOF);
-%eofval}
-%eofclose
-
-
--The value of <CUPSYM> defaults to sym and can be -changed with the %cupsym directive. In JLex compatibility -mode (-jlex switch on the command line), %eofclose -will not be turned on. - -
-
-Customizes the name of the CUP generated class/interface -containing the names of terminal tokens. Default is sym. -The directive should not be used after %cup, but before. - -
-
-Creates a main function in the generated class that expects the name -of an input file on the command line and then runs the scanner on this -input file. Prints line, column, matched text, and CUP symbol name for -each returned token to standard out. - -
-
- -
JFlex and BYacc/J
-if you are interested in how to interface your generated
-scanner with Byacc/J.
-
--The %byacc directive enables the BYacc/J compatibility mode and is equivalent -to the following set of directives: - -
-
-%integer
-%eofval{
- return 0;
-%eofval}
-%eofclose
-
-
--
- -
- -
-With %switch JFlex will generate a scanner that has - the DFA hard coded into a nested switch statement. This method gives - a good deal of compression in terms of the size of the compiled - .class file while still providing very good performance. If your - scanner gets to big though (say more than about 200 states) - performance may vastly degenerate and you should consider using one - of the %table or %pack directives. If your scanner - gets even bigger (about 300 states), the Java compiler javac - could produce corrupted code, that will crash when executed or will - give you an java.lang.VerifyError when checked by the virtual - machine. This is due to the size limitation of 64 KB of Java - methods as described in the Java Virtual Machine Specification - [10]. In this case you will be forced to use the - %pack directive, since %switch - usually provides more compression of the DFA table than the - %table directive. - -
-
-The %table direction causes JFlex to produce a classical
- table driven scanner that encodes its DFA table in an array. In
- this mode, JFlex only does a small amount of table compression (see
- [6], [12], [1] and [13]
- for more details on the matter of table compression) and uses the
- same method that JLex did up to version 1.2.1. See section
- performance of this manual to compare
- these methods. The same reason as above (64 KB size limitation of
- methods) causes the same problem, when the scanner gets too big.
- This is, because the virtual machine treats static initializers of
- arrays as normal methods. You will in this case again be forced to
- use the %pack directive to avoid the problem.
-
-
-
-%pack causes JFlex to compress the generated DFA table and to
- store it in one or more string literals. JFlex takes care that the
- strings are not longer than permitted by the class file format.
- The strings have to be unpacked when
- the first scanner object is created and initialized.
- After unpacking the internal access to the DFA table is exactly the
- same as with option %table -- the only extra work to be done
- at runtime is the unpacking process which is quite fast (not noticeable
- in normal cases). It is in time complexity proportional to the
- size of the expanded DFA table, and it is static,
- i.e. it is done only once for a certain scanner class -- no matter
- how often it is instantiated. Again, see section
-
performance
- on the performance of these scanners
- With %pack, there should be practically no
- limitation to the size of the scanner. %pack is the default
- setting and will be used when no code generation method is specified.
-
- -
-Causes the generated scanner to use an 7 bit input character set (character
-codes 0-127). Because this is the default value in JLex, JFlex also defaults
-to 7 bit scanners. If an input character with a code greater than 127 is
-encountered in an input at runtime, the scanner will throw an ArrayIndexOutofBoundsException.
-Not only because of this, you should consider using the %unicode directive.
-See also section
for information about character encodings.
-
-
-
-Both options cause the generated scanner to use an 8 bit input character
-set (character codes 0-255). If an input character with a code greater
-than 255 is encountered in an input at runtime, the scanner will throw
-an ArrayIndexOutofBoundsException. Note that even if your platform
-uses only one byte per character, the Unicode value of a character may
-still be greater than 255. If you are scanning text files, you should
-consider using the %unicode directive. See also section
-for more information about character encodings.
-
-
-
-Both options cause the generated scanner to use the full 16 bit Unicode input
-character set (character codes 0-65535). There will be no runtime overflow when
-using this set of input characters. %unicode does not mean that the
-scanner will read two bytes at a time. What is read and what constitutes a
-character depends on the runtime platform. See also section
-for more information about character encodings.
-
-
-This option causes JFlex to handle all characters and strings in the -specification as if they were specified in both uppercase and lowercase form. -This enables an easy way to specify a scanner for a language with -case insensitive keywords. The string "break" in a specification is for instance -handled like the expression ([bB][rR][eE][aA][kK]). The %caseless -option does not change the matched text and does not effect character classes. So -[a] still only matches the character a and not A, too. -Which letters are uppercase and which lowercase letters, is defined by the Unicode standard -and determined by JFlex with the Java methods Character.toUpperCase and -Character.toLowerCase. In JLex compatibility -mode (-jlex switch on the command line), %caseless -and %ignorecase also affect character classes. - -
-
-Turns character counting on. The int member variable yychar -contains the number of characters (starting with 0) from the beginning -of input to the beginning of the current token. - -
-
-Turns line counting on. The int member variable yyline -contains the number of lines (starting with 0) from the beginning of input -to the beginning of the current token. - -
-
-Turns column counting on. The int member variable yycolumn -contains the number of characters (starting with 0) from the beginning -of the current line to the beginning of the current token. - -
-
- -
-This JLex option is obsolete in JFlex but still recognized as valid directive.
-It used to switch between Windows and Unix kind of line terminators (\r\n
-and \n) for the $ operator in regular expressions. JFlex
-always recognizes both styles of platform dependent line terminators.
-
-
-
-This JLex option is obsolete in JFlex but still recognized as valid directive. -In JLex it declares a public member constant YYEOF. JFlex declares it in any case. -
- -
-%s[tate] "state identifier" [, "state identifier", ... ] for inclusive or
-
%x[state] "state identifier" [, "state identifier", ... ] for exlusive states
-
-
-There may be more than one line of state declarations, each starting with -%state or %xstate (the first character is sufficient, -%s and %x works, too). State identifiers are letters followed -by a sequence of letters, digits or underscores. State identifiers can be separated -by whitespace or comma. - -
-The sequence - -
-%state STATE1
-
%xstate STATE3, XYZ, STATE_10
-
%state ABC STATE5
-
-
-declares the set of identifiers STATE1, STATE3, XYZ,
- STATE_10, ABC, STATE5 as lexical states, STATE1, ABC, STATE5
-as inclusive, and STATE3, XYZ, STATE_10 as exclusive.
-See also section
-
on the way lexical states influence how the input is
-matched.
-
-
- -
-macroidentifier = regular expression - -
-That means, a macro definition is a macro identifier (letter followed
-by a sequence of letters, digits or underscores), that can later be
-used to reference the macro, followed by optional whitespace, followed
-by an "=", followed by optional whitespace, followed by a
-regular expression (see section
lexical
- rules for more information about regular expressions).
-
-
-The regular expression on the right hand side must be well formed and
-must not contain the ^, / or $ operators. Differently
-to JLex, macros are not just pieces of text that are expanded by copying
-- they are parsed and must be well formed.
-
-
-This is a feature. It eliminates some very hard to find bugs in
-lexical specifications (such like not having parentheses around more
-complicated macros - which is not necessary with JFlex). See section
-
Porting from JLex for more
-details on the problems of JLex style macros.
-
-
-Since it is allowed to have macro usages in macro definitions, it is -possible to use a grammar like notation to specify the desired lexical -structure. Macros however remain just abbreviations of the regular expressions -they represent. They are not non terminals of a grammar and cannot be used -recursively in any way. JFlex detects cycles in macro definitions and reports -them at generation time. JFlex also warns you about macros that have been -defined but never used in the ``lexical rules'' section of the specification. - -
- -
- -
-
-LexicalRules ::= Rule+
-Rule ::= [StateList] ['^'] RegExp [LookAhead] Action
- | [StateList] '<<EOF>>' Action
- | StateGroup
-StateGroup ::= StateList '{' Rule+ '}'
-StateList ::= '<' Identifier (',' Identifier)* '>'
-LookAhead ::= '$' | '/' RegExp
-Action ::= '{' JavaCode '}' | '|'
-
-RegExp ::= RegExp '|' RegExp
- | RegExp RegExp
- | '(' RegExp ')'
- | ('!'|'~') RegExp
- | RegExp ('*'|'+'|'?')
- | RegExp "{" Number ["," Number] "}"
- | '[' ['^'] (Character|Character'-'Character)* ']'
- | PredefinedClass
- | '{' Identifier '}'
- | '"' StringCharacter+ '"'
- | Character
-
-PredefinedClass ::= '[:jletter:]'
- | '[:jletterdigit:]'
- | '[:letter:]'
- | '[:digit:]'
- | '[:uppercase:]'
- | '[:lowercase:]'
- | '.'
-
-
--The grammar uses the following terminal symbols: - -
-
-
[a-zA-Z] followed by a sequence of zero or more
- letters, digits or underscores [a-zA-Z0-9_]
-
--
| ( ) { } [ ] < > \ . * + ? ^ $ / . " ~ !
-
--
\ "
-
--
- -
\n \r \t \f \b
-\x followed by two hexadecimal digits [a-fA-F0-9] (denoting
- a standard ASCII escape sequence),
-
--
\u followed by four hexadecimal digits [a-fA-F0-9]
- (denoting an unicode escape sequence),
-
--
-
-
-
-Please note that the \n escape sequence stands for the ASCII
-LF character - not for the end of line. If you would like to match the
-line terminator, you should use the expression \r|\n|\r\n if you want
-the Java conventions, or \r|\n|\r\n|\u2028|\u2029|\u000B|\u000C|\u0085
-if you want to be fully Unicode compliant (see also [5]).
-
-
-As of version 1.1 of JFlex the whitespace characters " "
-(space) and "\t" (tab) can be used to improve the readability of
-regular expressions. They will be ignored by JFlex. In character
-classes and strings however, whitespace characters keep standing for
-themselves (so the string " " still matches exactly one space
-character and [ \n] still matches an ASCII LF or a space
-character).
-
-
-JFlex applies the following standard operator precedences in regular -expression (from highest to lowest): - -
- -
'*', '+', '?', {n}, {n,m})
-
--
'!', '~')
-
--
-
RegExp::= RegExp '|' RegExp)
-
-So the expression a | abc | !cd* for instance is parsed as
-(a|(abc)) | ((!c)(d*)).
-
-
- -
-A regular expression that consists solely of - -
-
'[' (Character|Character'-'Character)* ']' matches
- any character in that class. A Character is to be considered an
- element of a class, if it is listed in the class or if its code lies within
- a listed character range Character'-'Character. So [a0-3\n]
- for instance matches the characters
-
-
-a 0 1 2 3 \n
-
-
-If the list of characters is empty (i.e. just []), the expression
- matches nothing at all (the empty set), not even the empty string. This
- may be useful in combination with the negation operator '!'.
-
-
-
'[^' (Character|Character'-'Character)* ']'
- matches all characters not listed in the class. If the list of characters
- is empty (i.e. [^]), the expression matches any character of the
- input character set.
-
--
\ and
- " loose their special meaning inside a string. See also the
- %ignorecase switch.
-
--
'{' Identifier '}' matches the input that is matched
- by the right hand side of the macro with name "Identifier".
-
-
-. contains all characters but \n.
-
-
-All other predefined character classes are defined in the Unicode - specification or the Java Language Specification and determined by - Java functions of class - java.lang.Character. - -
-
-[:jletter:] isJavaIdentifierStart() -[:jletterdigit:] isJavaIdentifierPart() -[:letter:] isLetter() -[:digit:] isDigit() -[:uppercase:] isUpperCase() -[:lowercase:] isLowerCase() -- -
-They are especially useful when working with the unicode character set. - -
-
-If a and b are regular expressions, then - -
-
-is the regular expression, that matches - all input that is matched by a or by b. - -
-
-is the regular expression, - that matches the input matched by a followed by the - input matched by b. - -
-
-matches zero or more repetitions - of the input matched by a - -
-
-is equivalent to aa* - -
-
-matches the empty input or the input matched - by a - -
-
-matches everything but the strings matched by a.
- Use with care: the construction of !a involves
- an additional, possibly exponential NFA to DFA transformation
- on the NFA for a. Note that
- with negation and union you also have (by applying DeMorgan)
- intersection and set difference: the intersection of
- a and b is !(!a|!b), the expression
- that matches everything of a not matched by b is
- !(!a|b)
-
-
-
-matches everything up to (and including) the first occurrence of a text
- matched by a. The expression ~a is equivalent
- to !([^]* a [^]* | "") a. A traditional C-style comment
- is matched by "/*" ~"*/"
-
-
-
-is equivalent to n times the concatenation of a.
- So a{4} for instance is equivalent to the expression a a a a.
- The decimal integer n must be positive.
-
-
-
a{2,4} for instance is equivalent
- to the expression a a a? a?. Both n and m are non
- negative decimal integers and m must not be smaller than n.
-
--
-
-In a lexical rule, a regular expression r may be preceded by a
-'^' (the beginning of line operator). r is then
-only matched at the beginning of a line in the input. A line begins
-after each occurrence of \r|\n|\r\n|\u2028|\u2029|\u000B|\u000C|\u0085
-(see also [5]) and at the beginning of input.
-The preceding line terminator in the input is not consumed and can
-be matched by another rule.
-
-
-In a lexical rule, a regular expression r may be followed by a
-lookahead expression. A lookahead expression is either a '$'
-(the end of line operator) or a '/' followed by an arbitrary
-regular expression. In both cases the lookahead is not consumed and
-not included in the matched text region, but it is considered
-while determining which rule has the longest match (see also
-
How the input is matched).
-
-
-In the '$' case r is only matched at the end of a line in
-the input. The end of a line is denoted by the regular expression
-\r|\n|\r\n|\u2028|\u2029|\u000B|\u000C|\u0085.
-So a$ is equivalent to a / \r|\n|\r\n|\u2028|\u2029|\u000B|\u000C|\u0085.This is a bit different to the situation described in [5]:
-since in JFlex $ is a true trailing context, the end of file
-does not count as end of line.
-
-
-For arbitrary lookahead (also called trailing context) the
-expression is matched only when followed by input that matches the
-trailing context. Unfortunately the lookahead expression is not
-really arbitrary: In a rule r1 / r2, either the text matched
-by r1 must have a fixed length (e.g. if r1 is a string)
-or the beginning of the trailing context r2 must not match the
-end of r1. So for example "abc" / "a"|"b" is ok because
-"abc" has a fixed length, "a"|"ab" / "x"* is ok because
-no prefix of "x"* matches a postfix of "a"|"ab", but
-"x"|"xy" / "yx" is not possible, because the postfix "y"
-of "x"|"xy" is also a prefix of "yx". JFlex will report
-such cases at generation time. The algorithm JFlex currently uses for matching
-trailing context expressions is the one described in [1] (leading
-to the deficiencies mentioned above).
-
-
-As of version 1.2, JFlex allows lex/flex style «EOF» rules in -lexical specifications. A rule -
-[StateList] <<EOF>> { some action code }
-
-is very similar to the %eofval directive (section
).
-The difference lies in the optional StateList that may precede the «EOF» rule. The
-action code will only be executed when the end of file is read and the
-scanner is currently in one of the lexical states listed in StateList.
-The same StateGroup (see section
-How the input is matched) and precedence
-rules as in the ``normal'' rule case apply
-(i.e. if there is more than one «EOF»
-rule for a certain lexical state, the action of the one appearing
-earlier in the specification will be executed). «EOF» rules
-override settings of the %cup and %byaccj options and
-should not be mixed with the %eofval directive.
-
-
-An Action consists either of a piece of Java code enclosed in
-curly braces or is the special | action. The | action is
-an abbreviation for the action of the following expression.
-
-
-Example: -
-expression1 |
-expression2 |
-expression3 { some action }
-
-is equivalent to the expanded form
-
-expression1 { some action }
-expression2 { some action }
-expression3 { some action }
-
-
-
-They are useful when you work with trailing context expressions. The
-expression a | (c / d) | b is not syntactically legal, but can
-easily be expressed using the | action:
-
-a |
-c / d |
-b { some action }
-
-
-- -
-Lexical states can be used to further restrict the set of regular expressions -that match the current input. - -
- -
-
-
-
-Example: -
-%states A, B
-%xstates C
-%%
-expr1 { yybegin(A); action }
-<YYINITIAL, A> expr2 { action }
-<A> {
- expr3 { action }
- <B,C> expr4 { action }
-}
-
-The first line declares two (inclusive) lexical states A and B,
-the second line an exclusive lexical state C.
-The default (inclusive) state YYINITIAL is always implicitly there and
-doesn't need to be declared. The rule with expr1 has no
-states listed, and is thus matched in all states but the exclusive
-ones, i.e. A, B, and YYINITIAL. In its
-action, the scanner is switched to state A. The second rule
-expr2 can only match when the scanner is in state
-YYINITIAL or A. The rule expr3 can only be
-matched in state A and expr4 in states A, B,
-and C.
-
--
-
- -
-The generated class contains (among other things) the DFA tables, an input buffer, -the lexical states of the specification, a constructor, and the scanning method -with the user supplied actions. - -
-The name of the class is by default Yylex, it is customizable
-with the %class directive (see also section
-
). The input buffer of the lexer is connected with an
-input stream over the java.io.Reader object which is passed
-to the lexer in the generated constructor. If you want to provide your
-own constructor for the lexer, you should always call the generated
-one in it to initialize the input buffer. The input buffer should not
-be accessed directly, but only over the advertised API (see also
-section
). Its internal implementation may change
-between releases or skeleton files without notice.
-
-
-The main interface to the outside world is the generated scanning
-method (default name yylex, default return type
-Yytoken). Most of its aspects are customizable (name, return
-type, declared exceptions etc., see also section
-
). If it is called, it will consume input until
-one of the expressions in the specification is matched or an error
-occurs. If an expression is matched, the corresponding action is
-executed. It may return a value of the specified return type (in which
-case the scanning method return with this value), or if it doesn't
-return a value, the scanner resumes consuming input until the next
-expression is matched. If the end of file is reached, the scanner
-executes the EOF action, and (also upon each further call to the scanning
-method) returns the specified EOF value (see also section
).
-
-
- -
-Currently, the API consists of the following methods and member fields: - -
-
-
-
-
-
-A typical example for this are include files in - style of the C preprocessor. The corresponding - JFlex specification could look somewhat like this: -
-"#include" {FILE} { yypushStream(new FileReader(getFile(yytext()))); }
-..
-<<EOF>> { if (yymoreStreams()) yypopStream(); else return EOF; }
-
-
--This method is only available in the skeleton file - skeleton.nested. You can find it in the - src directory of the JFlex distribution. - -
-
-This method is only available in the skeleton file - skeleton.nested. You can find it in the - src directory of the JFlex distribution. - -
-
-This method is only available in the skeleton file - skeleton.nested. You can find it in the - src directory of the JFlex distribution. - -
-
-
-
- String matched = yytext(); - yypushback(1); - return matched; -- will return the whole matched text, while -
- yypushback(1); - return yytext(); -- will return the matched text minus the last character. - -
-
-
-
-
- -
-This section tries to shed some light on the issues of Unicode and -encodings, cross platform scanning, and how to deal with binary data. -My thanks go to Stephen Ostermiller for his input on this topic. - -
- -
-Before we dive straight into details, let's take a look at what the -problem is. The problem is Java's platform independence when you want -to use it. For scanners the interesting part about platform -independence is character encodings and how they are handled. - -
-If a program reads a file from disk, it gets a stream of bytes. In -earlier times, when the grass was green, and the world was much -simpler, everybody knew that the byte value 65 is, of course, an A. -It was no problem to see which bytes meant which characters (actually -these times never existed, but anyway). The normal Latin alphabet -only has 26 characters, so 7 bits or 128 distinct values should surely -be enough to map them, even if you allow yourself the luxury of upper -and lower case. Nowadays, things are different. The world suddenly -grew much larger, and all kinds of people wanted all kinds of special -characters, just because they use them in their language and writing. -This is were the mess starts. Since the 128 distinct values were -already filled up with other stuff, people began to use all 8 bits of -the byte, and extended the byte/character mappings to fit their need, -and of course everybody did it differently. Some people for instance -may have said ``let's use the value 213 for the German character ä''. Others -may have found that 213 should much rather mean é, because they didn't need -German and wrote French instead. As long as you use your program and -data files only on one platform, this is no problem, as all know what -means what, and everything gets used consistently. - -
-Now Java comes into play, and wants to run everywhere (once written, -that is) and now there suddenly is a problem: how do I get the same -program to say ä to a certain byte when it runs in Germany and maybe é -when it runs in France? And also the other way around: when I want to -say é on the screen, which byte value should I send to the operating -system? - -
-Java's solution to this is to use Unicode internally. Unicode aims to -be a superset of all known character sets and is therefore a perfect base -for encoding things that might get used all over the world. To make -things work correctly, you still have to know where you are and how to -map byte values to Unicode characters and vice versa, but the -important thing is, that this mapping is at least possible (you can -map Kanji characters to Unicode, but you cannot map them to ASCII or -iso-latin-1). - -
- -
-Scanning text files is the standard application for scanners like -JFlex. Therefore it should also be the most convenient one. Most times -it is. - -
-The following scenario works like a breeze: -You work on a platform X, write your lexer specification there, can -use any obscure Unicode character in it as you like, and compile the -program. Your users work on any platform Y (possibly but not -necessarily something different from X), they write their input files -on Y and they run your program on Y. No problems. - -
-Java does this as follows: -If you want to read anything in Java that is supposed to contain text, -you use a FileReader or some InputStream together with -an InputStreamReader. InputStreams return the raw bytes, the -InputStreamReader converts the bytes into Unicode characters with -the platform's default encoding. If a text file is produced on the -same platform, the platform's default encoding should do the mapping -correctly. Since JFlex also uses readers and Unicode internally, this -mechanism also works for the scanner specifications. If you write an -A in your text editor and the editor uses the platform's encoding (say A is 65), -then Java translates this into the logical Unicode A internally. -If a user writes an A on a completely different platform (say A is 237 there), -then Java also translates this into the logical Unicode A internally. Scanning -is performed after that translation and both match. - -
-Note that because of this mapping from bytes to characters, you should always
-use the %unicode switch in you lexer specification if you want to scan
-text files. %8bit may not be enough, even if
-you know that your platform only uses one byte per character. The encoding
-Cp1252 used on many Windows machines for instance knows 256 characters, but
-the character ´ with Cp1252 code \x92 has the Unicode value \u2019, which
-is larger than 255 and which would make your scanner throw an
-ArrayIndexOutOfBoundsException if it is encountered.
-
-
-So for the usual case you don't have to do anything but use the -%unicode switch in your lexer specification. - -
-Things may break when you produce a text file on platform X and
-consume it on a different platform Y. Let's say you have a file
-written on a Windows PC using the encoding Cp1252. Then you move
-this file to a Linux PC with encoding ISO 8859-1 and there you want
-to run your scanner on it. Java now thinks the file is encoded
-in ISO 8859-1 (the platform's default encoding) while it really is
-encoded in Cp1252. For most characters
-Cp1252 and ISO 8859-1 are the same, but for the byte values \x80
-to \x9f they disagree: ISO 8859-1 is undefined there. You can fix
-the problem by telling Java explicitly which encoding to use. When
-constructing the InputStreamReader, you can give the encoding
-as argument. The line
-
-Of course the encoding to use can also come from the data itself: -for instance, when you scan a HTML page, it may have embedded -information about its character encoding in the headers. - -
-More information about encodings, which ones are supported, how -they are called, and how to set them may be found in the -official Java documentation in the chapter about -internationalization. -The link -http://java.sun.com/j2se/1.3/docs/guide/intl/ -leads to an online version of this for Sun's JDK 1.3. - -
- -
-Scanning binaries is both easier and more difficult -than scanning text files. It's easier because you want -the raw bytes and not their meaning, i.e. you don't want -any translation. -It's more difficult because it's not so easy to get -``no translation'' when you use Java readers. - -
-The problem (for binaries) is that JFlex scanners are
-designed to work on text. Therefore the interface is
-the Reader class (there is a constructor
-for InputStream instances, but it's just there
-for convenience and wraps an InputStreamReader
-around it to get characters, not bytes).
-You can still get a binary scanner when you write
-your own custom InputStreamReader class that
-does explicitly no translation, but just copies
-byte values to character codes instead. It sounds
-quite easy, and actually it is no big deal, but there
-are a few little pitfalls on the way. In the scanner
-specification you can only enter positive character
-codes (for bytes that is \x00
-to \xFF). Java's byte type on the other hand
-is a signed 8 bit integer (-128 to 127), so you have to convert
-them properly in your custom Reader. Also, you should
-take care when you write your lexer spec: if you
-use text in there, it gets interpreted by an encoding
-first, and what scanner you get as result might depend
-on which platform you run JFlex on when you generate
-the scanner (this is what you want for text, but for binaries it
-gets in the way). If you are not sure, or if the development
-platform might change, it's probably best to use character
-code escapes in all places, since they don't change their
-meaning.
-
-
-To illustrate these points, the example in examples/binary
-contains a very small binary scanner that tries to
-detect if a file is a Java class file. For that
-purpose it looks if the file begins with the magic number \xCAFEBABE.
-
-
- -
- -
-The values presented in the table denote the time from the first call -to the scanning method to returning the EOF value and the speedup in -percent. The tests were run both int the mixed (HotSpot) JVM mode and -the pure interpreted mode. The mixed mode JVM brings -about a factor of 10 performance improvement, the difference between -JLex and JFlex only decreases slightly. - -
-
| KB | -JVM | -JLex | -%switch | -speedup | -%table | -speedup | -%pack | -speedup | -|
| 496 | -hotspot | -325 ms | -261 ms | -24.5 % | -261 ms | -24.5 % | -261 ms | -24.5 % | -|
| 187 | -hotspot | -127 ms | -98 ms | -29.6 % | -94 ms | -35.1 % | -96 ms | -32.3 % | -|
| 93 | -hotspot | -66 ms | -50 ms | -32.0 % | -50 ms | -32.0 % | -48 ms | -37.5 % | -|
| 496 | -interpr. | -4009 ms | -3025 ms | -32.5 % | -3258 ms | -23.1 % | -3231 ms | -24.1 % | -|
| 187 | -interpr. | -1641 ms | -1155 ms | -42.1 % | -1245 ms | -31.8 % | -1234 ms | -33.0 % | -|
| 93 | -interpr. | -817 ms | -573 ms | -42.6 % | -617 ms | -32.4 % | -613 ms | -33.3 % | -
-
-
-Since the scanning time of the lexical analyzer examined in the table -above includes lexical actions that often need to create new object instances, -another table shows the execution time for the same specification with empty -lexical actions to compare the pure scanning engines. - -
-
| KB | -JVM | -JLex | -%switch | -speedup | -%table | -speedup | -%pack | -speedup | -|
| 496 | -hotspot | -204 ms | -140 ms | -45.7 % | -138 ms | -47.8 % | -140 ms | -45.7 % | -|
| 187 | -hotspot | -83 ms | -55 ms | -50.9 % | -52 ms | -59.6 % | -52 ms | -59.6 % | -|
| 93 | -hotspot | -41 ms | -28 ms | -46.4 % | -26 ms | -57.7 % | -26 ms | -57.7 % | -|
| 496 | -interpr. | -2983 ms | -2036 ms | -46.5 % | -2230 ms | -33.8 % | -2232 ms | -33.6 % | -|
| 187 | -interpr. | -1260 ms | -793 ms | -58.9 % | -865 ms | -45.7 % | -867 ms | -45.3 % | -|
| 93 | -interpr. | -628 ms | -395 ms | -59.0 % | -432 ms | -45.4 % | -432 ms | -45.4 % | -
-
-
-Execution time of single instructions depends on the platform and -the implementation of the Java Virtual Machine the program is executed -on. Therefore the tables above cannot be used as a reference to which -code generation method of JFlex is the right one to choose in general. -The following table was produced by the same lexical specification and -the same input on a Linux system also using Sun's JDK 1.3. - -
-With actions: - -
-
| KB | -JVM | -JLex | -%switch | -speedup | -%table | -speedup | -%pack | -speedup | -|
| 496 | -hotspot | -246 ms | -203 ms | -21.2 % | -193 ms | -27.5 % | -190 ms | -29.5 % | -|
| 187 | -hotspot | -99 ms | -76 ms | -30.3 % | -69 ms | -43.5 % | -70 ms | -41.4 % | -|
| 93 | -hotspot | -48 ms | -36 ms | -33.3 % | -34 ms | -41.2 % | -35 ms | -37.1 % | -|
| 496 | -interpr. | -3251 ms | -2247 ms | -44.7 % | -2430 ms | -33.8 % | -2444 ms | -33.0 % | -|
| 187 | -interpr. | -1320 ms | -848 ms | -55.7 % | -958 ms | -37.8 % | -920 ms | -43.5 % | -|
| 93 | -interpr. | -658 ms | -423 ms | -55.6 % | -456 ms | -44.3 % | -452 ms | -45.6 % | -
-
-
-Without actions: - -
-
| KB | -JVM | -JLex | -%switch | -speedup | -%table | -speedup | -%pack | -speedup | -|
| 496 | -hotspot | -136 ms | -78 ms | -74.4 % | -76 ms | -78.9 % | -77 ms | -76.6 % | -|
| 187 | -hotspot | -59 ms | -31 ms | -90.3 % | -48 ms | -22.9 % | -32 ms | -84.4 % | -|
| 93 | -hotspot | -28 ms | -15 ms | -86.7 % | -15 ms | -86.7 % | -15 ms | -86.7 % | -|
| 496 | -interpr. | -1992 ms | -1047 ms | -90.3 % | -1246 ms | -59.9 % | -1215 ms | -64.0 % | -|
| 187 | -interpr. | -859 ms | -408 ms | -110.5 % | -479 ms | -79.3 % | -487 ms | -76.4 % | -|
| 93 | -interpr. | -435 ms | -200 ms | -117.5 % | -237 ms | -83.5 % | -242 ms | -79.8 % | -
-
-
-Although all JFlex scanners were faster than those generated by JLex, -slight differences between JFlex code generation methods show up when compared -to the run on the W98 system. - -
-The following table compares a handwritten scanner for the Java language -obtained from the website of CUP with the JFlex generated scanner for Java -that comes with JFlex in the examples directory. They were tested -on different .java files on a Linux machine with Sun's JDK 1.3. - -
-
| lines | -KB | -JVM | -handwritten scanner | -JFlex generated scanner | -||
| 19050 | -496 | -hotspot | -824 ms | -248 ms | -235 % faster | -|
| 6350 | -165 | -hotspot | -272 ms | -84 ms | -232 % faster | -|
| 1270 | -33 | -hotspot | -53 ms | -18 ms | -194 % faster | -|
| 19050 | -496 | -interpreted | -5.83 s | -3.85 s | -51 % faster | -|
| 6350 | -165 | -interpreted | -1.95 s | -1.29 s | -51 % faster | -|
| 1270 | -33 | -interpreted | -0.38 s | -0.25 s | -52 % faster | -|
-
-
-Although JDK 1.3 seems to speed up the handwritten scanner if compared -to JDK 1.1 or 1.2 more than the generated one, the generated scanner is -still up to 3.3 times as fast as the handwritten one. One example of -a handwritten scanner that is -considerably slower than the equivalent generated one is surely no -proof for all generated scanners being faster than handwritten. It is -clearly impossible to prove something like that, since you could -always write the generated scanner by hand. From a software -engineering point of view however, there is no excuse for writing a -scanner by hand since this task takes more time, is more difficult and -therefore more error prone than writing a compact, readable and easy -to change lexical specification. (I'd like to add, that I do not -think, that the handwritten scanner from the CUP website used here in -the test is stupid or badly written or anything like that. I actually -think, Scott did a great job with it, and that for learning about -lexers it is quite valuable to study it or even to write a similar one -for oneself.) - -
- -
- -
-From the C/C++ flex [11] manpage: ``Getting rid -of backtracking is messy and often may be an enormous amount of work for -a complicated scanner.'' Backtracking is introduced by the longest match -rule and occurs for instance on this set of expressions: - -
- "averylongkeyword"
-
.
-
-
-With input "averylongjoke" the scanner has to read all charcters -up to 'j' to decide that rule . should be matched. All -characters of "verylong" have to be read again for the next -matching process. Backtracking can be avoided in general by adding -error rules that match those error conditions - -
- "av"|"ave"|"avery"|"averyl"|..
-
-
-While this is impractical in most scanners, there is still the -possibility to add a ``catch all'' rule for a lengthy list of keywords -
-"keyword1" { return symbol(KEYWORD1); }
-..
-"keywordn" { return symbol(KEYWORDn); }
-[a-z]+ { error("not a keyword"); }
-
-Most programming language scanners already have a rule like this for
-some kind of variable length identifiers.
-
--
-It costs multiple additional comparisons per input character and the - matched text has to be rescanned for counting. In most scanners it - is possible to do the line counting in the specification by - incrementing yyline each time a line terminator has been - matched. Column counting could also be included in actions. This - will be faster, but can in some cases become quite messy. - -
-
-The trailing context will first have to be read and then (because - it is not to be consumed) read again. - -
-
^'
-
-
-It costs multiple additional comparisons per match. In some
- cases one extra lookahead character is needed (when the last character read is
- \r the scanner has to read one character ahead to check if
- the next one is an \n or not).
-
-
-
-One rule is matched in the innermost loop of the scanner. After - each action some overhead for setting up the internal state of the - scanner is necessary. -
-Note that writing more rules in a specification does not make the generated -scanner slower (except when you have to switch to another code generation -method because of the larger size). - -
-The two main rules of optimization apply also for lexical specifications: - -
-Some of the performance tips above contradict a readable and compact -specification style. When in doubt or when requirements are not or not -yet fixed: don't use them - the specification can always be optimized -in a later state of the development process. - -
- -
- -
-This works as expected on all well formed JLex specifications. - -
-Since the statement above is somewhat absolute, let's take a look at -what ``well formed'' means here. A JLex specification is well formed, when -it - -
-
-They are operators in JFlex while JLex treats them as normal
- input characters. You can easily port such a JLex specification
- to JFlex by replacing every ! with \! and every
- ~ with \~ in all regular expressions.
-
-
-
-This may sound a bit harsh, but could otherwise be a major problem - - it can also help you find some disgusting bugs in your - specification that didn't show up in the first place. In JLex, a - right hand side of a macro is just a piece of text, that is copied - to the point where the macro is used. With this, some weird kind of - stuff like -
- macro1 = ("hello"
- macro2 = {macro1})*
-
- was possible (with macro2 expanding to ("hello")*). This
- is not allowed in JFlex and you will have to transform such
- definitions. There are however some more subtle kinds of errors that
- can be introduced by JLex macros. Let's consider a definition like
- macro = a|b and a usage like {macro}*.
- This expands in JLex to a|b* and not to the probably intended
- (a|b)*.
-
--JFlex uses always the second form of expansion, since this is the natural - form of thinking about abbreviations for regular expressions. - -
-Most specifications shouldn't suffer from this problem, because - macros often only contain (harmless) character classes like - alpha = [a-zA-Z] and more dangerous definitions like - -
- ident = {alpha}({alpha}|{digit})*
-
-
-are only used to write rules like - -
- {ident} { .. action .. }
-
-
-and not more complex expressions like - -
- {ident}* { .. action .. }
-
-
-where the kind of error presented above would show up. -
- -
-Most of the C/C++ specific features are naturally not present in JFlex, -but most ``clean'' lex/flex lexical specifications can be ported to -JFlex without very much work. - -
-This section is by far not complete and is based mainly on a survey of -the flex man page and very little personal experience. If you do -engage in any porting activity from lex/flex to JFlex and encounter -problems, have better solutions for points presented here or have just -some tips you would like to share, please do contact me. I will -incorporate your experiences in this manual (with all due credit to you, -of course). - -
- -
-definitions -%% -rules -%% -user code -- -
-The user code section usually contains some C code that is used
-in actions of the rules part of the specification. For JFlex most
-of this code will have to be included in the class code %{..%}
-directive in the options and declarations section (after
-translating the C code to Java, of course).
-
-
- -
-Macro definitions in flex have the form: -
-<identifier> <expression> --To port them to JFlex macros, just insert a = between <identifier> -and <expression>. - -
-The syntax and semantics of regular expressions in flex are pretty much the
-same as in JFlex. A little attention is needed for some escape sequences
-present in flex (such as \a) that are not supported in JFlex. These
-escape sequences should be transformed into their octal or hexadecimal
-equivalent.
-
-
-Another point are predefined character classes. Flex offers the ones directly -supported by C, JFlex offers the ones supported by Java. These classes will -sometimes have to be listed manually (if there is need for this feature, it -may be implemented in a future JFlex version). - -
- -
^' (beginning of line) and
-'$' (end of line) operators, consider the \n character as only line terminator. This should usually cause not much problems, but you
-should be prepared for occurrences of \r or \r\n or one of
-the characters \u2028, \u2029, \u000B, \u000C,
-or \u0085. They are considered to be line terminators in Unicode and
-therefore may not be consumed when
-^ or $ is present in a rule.
--The trailing context algorithm of flex is better than the one used in -JFlex. Therefore lookahead expressions could cause major headaches. JFlex -will issue an error message at generation time, if it cannot generate -a scanner for a certain lookahead expression. (sorry, I have no more tips here -on that yet. If anyone knows how the flex lookahead algorithm works (or any better one) -and can be efficiently implemented, again: please contact me). - -
- -
- -
- -
-If your generated Lexer has the class name Scanner, the parser -is started from the a main program like this: - -
-
-...
- try {
- parser p = new parser(new Scanner(new FileReader(fileName)));
- Object result = p.parse().value;
- }
- catch (Exception e) {
-...
-
-
-- -
-The main difference between the %cup switch in -JFlex 1.2.1 and lower, and the current JFlex version is, that JFlex scanners -now automatically implement the java_cup.runtime.Scanner interface. -This means, that the scanning function now changes its name from yylex() -to next_token(). - -
-The main difference from older CUP versions to 0.10j is, that CUP now -has a default constructor that accepts a java_cup.runtime.Scanner -as argument and that uses this scanner as -default (so no scan with code is necessary any more). - -
-If you have an existing CUP specification, it will probably look somewhat like this: -
-parser code {:
- Lexer lexer;
-
- public parser (java.io.Reader input) {
- lexer = new Lexer(input);
- }
-:};
-
-scan with {: return lexer.yylex(); :};
-
-
--To upgrade to CUP 0.10j, you could change it to look like this: -
-parser code {:
- public parser (java.io.Reader input) {
- super(new Lexer(input));
- }
-:};
-
-
--If you do not mind to change the method that is calling the parser, -you could remove the constructor entirely (and if there is nothing else -in it, the whole parser code section as well, of course). The calling -main procedure would then construct the parser as shown in the section above. - -
-The JFlex specification does not need to be changed. - -
- -
-If you have a scanner specification that begins like this: - -
-
-package PACKAGE; -import java_cup.runtime.*; /* this is convenience, but not necessary */ - -%% - -%class Lexer -%cup -.. -- -
-then it matches a CUP specification starting like - -
-
-package PACKAGE;
-
-parser code {:
- Lexer lexer;
-
- public parser (java.io.Reader input) {
- lexer = new Lexer(input);
- }
-:};
-
-scan with {: return lexer.next_token(); :};
-
-..
-
-
--This assumes that the generated parser will get the name parser. -If it doesn't, you have to adjust the constructor name. - -
-The parser can then be started in a main routine like this: - -
-
-..
- try {
- parser p = new parser(new FileReader(fileName));
- Object result = p.parse().value;
- }
- catch (Exception e) {
-..
-
-
--If you want the parser specification to be independent of the name of the generated -scanner, you can instead write an interface Lexer - -
-
-public interface Lexer {
- public java_cup.runtime.Symbol next_token() throws java.io.IOException;
-}
-
-
--change the parser code to: - -
-
-package PACKAGE;
-
-parser code {:
- Lexer lexer;
-
- public parser (Lexer lexer) {
- this.lexer = lexer;
- }
-:};
-
-scan with {: return lexer.next_token(); :};
-
-..
-
-
--tell JFlex about the Lexer -interface using the %implements -directive: - -
-
-.. -%class Scanner /* not Lexer now since that is our interface! */ -%implements Lexer -%cup -.. -- -
-and finally change the main routine to look like - -
-
-...
- try {
- parser p = new parser(new Scanner(new FileReader(fileName)));
- Object result = p.parse().value;
- }
- catch (Exception e) {
-...
-
-
--If you want to improve the error messages that CUP generated parsers -produce, you can also override the methods report_error and report_fatal_error -in the ``parser code'' section of the CUP specification. The new methods -could for instance use yyline and yycolumn (stored in -the left and right members of class java_cup.runtime.Symbol) -to report error positions more conveniently for the user. The lexer and -parser for the Java language in the examples/java directory of the -JFlex distribution use this style of error reporting. These specifications -also demonstrate the techniques above in action. - -
- -
-JFlex has builtin support for the Java extension -BYacc/J -[9] by Bob Jamison -to the classical Berkeley Yacc parser generator. -This section describes how to interface BYacc/J with JFlex. It -builds on many helpful suggestions and comments from Larry Bell. - -
-Since Yacc's architecture is a bit different from CUP's, the -interface setup also works in a slightly different manner. -BYacc/J expects a function int yylex() in the parser -class that returns each next token. Semantic values are expected -in a field yylval of type parserval where ``parser'' -is the name of the generated parser class. - -
-For a small calculator example, one could use a setup like the -following on the JFlex side: - -
-
-%%
-
-%byaccj
-
-%{
- /* store a reference to the parser object */
- private parser yyparser;
-
- /* constructor taking an additional parser object */
- public Yylex(java.io.Reader r, parser yyparser) {
- this(r);
- this.yyparser = yyparser;
- }
-%}
-
-NUM = [0-9]+ ("." [0-9]+)?
-NL = \n | \r | \r\n
-
-%%
-
-/* operators */
-"+" |
-..
-"(" |
-")" { return (int) yycharat(0); }
-
-/* newline */
-{NL} { return parser.NL; }
-
-/* float */
-{NUM} { yyparser.yylval = new parserval(Double.parseDouble(yytext()));
- return parser.NUM; }
-
-
--The lexer expects a reference to the parser in its constructor. -Since Yacc allows direct use of terminal characters like '+' -in its specifications, we just return the character code for -single char matches (e.g. the operators in the example). Symbolic -token names are stored as public static int constants in -the generated parser class. They are used as in the NL token -above. Finally, for some tokens, a semantic value may have to be -communicated to the parser. The NUM rule demonstrates that -bit. - -
-A matching BYacc/J parser specification could look like this: -
-%{
- import java.io.*;
-%}
-
-%token NL /* newline */
-%token <dval> NUM /* a number */
-
-%type <dval> exp
-
-%left '-' '+'
-..
-%right '^' /* exponentiation */
-
-%%
-
-..
-
-exp: NUM { $$ = $1; }
- | exp '+' exp { $$ = $1 + $3; }
- ..
- | exp '^' exp { $$ = Math.pow($1, $3); }
- | '(' exp ')' { $$ = $2; }
- ;
-
-%%
- /* a reference to the lexer object */
- private Yylex lexer;
-
- /* interface to the lexer */
- private int yylex () {
- int yyl_return = -1;
- try {
- yyl_return = lexer.yylex();
- }
- catch (IOException e) {
- System.err.println("IO error :"+e);
- }
- return yyl_return;
- }
-
- /* error reporting */
- public void yyerror (String error) {
- System.err.println ("Error: " + error);
- }
-
- /* lexer is created in the constructor */
- public parser(Reader r) {
- lexer = new Yylex(r, this);
- }
-
- /* that's how you use the parser */
- public static void main(String args[]) throws IOException {
- parser yyparser = new parser(new FileReader(args[0]));
- yyparser.yyparse();
- }
-
-
--Here, the customized part is mostly in the user code section: -We create the lexer in the constructor of the parser and store -a reference to it for later use in the parser's int yylex() -method. This yylex in the parser only calls int yylex() -of the generated lexer and passes the result on. If something goes -wrong, it returns -1 to indicate an error. - -
-Runnable versions of the specifications above -are located in the examples/byaccj directory of the JFlex -distribution. - -
- -
- -
- -
-As of April 12, 2004 the following bugs are known in JFlex: - -
-Workaround: Check lookahead expressions manually. A lookahead expression - r1/r2 is ok, if no postfix of r1 can match a prefix of r2. -
-If you find new ones, please use the bugs section of the -JFlex website -to report them. - -
- -
-There is absolutely NO WARRANTY for JFlex, its code and its documentation. - -
-The code generated by JFlex inherits the copyright of the specification it -was produced from. If it was your specification, you may use the generated -code without restriction. - -
-See the file COPYRIGHT -for more information. - -
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-- * Most of the time you want to do character encoding translation when translating bytes to - * characters. If you are planning on displaying the text, you should always do this and should - * use an InputStreamReader for the purpose. Sometimes it is useful to treat characters as bytes - * with some extra bits. In these cases you would want to use a StraightStreamReader. - *
- * For top efficiency, consider wrapping an StraightStreamReader within a BufferedReader. For example:
- * This method creates a tempory file in the working directory called "test.txt".
- * This file should not exist before hand, and the program should have create,
- * read, write, and delete access to this file.
- *
- * @param args command line arguments (ignored)
- */
- private static void main(String[] args){
- try {
- File f = new File("test.txt");
- if (f.exists()){
- throw new IOException(f + " already exists. I don't want to overwrite it.");
- }
- StraightStreamReader in;
- char[] cbuf = new char[0x1000];
- int read;
- int totRead;
-
- // write a file with all possible values of bytes
- FileOutputStream out = new FileOutputStream(f);
- for (int i=0x00; i<0x100; i++){
- out.write(i);
- }
- out.close();
-
- // read it back using the read single character method
- in = new StraightStreamReader(new FileInputStream(f));
- for (int i=0x00; i<0x100; i++){
- read = in.read();
- if (read != i){
- System.err.println("Error: " + i + " read as " + read);
- }
- }
- in.close();
-
- // read as much of it back as possible with one simple buffer read.
- in = new StraightStreamReader(new FileInputStream(f));
- totRead = in.read(cbuf);
- if (totRead != 0x100){
- System.err.println("Simple buffered read did not read the full amount: 0x" + Integer.toHexString(totRead));
- }
- for (int i=0x00; i
- * The caseless version contains all characters of this char set,
- * and additionally all lower/upper/title case variants of the
- * characters in this set.
- *
- * @return a caseless copy of this set
- */
- public IntCharSet getCaseless() {
- IntCharSet n = copy();
-
- int size = intervalls.size();
- for (int i=0; i < size; i++) {
- Interval elem = (Interval) intervalls.elementAt(i);
- for (char c = elem.start; c <= elem.end; c++) {
- n.add(Character.toLowerCase(c));
- n.add(Character.toUpperCase(c));
- n.add(Character.toTitleCase(c));
- }
- }
-
- return n;
- }
-
-
- /**
- * Make a string representation of this char set.
- *
- * @return a string representing this char set.
- */
- public String toString() {
- StringBuffer result = new StringBuffer("{ ");
-
- for (int i = 0; i < intervalls.size(); i++)
- result.append( intervalls.elementAt(i) );
-
- result.append(" }");
-
- return result.toString();
- }
-
-
- /**
- * Return a (deep) copy of this char set
- *
- * @return the copy
- */
- public IntCharSet copy() {
- IntCharSet result = new IntCharSet();
- int size = intervalls.size();
- for (int i=0; i < size; i++) {
- Interval iv = ((Interval) intervalls.elementAt(i)).copy();
- result.intervalls.addElement(iv);
- }
- return result;
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/IntPair.java b/tools/lexer/jflex-1.4/src/JFlex/IntPair.java
deleted file mode 100644
index 877bd10ce315..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/IntPair.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein
- * The definition will either be the same as stored (expand() not
- * called), or an equivalent one, that doesn't contain any macro
- * usages (expand() called before).
- *
- * @param name the name of the macro
- *
- * @return the definition of the macro,
- *
- * To control the decision of whether to shift or reduce at any given point,
- * the parser uses a state machine (the "viable prefix recognition machine"
- * built by the parser generator). The current state of the machine is placed
- * on top of the parse stack (stored as part of a Symbol object representing
- * a terminal or non terminal). The parse action table is consulted
- * (using the current state and the current lookahead Symbol as indexes) to
- * determine whether to shift or to reduce. When the parser shifts, it
- * changes to a new state by pushing a new Symbol (containing a new state)
- * onto the stack. When the parser reduces, it pops the handle (right hand
- * side of a production) off the stack. This leaves the parser in the state
- * it was in before any of those Symbols were matched. Next the reduce-goto
- * table is consulted (using the new state and current lookahead Symbol as
- * indexes) to determine a new state to go to. The parser then shifts to
- * this goto state by pushing the left hand side Symbol of the production
- * (also containing the new state) onto the stack.
- *
- * This class actually provides four LR parsers. The methods parse() and
- * debug_parse() provide two versions of the main parser (the only difference
- * being that debug_parse() emits debugging trace messages as it parses).
- * In addition to these main parsers, the error recovery mechanism uses two
- * more. One of these is used to simulate "parsing ahead" in the input
- * without carrying out actions (to verify that a potential error recovery
- * has worked), and the other is used to parse through buffered "parse ahead"
- * input in order to execute all actions and re-synchronize the actual parser
- * configuration.
- *
- * This is an abstract class which is normally filled out by a subclass
- * generated by the JavaCup parser generator. In addition to supplying
- * the actual parse tables, generated code also supplies methods which
- * invoke various pieces of user supplied code, provide access to certain
- * special Symbols (e.g., EOF and error), etc. Specifically, the following
- * abstract methods are normally supplied by generated code:
- *
- * BufferedReader in = new BufferedReader(new StraightStreamReader(System.in));
- */
-public class StraightStreamReader extends Reader{
-
- /**
- * The input stream from which all methods in this class read.
- */
- private InputStream in;
-
- /**
- * A byte array to be used for calls to the InputStream. This
- * is cached as a class variable to avoid object creation and
- * deletion each time a read is called. This buffer may be
- * null and may not be large enough. Make sure to check it
- * before using it.
- */
- private byte[] buffer;
-
- /**
- * Create a StraightStreamReader from an InputStream
- *
- * @param in InputStream to wrap a Reader around.
- */
- public StraightStreamReader(InputStream in) {
- this.in = in;
- }
-
- /**
- * Close the stream.
- *
- * @throws IOException If an I/O error occurs
- */
- public void close() throws IOException {
- in.close();
- }
-
- /**
- * Mark the present position in the stream. Subsequent calls to reset()
- * will attempt to reposition the stream to this point. Not all
- * character-input streams support the mark() operation.
- *
- * @param readAheadLimit Limit on the number of characters that may be read
- * while still preserving the mark. After reading this many characters,
- * attempting to reset the stream may fail.
- * @throws IOException If the stream does not support mark(), or if some other I/O error occurs
- */
- public void mark(int readAheadLimit) throws IOException {
- in.mark(readAheadLimit);
- }
-
- /**
- * Tell whether this stream supports the mark() operation.
- *
- * @return true if and only if this stream supports the mark operation.
- */
- public boolean markSupported(){
- return in.markSupported();
- }
-
- /**
- * Read a single character. This method will block until a character is available, an
- * I/O error occurs, or the end of the stream is reached.
- *
- * @return The character read, as an integer in the range 0 to 256 (0x00-0xff), or -1 if
- * the end of the stream has been reached
- * @throws IOException If an I/O error occurs
- */
- public int read() throws IOException {
- return in.read();
- }
-
- /**
- * Read characters into an array. This method will block until some input is available,
- * an I/O error occurs, or the end of the stream is reached.
- *
- * @param cbuf Destination buffer
- * @return The number of bytes read, or -1 if the end of the stream has been reached
- * @throws IOException If an I/O error occurs
- */
- public int read(char[] cbuf) throws IOException {
- return read(cbuf, 0, cbuf.length);
- }
-
- /**
- * Read characters into an array. This method will block until some input is available,
- * an I/O error occurs, or the end of the stream is reached.
- *
- * @param cbuf Destination buffer
- * @param off Offset at which to start storing characters
- * @param len Maximum number of characters to read
- * @return The number of bytes read, or -1 if the end of the stream has been reached
- * @throws IOException If an I/O error occurs
- */
- public int read(char[] cbuf, int off, int len) throws IOException {
- // ensure the capacity of the buffer that we will be using
- // to read from the input stream
- if (buffer == null || buffer.length < len){
- buffer = new byte[len];
- }
- // read from the input stream and copy it to the character array
- int length = in.read(buffer, 0, len);
- for (int i=0; istart
- * to end
- */
- private long parseLong(int start, int end, int radix) {
- long result = 0;
- long digit;
-
- for (int i = start; i < end; i++) {
- digit = Character.digit(yycharat(i),radix);
- result*= radix;
- result+= digit;
- }
-
- return result;
- }
-%}
-
-/* main character classes */
-LineTerminator = \r|\n|\r\n
-InputCharacter = [^\r\n]
-
-WhiteSpace = {LineTerminator} | [ \t\f]
-
-/* comments */
-Comment = {TraditionalComment} | {EndOfLineComment} |
- {DocumentationComment}
-
-TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/"
-EndOfLineComment = "//" {InputCharacter}* {LineTerminator}?
-DocumentationComment = "/*" "*"+ [^/*] ~"*/"
-
-/* identifiers */
-Identifier = [:jletter:][:jletterdigit:]*
-
-/* integer literals */
-DecIntegerLiteral = 0 | [1-9][0-9]*
-DecLongLiteral = {DecIntegerLiteral} [lL]
-
-HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8}
-HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL]
-HexDigit = [0-9a-fA-F]
-
-OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15}
-OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL]
-OctDigit = [0-7]
-
-/* floating point literals */
-FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF]
-DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}?
-
-FLit1 = [0-9]+ \. [0-9]*
-FLit2 = \. [0-9]+
-FLit3 = [0-9]+
-Exponent = [eE] [+-]? [0-9]+
-
-/* string and character literals */
-StringCharacter = [^\r\n\"\\]
-SingleCharacter = [^\r\n\'\\]
-
-%state STRING, CHARLITERAL
-
-%%
-
-reduce_goto table. */
- protected static final short[][] _reduce_table =
- unpackFromStrings(new String[] {
-- "\000\156\000\004\006\004\001\001\000\004\003\007\001" +
-+ "\000\214\000\004\005\004\001\001\000\004\002\007\001" +
- "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-- "\000\004\004\012\001\001\000\002\001\001\000\010\005" +
-- "\116\017\114\022\117\001\001\000\002\001\001\000\002" +
-- "\001\001\000\002\001\001\000\002\001\001\000\016\007" +
-- "\025\010\032\011\037\012\042\013\035\021\026\001\001" +
-+ "\000\004\003\012\001\001\000\002\001\001\000\010\004" +
-+ "\154\016\152\021\155\001\001\000\002\001\001\000\002" +
-+ "\001\001\000\002\001\001\000\002\001\001\000\016\006" +
-+ "\026\007\027\010\064\011\044\012\056\020\045\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-- "\002\001\001\000\012\011\112\012\042\013\035\021\026" +
-+ "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-+ "\001\001\000\002\001\001\000\012\010\106\011\044\012" +
-+ "\056\020\045\001\001\000\002\001\001\000\002\001\001" +
-+ "\000\002\001\001\000\002\001\001\000\012\010\147\011" +
-+ "\044\012\056\020\045\001\001\000\002\001\001\000\002" +
-+ "\001\001\000\002\001\001\000\012\010\146\011\044\012" +
-+ "\056\020\045\001\001\000\002\001\001\000\002\001\001" +
-+ "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-+ "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-- "\000\012\011\110\012\042\013\035\021\026\001\001\000" +
-- "\016\007\104\010\032\011\037\012\042\013\035\021\026" +
-- "\001\001\000\002\001\001\000\002\001\001\000\012\011" +
-- "\103\012\042\013\035\021\026\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-- "\010\015\045\020\053\021\044\001\001\000\002\001\001" +
-- "\000\002\001\001\000\010\015\045\020\070\021\044\001" +
-- "\001\000\010\015\045\020\064\021\044\001\001\000\002" +
-- "\001\001\000\002\001\001\000\002\001\001\000\006\015" +
-- "\060\021\057\001\001\000\002\001\001\000\002\001\001" +
-+ "\010\014\116\017\117\020\111\001\001\000\002\001\001" +
-+ "\000\016\006\102\007\027\010\064\011\044\012\056\020" +
-+ "\045\001\001\000\002\001\001\000\002\001\001\000\002" +
-+ "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-+ "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-- "\002\001\001\000\002\001\001\000\002\001\001\000\006" +
-- "\015\060\021\057\001\001\000\002\001\001\000\010\015" +
-- "\045\020\072\021\044\001\001\000\002\001\001\000\006" +
-- "\015\060\021\057\001\001\000\002\001\001\000\006\015" +
-- "\060\021\057\001\001\000\002\001\001\000\002\001\001" +
-- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-+ "\002\001\001\000\014\007\105\010\064\011\044\012\056" +
-+ "\020\045\001\001\000\002\001\001\000\012\010\106\011" +
-+ "\044\012\056\020\045\001\001\000\002\001\001\000\002" +
-+ "\001\001\000\002\001\001\000\002\001\001\000\010\014" +
-+ "\116\017\133\020\111\001\001\000\010\014\116\017\127" +
-+ "\020\111\001\001\000\002\001\001\000\002\001\001\000" +
-+ "\002\001\001\000\006\014\124\020\121\001\001\000\002" +
-+ "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-+ "\001\000\002\001\001\000\010\014\116\017\131\020\111" +
-+ "\001\001\000\002\001\001\000\006\014\124\020\121\001" +
-+ "\001\000\002\001\001\000\006\014\124\020\121\001\001" +
-+ "\000\002\001\001\000\006\014\124\020\121\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-- "\001\001\000\002\001\001\000\014\010\107\011\037\012" +
-- "\042\013\035\021\026\001\001\000\002\001\001\000\012" +
-- "\011\110\012\042\013\035\021\026\001\001\000\002\001" +
-- "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-- "\000\004\023\140\001\001\000\004\016\132\001\001\000" +
-- "\002\001\001\000\006\005\121\017\114\001\001\000\004" +
-- "\016\122\001\001\000\002\001\001\000\002\001\001\000" +
-- "\002\001\001\000\004\016\125\001\001\000\002\001\001" +
-- "\000\002\001\001\000\010\005\116\017\114\022\130\001" +
-- "\001\000\006\005\121\017\114\001\001\000\002\001\001" +
-- "\000\002\001\001\000\002\001\001\000\010\005\116\017" +
-- "\114\022\135\001\001\000\006\005\121\017\114\001\001" +
-- "\000\002\001\001\000\002\001\001\000\016\007\142\010" +
-- "\032\011\037\012\042\013\035\021\026\001\001\000\002" +
-- "\001\001\000\010\014\147\024\144\025\150\001\001\000" +
-- "\002\001\001\000\002\001\001\000\016\007\155\010\032" +
-- "\011\037\012\042\013\035\021\026\001\001\000\002\001" +
-- "\001\000\004\024\153\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-- "" });
-+ "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-+ "\002\001\001\000\004\022\176\001\001\000\004\015\170" +
-+ "\001\001\000\002\001\001\000\006\004\157\016\152\001" +
-+ "\001\000\004\015\160\001\001\000\002\001\001\000\002" +
-+ "\001\001\000\002\001\001\000\004\015\163\001\001\000" +
-+ "\002\001\001\000\002\001\001\000\010\004\154\016\152" +
-+ "\021\166\001\001\000\006\004\157\016\152\001\001\000" +
-+ "\002\001\001\000\002\001\001\000\002\001\001\000\010" +
-+ "\004\154\016\152\021\173\001\001\000\006\004\157\016" +
-+ "\152\001\001\000\002\001\001\000\002\001\001\000\016" +
-+ "\006\200\007\027\010\064\011\044\012\056\020\045\001" +
-+ "\001\000\002\001\001\000\010\013\205\023\202\024\206" +
-+ "\001\001\000\002\001\001\000\002\001\001\000\016\006" +
-+ "\213\007\027\010\064\011\044\012\056\020\045\001\001" +
-+ "\000\002\001\001\000\004\023\211\001\001\000\002\001" +
-+ "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-+ "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-+ "\002\001\001" });
-
- /** Access to reduce_goto table. */
- public short[][] reduce_table() {return _reduce_table;}
-@@ -468,7 +1112,7 @@
-
-
- LexScan scanner;
-- CharClasses charClasses = new CharClasses(0xFFFF);
-+ CharClasses charClasses = new CharClasses(Options.jlex ? 127 : 0xFFFF);
- RegExps regExps = new RegExps();
- Macros macros = new Macros();
- Integer stateNumber;
-@@ -518,6 +1162,96 @@
- case sym.LOWERCLASS:
- return Character.isLowerCase(c);
-
-+ case sym.UNICODE_UNASSIGNED:
-+ return Character.getType(c) == Character.UNASSIGNED;
-+
-+ case sym.UNICODE_UPPERCASE_LETTER:
-+ return Character.getType(c) == Character.UPPERCASE_LETTER;
-+
-+ case sym.UNICODE_LOWERCASE_LETTER:
-+ return Character.getType(c) == Character.LOWERCASE_LETTER;
-+
-+ case sym.UNICODE_TITLECASE_LETTER:
-+ return Character.getType(c) == Character.TITLECASE_LETTER;
-+
-+ case sym.UNICODE_MODIFIER_LETTER:
-+ return Character.getType(c) == Character.MODIFIER_LETTER;
-+
-+ case sym.UNICODE_OTHER_LETTER:
-+ return Character.getType(c) == Character.OTHER_LETTER;
-+
-+ case sym.UNICODE_NON_SPACING_MARK:
-+ return Character.getType(c) == Character.NON_SPACING_MARK;
-+
-+ case sym.UNICODE_ENCLOSING_MARK:
-+ return Character.getType(c) == Character.ENCLOSING_MARK;
-+
-+ case sym.UNICODE_COMBINING_SPACING_MARK:
-+ return Character.getType(c) == Character.COMBINING_SPACING_MARK;
-+
-+ case sym.UNICODE_DECIMAL_DIGIT_NUMBER:
-+ return Character.getType(c) == Character.DECIMAL_DIGIT_NUMBER;
-+
-+ case sym.UNICODE_LETTER_NUMBER:
-+ return Character.getType(c) == Character.LETTER_NUMBER;
-+
-+ case sym.UNICODE_OTHER_NUMBER:
-+ return Character.getType(c) == Character.OTHER_NUMBER;
-+
-+ case sym.UNICODE_SPACE_SEPARATOR:
-+ return Character.getType(c) == Character.SPACE_SEPARATOR;
-+
-+ case sym.UNICODE_LINE_SEPARATOR:
-+ return Character.getType(c) == Character.LINE_SEPARATOR;
-+
-+ case sym.UNICODE_PARAGRAPH_SEPARATOR:
-+ return Character.getType(c) == Character.PARAGRAPH_SEPARATOR;
-+
-+ case sym.UNICODE_CONTROL:
-+ return Character.getType(c) == Character.CONTROL;
-+
-+ case sym.UNICODE_FORMAT:
-+ return Character.getType(c) == Character.FORMAT;
-+
-+ case sym.UNICODE_PRIVATE_USE:
-+ return Character.getType(c) == Character.PRIVATE_USE;
-+
-+ case sym.UNICODE_SURROGATE:
-+ return Character.getType(c) == Character.SURROGATE;
-+
-+ case sym.UNICODE_DASH_PUNCTUATION:
-+ return Character.getType(c) == Character.DASH_PUNCTUATION;
-+
-+ case sym.UNICODE_START_PUNCTUATION:
-+ return Character.getType(c) == Character.START_PUNCTUATION;
-+
-+ case sym.UNICODE_END_PUNCTUATION:
-+ return Character.getType(c) == Character.END_PUNCTUATION;
-+
-+ case sym.UNICODE_CONNECTOR_PUNCTUATION:
-+ return Character.getType(c) == Character.CONNECTOR_PUNCTUATION;
-+
-+ case sym.UNICODE_OTHER_PUNCTUATION:
-+ return Character.getType(c) == Character.OTHER_PUNCTUATION;
-+
-+ case sym.UNICODE_MATH_SYMBOL:
-+ return Character.getType(c) == Character.MATH_SYMBOL;
-+
-+ case sym.UNICODE_CURRENCY_SYMBOL:
-+ return Character.getType(c) == Character.CURRENCY_SYMBOL;
-+
-+ case sym.UNICODE_MODIFIER_SYMBOL:
-+ return Character.getType(c) == Character.MODIFIER_SYMBOL;
-+
-+ case sym.UNICODE_OTHER_SYMBOL:
-+ return Character.getType(c) == Character.OTHER_SYMBOL;
-+
-+ case sym.UNICODE_INITIAL_QUOTE_PUNCTUATION:
-+ return Character.getType(c) == Character.INITIAL_QUOTE_PUNCTUATION;
-+
-+ case sym.UNICODE_FINAL_QUOTE_PUNCTUATION:
-+ return Character.getType(c) == Character.FINAL_QUOTE_PUNCTUATION;
-+
- default: return false;
- }
- }
-@@ -637,227 +1371,497 @@
- switch (CUP$LexParse$act_num)
- {
- /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 104: // preclass ::= UNICODE_FINAL_QUOTE_PUNCTUATION
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_FINAL_QUOTE_PUNCTUATION);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 103: // preclass ::= UNICODE_INITIAL_QUOTE_PUNCTUATION
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_INITIAL_QUOTE_PUNCTUATION);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 102: // preclass ::= UNICODE_OTHER_SYMBOL
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_OTHER_SYMBOL);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 101: // preclass ::= UNICODE_MODIFIER_SYMBOL
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_MODIFIER_SYMBOL);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 100: // preclass ::= UNICODE_CURRENCY_SYMBOL
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_CURRENCY_SYMBOL);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 99: // preclass ::= UNICODE_MATH_SYMBOL
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_MATH_SYMBOL);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 98: // preclass ::= UNICODE_OTHER_PUNCTUATION
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_OTHER_PUNCTUATION);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 97: // preclass ::= UNICODE_CONNECTOR_PUNCTUATION
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_CONNECTOR_PUNCTUATION);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 96: // preclass ::= UNICODE_END_PUNCTUATION
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_END_PUNCTUATION);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 95: // preclass ::= UNICODE_START_PUNCTUATION
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_START_PUNCTUATION);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 94: // preclass ::= UNICODE_DASH_PUNCTUATION
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_DASH_PUNCTUATION);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 93: // preclass ::= UNICODE_SURROGATE
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_SURROGATE);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 92: // preclass ::= UNICODE_PRIVATE_USE
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_PRIVATE_USE);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 91: // preclass ::= UNICODE_FORMAT
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_FORMAT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 90: // preclass ::= UNICODE_CONTROL
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_CONTROL);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 89: // preclass ::= UNICODE_PARAGRAPH_SEPARATOR
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_PARAGRAPH_SEPARATOR);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 88: // preclass ::= UNICODE_LINE_SEPARATOR
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_LINE_SEPARATOR);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 87: // preclass ::= UNICODE_SPACE_SEPARATOR
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_SPACE_SEPARATOR);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 86: // preclass ::= UNICODE_OTHER_NUMBER
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_OTHER_NUMBER);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 85: // preclass ::= UNICODE_LETTER_NUMBER
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_LETTER_NUMBER);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 84: // preclass ::= UNICODE_DECIMAL_DIGIT_NUMBER
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_DECIMAL_DIGIT_NUMBER);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 83: // preclass ::= UNICODE_COMBINING_SPACING_MARK
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_COMBINING_SPACING_MARK);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 82: // preclass ::= UNICODE_ENCLOSING_MARK
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_ENCLOSING_MARK);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 81: // preclass ::= UNICODE_NON_SPACING_MARK
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_NON_SPACING_MARK);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 80: // preclass ::= UNICODE_OTHER_LETTER
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_OTHER_LETTER);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 79: // preclass ::= UNICODE_MODIFIER_LETTER
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_MODIFIER_LETTER);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 78: // preclass ::= UNICODE_TITLECASE_LETTER
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_TITLECASE_LETTER);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 77: // preclass ::= UNICODE_LOWERCASE_LETTER
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_LOWERCASE_LETTER);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 76: // preclass ::= UNICODE_UPPERCASE_LETTER
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_UPPERCASE_LETTER);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
-+ case 75: // preclass ::= UNICODE_UNASSIGNED
-+ {
-+ Vector RESULT =null;
-+ RESULT = makePreClass(sym.UNICODE_UNASSIGNED);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
-+ }
-+ return CUP$LexParse$result;
-+
-+ /*. . . . . . . . . . . . . . . . . . . .*/
- case 74: // preclass ::= LOWERCLASS
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- RESULT = makePreClass(sym.LOWERCLASS);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(15/*preclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 73: // preclass ::= UPPERCLASS
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- RESULT = makePreClass(sym.UPPERCLASS);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(15/*preclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 72: // preclass ::= DIGITCLASS
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- RESULT = makePreClass(sym.DIGITCLASS);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(15/*preclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 71: // preclass ::= LETTERCLASS
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- RESULT = makePreClass(sym.LETTERCLASS);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(15/*preclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 70: // preclass ::= JLETTERDIGITCLASS
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- RESULT = makePreClass(sym.JLETTERDIGITCLASS);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(15/*preclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 69: // preclass ::= JLETTERCLASS
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- RESULT = makePreClass(sym.JLETTERCLASS);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(15/*preclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 68: // classcontentelem ::= CHAR
- {
-- Interval RESULT = null;
-+ Interval RESULT =null;
-- int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Character c = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Character c = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Interval(c.charValue(), c.charValue());
-- CUP$LexParse$result = new java_cup.runtime.Symbol(11/*classcontentelem*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontentelem",10, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 67: // classcontentelem ::= CHAR DASH CHAR
- {
-- Interval RESULT = null;
-+ Interval RESULT =null;
- int c1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int c1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- Character c1 = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
-- int c2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int c2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Character c2 = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int c2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int c2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Character c2 = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Interval(c1.charValue(), c2.charValue());
-- CUP$LexParse$result = new java_cup.runtime.Symbol(11/*classcontentelem*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontentelem",10, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 66: // classcontent ::= MACROUSE
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
-- int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- syntaxError(ErrorMessages.CHARCLASS_MACRO, identleft, identright);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(14/*classcontent*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 65: // classcontent ::= classcontent MACROUSE
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- syntaxError(ErrorMessages.CHARCLASS_MACRO, identleft, identright);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(14/*classcontent*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 64: // classcontent ::= STRING
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
-- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- String s = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ String s = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- RESULT = new Vector();
- for (int i = 0; i < s.length(); i++)
- RESULT.addElement(new Interval(s.charAt(i),s.charAt(i)));
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(14/*classcontent*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 63: // classcontent ::= classcontent STRING
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- String s = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ String s = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- for (int i = 0; i < s.length(); i++)
- list.addElement(new Interval(s.charAt(i),s.charAt(i)));
- RESULT = list;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(14/*classcontent*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 62: // classcontent ::= preclass
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
-- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = list;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(14/*classcontent*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 61: // classcontent ::= classcontent preclass
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int plistleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int plistright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Vector plist = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int plistleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int plistright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Vector plist = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- for (Enumeration e = plist.elements(); e.hasMoreElements();)
- list.addElement(e.nextElement());
- RESULT = list;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(14/*classcontent*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 60: // classcontent ::= classcontentelem
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
-- int elemleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int elemright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Interval elem = (Interval)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int elemleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int elemright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Interval elem = (Interval)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- Vector list = new Vector();
- list.addElement(elem);
- RESULT = list;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(14/*classcontent*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 59: // classcontent ::= classcontent classcontentelem
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int elemleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int elemright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Interval elem = (Interval)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int elemleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int elemright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Interval elem = (Interval)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- list.addElement(elem);
- RESULT = list;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(14/*classcontent*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 58: // charclass ::= OPENCLASS HAT DASH classcontent CLOSECLASS
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- list.addElement(new Interval('-','-'));
-@@ -868,20 +1872,20 @@
- }
- RESULT = new RegExp1(sym.CCLASSNOT,list);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(9/*charclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 57: // charclass ::= OPENCLASS DASH classcontent CLOSECLASS
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- list.addElement(new Interval('-','-'));
-@@ -892,20 +1896,20 @@
- }
- RESULT = new RegExp1(sym.CCLASS,list);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(9/*charclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 56: // charclass ::= OPENCLASS HAT classcontent CLOSECLASS
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- charClasses.makeClassNot(list, Options.jlex && scanner.caseless);
-@@ -915,17 +1919,17 @@
- }
- RESULT = new RegExp1(sym.CCLASSNOT,list);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(9/*charclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 55: // charclass ::= OPENCLASS HAT CLOSECLASS
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- Vector list = new Vector();
- list.addElement(new Interval((char)0,CharClasses.maxChar));
-@@ -937,20 +1941,20 @@
- }
- RESULT = new RegExp1(sym.CCLASS,list);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(9/*charclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 54: // charclass ::= OPENCLASS classcontent CLOSECLASS
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- charClasses.makeClass(list, Options.jlex && scanner.caseless);
-@@ -960,28 +1964,28 @@
- }
- RESULT = new RegExp1(sym.CCLASS,list);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(9/*charclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 53: // charclass ::= OPENCLASS CLOSECLASS
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-
- RESULT = new RegExp1(sym.CCLASS,null);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(9/*charclass*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 52: // regexp ::= CHAR
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Character c = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Character c = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- if ( scanner.caseless ) {
-@@ -997,14 +2001,14 @@
- syntaxError(ErrorMessages.CS2SMALL_CHAR, cleft, cright);
- }
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 51: // regexp ::= POINT
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-
- Vector any = new Vector();
- any.addElement(new Interval('\n','\n'));
-@@ -1012,17 +2016,17 @@
- charClasses.makeClass('\n', false);
- RESULT = new RegExp1(sym.CCLASSNOT, any);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 50: // regexp ::= STRING
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int strleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int strright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- String str = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int strleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int strright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ String str = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- if ( scanner.caseless ) {
-@@ -1039,17 +2043,17 @@
- }
-
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 49: // regexp ::= preclass
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- // assumption [correct?]: preclasses are already closed under case
-@@ -1060,29 +2064,29 @@
- }
- RESULT = new RegExp1(sym.CCLASS, list);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 48: // regexp ::= charclass
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- RegExp c = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ RegExp c = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = c;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 47: // regexp ::= MACROUSE
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- if ( !scanner.macroDefinition ) {
- if ( ! macros.markUsed(ident) )
-@@ -1091,26 +2095,26 @@
- }
- RESULT = new RegExp1(sym.MACROUSE, ident);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 46: // regexp ::= OPENBRACKET series CLOSEBRACKET
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = r;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 45: // regexp ::= regexp REPEAT REPEAT RBRACE
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
-@@ -1121,205 +2125,205 @@
- int n2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Integer n2 = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = makeRepeat(r, n1.intValue(), n2.intValue(), n1left, n2right);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 44: // regexp ::= regexp REPEAT RBRACE
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
- int nleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int nright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Integer n = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int bleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int bright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Object b = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int bleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int bright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Object b = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = makeRepeat(r, n.intValue(), n.intValue(), bleft, bright);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 43: // regexp ::= regexp QUESTION
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = new RegExp1(sym.QUESTION, r);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 42: // regexp ::= regexp PLUS
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = new RegExp1(sym.PLUS, r);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 41: // regexp ::= regexp STAR
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = new RegExp1(sym.STAR, r);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(8/*regexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 40: // nregexp ::= TILDE nregexp
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new RegExp1(sym.TILDE, r);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(7/*nregexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("nregexp",6, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 39: // nregexp ::= BANG nregexp
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new RegExp1(sym.BANG, r);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(7/*nregexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("nregexp",6, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 38: // nregexp ::= regexp
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = r;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(7/*nregexp*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("nregexp",6, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 37: // concs ::= nregexp
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = r;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(6/*concs*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("concs",5, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 36: // concs ::= concs nregexp
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int r1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int r1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r1 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int r2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int r2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- RegExp r2 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int r2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int r2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ RegExp r2 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new RegExp2(sym.CONCAT, r1, r2);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(6/*concs*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("concs",5, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 35: // series ::= BAR
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int bleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int bright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Object b = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int bleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int bright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Object b = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- syntaxError(ErrorMessages.REGEXP_EXPECTED, bleft, bright);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(5/*series*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("series",4, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 34: // series ::= concs
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = r;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(5/*series*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("series",4, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 33: // series ::= series BAR concs
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int r1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int r1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- RegExp r1 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
-- int r2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int r2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- RegExp r2 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int r2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int r2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ RegExp r2 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new RegExp2(sym.BAR, r1, r2);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(5/*series*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("series",4, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 32: // hatOPT ::=
- {
-- Boolean RESULT = null;
-+ Boolean RESULT =null;
- RESULT = new Boolean(false);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(17/*hatOPT*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("hatOPT",16, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 31: // hatOPT ::= HAT
- {
-- Boolean RESULT = null;
-+ Boolean RESULT =null;
- // assumption: there is no upper case for \n
- charClasses.makeClass('\n', false);
- RESULT = new Boolean(true);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(17/*hatOPT*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("hatOPT",16, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 30: // states ::= IDENT COMMA
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
-- int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Object c = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Object c = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- syntaxError(ErrorMessages.REGEXP_EXPECTED, cleft, cright+1);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(12/*states*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("states",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 29: // states ::= IDENT
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
-- int idleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int idright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- String id = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int idleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int idright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ String id = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- Vector list = new Vector();
- stateNumber = scanner.states.getNumber( id );
-@@ -1331,20 +2335,20 @@
- }
- RESULT = list;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(12/*states*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("states",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 28: // states ::= IDENT COMMA states
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- int idleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int idright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- String id = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
-- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- stateNumber = scanner.states.getNumber( id );
- if ( stateNumber != null )
-@@ -1355,125 +2359,125 @@
- }
- RESULT = list;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(12/*states*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("states",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 27: // statesOPT ::=
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- RESULT = new Vector();
-- CUP$LexParse$result = new java_cup.runtime.Symbol(13/*statesOPT*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("statesOPT",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 26: // statesOPT ::= LESSTHAN states MORETHAN
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = list;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(13/*statesOPT*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("statesOPT",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 25: // actions ::= NOACTION
- {
-- Action RESULT = null;
-+ Action RESULT =null;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(19/*actions*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("actions",18, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 24: // actions ::= act
- {
-- Action RESULT = null;
-+ Action RESULT =null;
-- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = a;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(19/*actions*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("actions",18, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 23: // act ::= REGEXPEND ACTION
- {
-- Action RESULT = null;
-+ Action RESULT =null;
-- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = a;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(18/*act*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("act",17, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 22: // lookahead ::= LOOKAHEAD series DOLLAR
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp s = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = new RegExp2(sym.CONCAT, s, makeNL());
-- CUP$LexParse$result = new java_cup.runtime.Symbol(10/*lookahead*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("lookahead",9, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 21: // lookahead ::= LOOKAHEAD series
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
-- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = r;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(10/*lookahead*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("lookahead",9, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 20: // lookahead ::= DOLLAR
- {
-- RegExp RESULT = null;
-+ RegExp RESULT =null;
- RESULT = makeNL();
-- CUP$LexParse$result = new java_cup.runtime.Symbol(10/*lookahead*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("lookahead",9, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 19: // rule ::= error
- {
-- Integer RESULT = null;
-+ Integer RESULT =null;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(3/*rule*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 18: // rule ::= statesOPT EOFRULE ACTION
- {
-- Integer RESULT = null;
-+ Integer RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- Vector s = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
-- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Integer(regExps.insert(s, a));
-- CUP$LexParse$result = new java_cup.runtime.Symbol(3/*rule*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 17: // rule ::= statesOPT hatOPT series lookahead NOACTION
- {
-- Integer RESULT = null;
-+ Integer RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
- Vector s = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
-@@ -1486,18 +2490,18 @@
- int lleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int lright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp l = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Object a = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Object a = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- syntaxError(ErrorMessages.LOOKAHEAD_NEEDS_ACTION, aleft, aright+1);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(3/*rule*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 16: // rule ::= statesOPT hatOPT series lookahead act
- {
-- Integer RESULT = null;
-+ Integer RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
- Vector s = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
-@@ -1510,18 +2514,18 @@
- int lleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int lright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp l = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Integer(regExps.insert(rleft, s, r, a, bol, l));
-- CUP$LexParse$result = new java_cup.runtime.Symbol(3/*rule*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 15: // rule ::= statesOPT hatOPT series actions
- {
-- Integer RESULT = null;
-+ Integer RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
- Vector s = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
-@@ -1531,30 +2535,30 @@
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Integer(regExps.insert(rleft, s, r, a, bol, null));
-- CUP$LexParse$result = new java_cup.runtime.Symbol(3/*rule*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 14: // rules ::= rule
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
-- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Integer r = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Integer r = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Vector(); RESULT.addElement(r);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(16/*rules*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 13: // rules ::= LESSTHAN states MORETHAN LBRACE rules RBRACE
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- int statesleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
- int statesright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
- Vector states = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
-@@ -1572,14 +2576,14 @@
- }
- RESULT = rlist;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(16/*rules*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 12: // rules ::= rules LESSTHAN states MORETHAN LBRACE rules RBRACE
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- int rlist1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)).left;
- int rlist1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)).right;
- Vector rlist1 = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)).value;
-@@ -1601,41 +2605,41 @@
- }
- RESULT = rlist1;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(16/*rules*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 11: // rules ::= rules rule
- {
-- Vector RESULT = null;
-+ Vector RESULT =null;
- int rlistleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rlistright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector rlist = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Integer r = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Integer r = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- rlist.addElement(r); RESULT = rlist;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(16/*rules*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 10: // macro ::= IDENT EQUALS
- {
-- Object RESULT = null;
-+ Object RESULT =null;
-- int eleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left;
-- int eright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right;
-- Object e = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).value;
-+ int eleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
-+ int eright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
-+ Object e = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- syntaxError(ErrorMessages.REGEXP_EXPECTED, eleft, eright);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(2/*macro*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 9: // macro ::= IDENT EQUALS series REGEXPEND
- {
-- Object RESULT = null;
-+ Object RESULT =null;
- int nameleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
- int nameright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
- String name = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
-@@ -1643,79 +2647,79 @@
- int definitionright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp definition = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- macros.insert(name, definition);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(2/*macro*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 8: // macro ::= UNICODE
- {
-- Object RESULT = null;
-+ Object RESULT =null;
- charClasses.setMaxCharCode(0xFFFF);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(2/*macro*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 7: // macro ::= FULL
- {
-- Object RESULT = null;
-+ Object RESULT =null;
- charClasses.setMaxCharCode(255);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(2/*macro*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 6: // macro ::= ASCII
- {
-- Object RESULT = null;
-+ Object RESULT =null;
- charClasses.setMaxCharCode(127);
-- CUP$LexParse$result = new java_cup.runtime.Symbol(2/*macro*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 5: // macros ::= error
- {
-- Object RESULT = null;
-+ Object RESULT =null;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(1/*macros*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macros",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 4: // macros ::= macros macro
- {
-- Object RESULT = null;
-+ Object RESULT =null;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(1/*macros*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macros",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 3: // macros ::=
- {
-- Object RESULT = null;
-+ Object RESULT =null;
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(1/*macros*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macros",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 2: // specification ::=
- {
-- NFA RESULT = null;
-+ NFA RESULT =null;
-
- fatalError(ErrorMessages.NO_LEX_SPEC);
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(4/*specification*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("specification",3, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 1: // specification ::= USERCODE macros DELIMITER rules
- {
-- NFA RESULT = null;
-+ NFA RESULT =null;
-
- scanner.t.stop();
-
-@@ -1762,19 +2766,19 @@
- Out.time(ErrorMessages.NFA_TOOK, t);
-
-
-- CUP$LexParse$result = new java_cup.runtime.Symbol(4/*specification*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("specification",3, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 0: // $START ::= specification EOF
- {
-- Object RESULT = null;
-+ Object RESULT =null;
- int start_valleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int start_valright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- NFA start_val = (NFA)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = start_val;
-- CUP$LexParse$result = new java_cup.runtime.Symbol(0/*$START*/, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-0)).right, RESULT);
-+ CUP$LexParse$result = parser.getSymbolFactory().newSymbol("$START",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- /* ACCEPT */
- CUP$LexParse$parser.done_parsing();
-Index: jflex/src/JFlex/LexScan.java
-===================================================================
---- jflex/src/JFlex/LexScan.java (revision 433)
-+++ jflex/src/JFlex/LexScan.java Tue Dec 01 08:12:15 EST 2009
-@@ -1,4 +1,4 @@
--/* The following code was generated by JFlex 1.4.3 on 5/27/08 8:22 PM */
-+/* The following code was generated by JFlex 1.4.3 on 12/1/09 8:12 AM */
-
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
-@@ -77,11 +77,11 @@
- private static final String ZZ_CMAP_PACKED =
- "\10\25\1\26\1\10\1\13\2\11\1\12\16\25\4\0\1\10\1\76"+
- "\1\32\1\0\1\103\1\35\1\22\1\33\1\100\1\101\1\30\1\102"+
-- "\1\15\1\106\1\14\1\31\1\7\1\66\2\7\2\3\1\67\1\64"+
-+ "\1\15\1\110\1\14\1\31\1\7\1\66\2\7\2\3\1\67\1\64"+
- "\1\65\1\1\1\105\1\0\1\20\1\71\1\21\1\23\1\0\4\2"+
-- "\1\72\1\74\10\24\1\73\13\24\1\16\1\4\1\17\1\104\1\24"+
-+ "\1\72\1\74\10\24\1\73\13\24\1\16\1\4\1\17\1\104\1\106"+
- "\1\0\1\53\1\57\1\55\1\62\1\46\1\47\1\63\1\42\1\37"+
-- "\1\60\1\70\1\51\1\56\1\40\1\44\1\61\1\24\1\43\1\54"+
-+ "\1\60\1\70\1\51\1\56\1\40\1\44\1\61\1\107\1\43\1\54"+
- "\1\41\1\6\1\52\1\45\1\5\1\50\1\24\1\36\1\75\1\34"+
- "\1\77\6\25\1\27\32\25\2\0\4\24\4\0\1\24\2\0\1\25"+
- "\7\0\1\24\4\0\1\24\5\0\27\24\1\0\37\24\1\0\u013f\24"+
-@@ -196,39 +196,46 @@
- "\1\11\2\117\1\11\1\0\1\71\1\0\1\120\6\0"+
- "\1\121\1\122\1\0\1\37\4\0\1\104\1\0\1\123"+
- "\1\124\2\125\3\0\2\11\1\126\24\11\1\127\12\11"+
-- "\3\0\2\11\1\0\2\120\14\0\2\123\3\0\20\11"+
-+ "\3\0\2\11\1\0\2\120\15\0\2\123\3\0\20\11"+
- "\1\130\3\11\1\131\10\11\1\132\6\11\1\133\1\11"+
-- "\1\134\1\130\1\0\2\11\1\0\1\120\13\0\1\123"+
-+ "\1\134\1\130\1\0\2\11\1\0\1\120\14\0\1\123"+
- "\5\0\11\11\1\0\1\11\1\135\5\11\1\136\1\137"+
-- "\17\11\1\140\1\141\2\11\7\0\2\37\10\0\2\142"+
-+ "\17\11\1\140\1\141\2\11\10\0\2\37\10\0\2\142"+
- "\3\0\11\11\1\143\1\0\11\11\1\144\4\11\1\145"+
-- "\1\0\3\11\1\146\1\147\2\11\6\0\1\150\1\37"+
-+ "\1\0\3\11\1\146\1\147\2\11\7\0\1\150\1\37"+
- "\3\0\1\37\6\0\2\151\4\0\1\141\1\11\1\152"+
- "\1\126\3\11\1\153\2\154\1\143\4\0\11\11\2\155"+
-- "\2\11\1\156\1\11\2\157\1\11\1\160\6\0\1\37"+
-+ "\2\11\1\156\1\11\2\157\1\11\1\160\7\0\1\37"+
- "\6\0\1\37\13\0\1\11\1\161\2\11\1\154\1\162"+
- "\1\154\1\143\3\0\2\11\1\163\2\11\1\164\3\11"+
- "\1\155\1\165\1\155\1\166\1\0\1\11\1\156\1\0"+
-- "\1\167\1\157\2\170\1\157\4\0\1\171\1\172\2\37"+
-+ "\1\167\1\157\2\170\1\157\5\0\1\171\1\172\2\37"+
- "\4\0\2\37\7\0\2\173\1\0\3\11\2\162\2\143"+
- "\1\174\2\175\1\0\1\11\1\0\5\11\2\165\2\0"+
-- "\1\11\1\0\2\170\2\0\1\176\2\0\1\37\2\0"+
-+ "\1\11\1\0\2\170\3\0\1\176\2\0\1\37\2\0"+
- "\2\37\4\0\1\37\2\0\2\37\7\0\2\177\1\11"+
- "\1\162\1\0\1\143\1\0\1\174\1\0\1\175\1\200"+
- "\1\175\2\0\2\11\1\201\1\11\1\202\1\203\2\204"+
- "\1\165\1\0\1\205\3\0\1\205\1\0\1\205\1\156"+
-- "\3\0\1\206\1\0\4\37\3\0\4\37\3\0\2\207"+
-+ "\20\0\1\206\1\0\4\37\3\0\4\37\3\0\2\207"+
- "\1\0\1\177\1\210\1\177\1\211\3\0\2\200\2\0"+
-- "\2\11\1\201\2\212\1\204\1\213\1\204\12\0\3\37"+
-+ "\2\11\1\201\2\212\1\204\1\213\1\204\41\0\3\37"+
- "\5\0\3\37\1\0\2\214\1\0\2\210\2\143\1\174"+
- "\1\200\3\0\2\11\1\212\1\215\1\212\2\213\1\205"+
-- "\2\0\1\216\1\217\4\0\1\37\3\0\1\37\2\220"+
-+ "\33\0\1\216\1\217\4\0\1\37\3\0\1\37\2\220"+
- "\1\210\1\0\1\143\1\163\1\0\1\163\1\11\2\215"+
-- "\1\213\1\0\2\205\1\0\1\205\3\0\1\37\2\0"+
-- "\1\37\2\221\1\215\10\0\1\222\3\205";
-+ "\1\213\1\0\2\205\1\0\1\205\35\0\1\37\2\0"+
-+ "\1\37\2\221\1\215\74\0\1\222\3\205\51\0\1\223"+
-+ "\44\0\1\224\62\0\1\225\14\0\1\226\57\0\1\227"+
-+ "\1\230\7\0\1\231\1\232\1\233\33\0\1\234\17\0"+
-+ "\1\235\2\0\1\236\20\0\1\237\3\0\1\240\1\241"+
-+ "\2\0\1\242\1\243\3\0\1\244\1\0\1\245\1\246"+
-+ "\2\0\1\247\5\0\1\250\1\0\1\251\1\0\1\252"+
-+ "\16\0\1\253\5\0\1\254\2\0\1\255\3\0\1\256"+
-+ "\1\0\1\257\1\0\1\260";
-
- private static int [] zzUnpackAction() {
-- int [] result = new int[826];
-+ int [] result = new int[1299];
- int offset = 0;
- offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
- return result;
-@@ -253,113 +260,172 @@
- private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
-
- private static final String ZZ_ROWMAP_PACKED_0 =
-- "\0\0\0\107\0\216\0\325\0\u011c\0\u0163\0\u01aa\0\u01f1"+
-- "\0\u0238\0\u027f\0\u02c6\0\u030d\0\u0354\0\u039b\0\u03e2\0\u0429"+
-- "\0\u0429\0\u0470\0\u04b7\0\u04fe\0\u0545\0\u058c\0\u0470\0\u05d3"+
-- "\0\u061a\0\u0470\0\u0661\0\u06a8\0\u06ef\0\u0736\0\u077d\0\u07c4"+
-- "\0\u080b\0\u0852\0\u0899\0\u08e0\0\u0927\0\u096e\0\u09b5\0\u0470"+
-- "\0\u0470\0\u09fc\0\u0a43\0\u0a8a\0\u0ad1\0\u0470\0\u0b18\0\u0b5f"+
-- "\0\u0470\0\u0470\0\u0ba6\0\u0470\0\u0bed\0\u0c34\0\u0470\0\u0470"+
-- "\0\u0470\0\u0470\0\u0470\0\u0470\0\u0470\0\u0c7b\0\u0cc2\0\u0d09"+
-- "\0\u0d50\0\u0470\0\u0470\0\u0d97\0\u0470\0\u0dde\0\u0e25\0\u0e6c"+
-- "\0\u0470\0\u0eb3\0\u0470\0\u0efa\0\u0efa\0\u0b18\0\u0470\0\u0470"+
-- "\0\u0f41\0\u0470\0\u0f88\0\u0fcf\0\u0fcf\0\u0470\0\u1016\0\u0470"+
-- "\0\u105d\0\u0470\0\u10a4\0\u0470\0\u10eb\0\u1132\0\u1179\0\u11c0"+
-- "\0\u0545\0\u0470\0\u0470\0\u058c\0\u0470\0\u1207\0\u124e\0\u1295"+
-- "\0\u12dc\0\u1323\0\u136a\0\u13b1\0\u13f8\0\u143f\0\u1486\0\u14cd"+
-- "\0\u1514\0\u155b\0\u15a2\0\u15e9\0\u1630\0\u1677\0\u16be\0\u1705"+
-- "\0\u174c\0\u0470\0\u1793\0\u17da\0\u1821\0\u09b5\0\u1868\0\u0470"+
-- "\0\u18af\0\u0470\0\u18f6\0\u193d\0\u1984\0\u19cb\0\u0470\0\u0470"+
-- "\0\u0470\0\u0470\0\u0470\0\u0a8a\0\u0bed\0\u1a12\0\u1a59\0\u0470"+
-- "\0\u1aa0\0\u1ae7\0\u0bed\0\u0c34\0\u0470\0\u1b2e\0\u0cc2\0\u0d09"+
-- "\0\u0d50\0\u1b75\0\u1bbc\0\u1c03\0\u1c4a\0\u1c91\0\u0470\0\u1cd8"+
-- "\0\u1d1f\0\u1d66\0\u1dad\0\u0470\0\u0470\0\u0470\0\u0470\0\u0470"+
-- "\0\u0470\0\u0efa\0\u0b18\0\u1df4\0\u0470\0\u0fcf\0\u1e3b\0\u1e82"+
-- "\0\u1ec9\0\u1f10\0\u1f57\0\u105d\0\u1f9e\0\u0470\0\u1207\0\u0470"+
-- "\0\u1fe5\0\u12dc\0\u0470\0\u202c\0\u2073\0\u20ba\0\u2101\0\u2148"+
-- "\0\u218f\0\u21d6\0\u221d\0\u2264\0\u22ab\0\u22f2\0\u2339\0\u2380"+
-- "\0\u23c7\0\u240e\0\u2455\0\u249c\0\u24e3\0\u252a\0\u2571\0\u25b8"+
-- "\0\u25ff\0\u2646\0\u268d\0\u26d4\0\u271b\0\u2762\0\u27a9\0\u27f0"+
-- "\0\u2837\0\u287e\0\u28c5\0\u290c\0\u2953\0\u299a\0\u29e1\0\u2a28"+
-- "\0\u2a6f\0\u2ab6\0\u0470\0\u2afd\0\u2b44\0\u2b8b\0\u2bd2\0\u2c19"+
-- "\0\u2c60\0\u2ca7\0\u2cee\0\u0470\0\u0470\0\u2d35\0\u2d7c\0\u2dc3"+
-- "\0\u2e0a\0\u2e51\0\u2e98\0\u0470\0\u2edf\0\u2f26\0\u0470\0\u1e3b"+
-- "\0\u0470\0\u2f6d\0\u2fb4\0\u2ffb\0\u3042\0\u3089\0\u30d0\0\u3117"+
-- "\0\u315e\0\u31a5\0\u31ec\0\u3233\0\u327a\0\u32c1\0\u3308\0\u334f"+
-- "\0\u3396\0\u33dd\0\u3424\0\u346b\0\u34b2\0\u34f9\0\u3540\0\u3587"+
-- "\0\u35ce\0\u3615\0\u365c\0\u36a3\0\u36ea\0\u3731\0\u3778\0\u37bf"+
-- "\0\u3806\0\u384d\0\u3894\0\u38db\0\u3922\0\u3969\0\u39b0\0\u39f7"+
-- "\0\u3a3e\0\u3a85\0\u3acc\0\u3b13\0\u0470\0\u3b5a\0\u3ba1\0\u3be8"+
-- "\0\u3c2f\0\u3c76\0\u3cbd\0\u3d04\0\u3d4b\0\u3d92\0\u3dd9\0\u3e20"+
-- "\0\u3e67\0\u3eae\0\u0470\0\u3ef5\0\u3f3c\0\u3f83\0\u3fca\0\u4011"+
-- "\0\u4058\0\u409f\0\u40e6\0\u412d\0\u4174\0\u41bb\0\u4202\0\u4249"+
-- "\0\u4290\0\u42d7\0\u431e\0\u4365\0\u43ac\0\u43f3\0\u443a\0\u124e"+
-- "\0\u4481\0\u44c8\0\u450f\0\u124e\0\u4556\0\u459d\0\u45e4\0\u462b"+
-- "\0\u4672\0\u46b9\0\u4700\0\u4747\0\u124e\0\u478e\0\u47d5\0\u481c"+
-- "\0\u4863\0\u48aa\0\u48f1\0\u124e\0\u4938\0\u0470\0\u0470\0\u497f"+
-- "\0\u49c6\0\u4a0d\0\u4a54\0\u2afd\0\u4a9b\0\u4ae2\0\u4b29\0\u4b70"+
-- "\0\u4bb7\0\u4bfe\0\u4c45\0\u4c8c\0\u4cd3\0\u4d1a\0\u4d61\0\u2edf"+
-- "\0\u4da8\0\u4def\0\u4e36\0\u4e7d\0\u4ec4\0\u4f0b\0\u4f52\0\u4f99"+
-- "\0\u4fe0\0\u5027\0\u506e\0\u50b5\0\u50fc\0\u5143\0\u518a\0\u51d1"+
-- "\0\u124e\0\u5218\0\u525f\0\u52a6\0\u52ed\0\u5334\0\u124e\0\u124e"+
-- "\0\u537b\0\u53c2\0\u5409\0\u5450\0\u5497\0\u54de\0\u5525\0\u556c"+
-- "\0\u55b3\0\u55fa\0\u5641\0\u5688\0\u56cf\0\u5716\0\u575d\0\u124e"+
-- "\0\u0470\0\u57a4\0\u57eb\0\u5832\0\u5879\0\u58c0\0\u5907\0\u594e"+
-- "\0\u5995\0\u59dc\0\u5a23\0\u5a6a\0\u5ab1\0\u5af8\0\u5b3f\0\u5b86"+
-- "\0\u5bcd\0\u5c14\0\u5c5b\0\u5ca2\0\u4def\0\u0470\0\u5ce9\0\u5d30"+
-- "\0\u5d77\0\u5dbe\0\u5e05\0\u5e4c\0\u5e93\0\u5eda\0\u5f21\0\u5f68"+
-- "\0\u5faf\0\u5ff6\0\u603d\0\u6084\0\u60cb\0\u6112\0\u6159\0\u61a0"+
-- "\0\u61e7\0\u622e\0\u6275\0\u62bc\0\u6303\0\u124e\0\u634a\0\u6391"+
-- "\0\u63d8\0\u641f\0\u124e\0\u6466\0\u64ad\0\u64f4\0\u653b\0\u124e"+
-- "\0\u124e\0\u6582\0\u2a28\0\u65c9\0\u6610\0\u6657\0\u669e\0\u66e5"+
-- "\0\u672c\0\u6773\0\u67ba\0\u6801\0\u6848\0\u688f\0\u68d6\0\u691d"+
-- "\0\u6964\0\u69ab\0\u69f2\0\u6a39\0\u6a80\0\u5c5b\0\u0470\0\u6ac7"+
-- "\0\u6b0e\0\u6b55\0\u6b9c\0\u124e\0\u6be3\0\u124e\0\u124e\0\u6c2a"+
-- "\0\u6c71\0\u6cb8\0\u124e\0\u6cff\0\u6d46\0\u6d8d\0\u6dd4\0\u6e1b"+
-- "\0\u6e62\0\u6ea9\0\u6ef0\0\u6f37\0\u6f7e\0\u6fc5\0\u700c\0\u7053"+
-- "\0\u709a\0\u70e1\0\u7128\0\u716f\0\u71b6\0\u71fd\0\u7244\0\u728b"+
-- "\0\u72d2\0\u7319\0\u7360\0\u2953\0\u0470\0\u73a7\0\u73ee\0\u7435"+
-- "\0\u747c\0\u74c3\0\u750a\0\u7551\0\u7598\0\u75df\0\u7626\0\u766d"+
-- "\0\u76b4\0\u76fb\0\u7742\0\u7789\0\u77d0\0\u7817\0\u785e\0\u78a5"+
-- "\0\u78ec\0\u7933\0\u797a\0\u79c1\0\u7a08\0\u7a4f\0\u7a96\0\u7add"+
-- "\0\u7b24\0\u7b6b\0\u7bb2\0\u7bf9\0\u7c40\0\u7c87\0\u7cce\0\u7d15"+
-- "\0\u7d5c\0\u7da3\0\u7dea\0\u7e31\0\u7e78\0\u7ebf\0\u124e\0\u7f06"+
-- "\0\u7f4d\0\u7f94\0\u7fdb\0\u8022\0\u8069\0\u124e\0\u80b0\0\u80f7"+
-- "\0\u813e\0\u8185\0\u124e\0\u81cc\0\u8213\0\u825a\0\u82a1\0\u82e8"+
-- "\0\u832f\0\u8376\0\u83bd\0\u0470\0\u0470\0\u8404\0\u844b\0\u8492"+
-- "\0\u84d9\0\u8520\0\u8567\0\u85ae\0\u85f5\0\u863c\0\u8683\0\u86ca"+
-- "\0\u8711\0\u8758\0\u879f\0\u87e6\0\u7a08\0\u0470\0\u882d\0\u8874"+
-- "\0\u88bb\0\u8902\0\u8949\0\u8990\0\u89d7\0\u8a1e\0\u8a65\0\u8aac"+
-- "\0\u8af3\0\u8b3a\0\u8b81\0\u8bc8\0\u8c0f\0\u8c56\0\u8c9d\0\u8ce4"+
-- "\0\u8d2b\0\u8d72\0\u8db9\0\u8e00\0\u8e47\0\u8e8e\0\u8ed5\0\u8f1c"+
-- "\0\u8f63\0\u8faa\0\u8ff1\0\u0470\0\u9038\0\u907f\0\u90c6\0\u910d"+
-- "\0\u9154\0\u919b\0\u91e2\0\u9229\0\u9270\0\u92b7\0\u92fe\0\u9345"+
-- "\0\u938c\0\u93d3\0\u941a\0\u9461\0\u94a8\0\u94ef\0\u9536\0\u957d"+
-- "\0\u95c4\0\u960b\0\u9652\0\u9699\0\u96e0\0\u9727\0\u976e\0\u97b5"+
-- "\0\u97fc\0\u9843\0\u988a\0\u98d1\0\u9918\0\u995f\0\u99a6\0\u99ed"+
-- "\0\u9a34\0\u9a7b\0\u9ac2\0\u9b09\0\u9b50\0\u124e\0\u124e\0\u9b97"+
-- "\0\u9bde\0\u9c25\0\u9c6c\0\u9cb3\0\u9cfa\0\u9d41\0\u9d88\0\u8e00"+
-- "\0\u9dcf\0\u8e8e\0\u9e16\0\u9e5d\0\u9ea4\0\u9eeb\0\u0470\0\u9f32"+
-- "\0\u9f79\0\u9fc0\0\ua007\0\ua04e\0\ua095\0\ua0dc\0\ua123\0\ua16a"+
-- "\0\ua1b1\0\ua1f8\0\ua23f\0\ua286\0\ua2cd\0\ua314\0\u960b\0\u0470"+
-- "\0\ua35b\0\ua3a2\0\ua3e9\0\ua430\0\ua477\0\ua4be\0\ua505\0\ua54c"+
-- "\0\ua593\0\ua5da\0\ua621\0\ua668\0\ua6af\0\ua6f6\0\ua73d\0\ua784"+
-- "\0\ua7cb\0\ua812\0\ua859\0\ua8a0\0\ua8e7\0\ua92e\0\ua975\0\ua9bc"+
-- "\0\uaa03\0\uaa4a\0\uaa91\0\uaad8\0\uab1f\0\uab66\0\uabad\0\uabf4"+
-- "\0\uac3b\0\uac82\0\uacc9\0\uad10\0\uad57\0\uad9e\0\uade5\0\uae2c"+
-- "\0\uae73\0\uaeba\0\ua314\0\u0470\0\uaf01\0\uaf48\0\uaf8f\0\uafd6"+
-- "\0\ub01d\0\ub064\0\ub0ab\0\ub0f2\0\ub139\0\ub180\0\ub1c7\0\ub20e"+
-- "\0\ub255\0\ub29c\0\ub2e3\0\ub32a\0\ub371\0\ua8e7\0\ub3b8\0\ub3ff"+
-- "\0\u0470\0\u0470\0\ub446\0\ub48d\0\ub4d4\0\ub51b\0\ub562\0\ub5a9"+
-- "\0\ub5f0\0\ub637\0\ub67e\0\uaf01\0\u0470\0\ub6c5\0\ub70c\0\ub753"+
-- "\0\u0470\0\ub79a\0\u124e\0\ub7e1\0\ub828\0\ub86f\0\ub8b6\0\ub8fd"+
-- "\0\ub3b8\0\ub944\0\ub98b\0\ub3ff\0\ub9d2\0\uba19\0\uba60\0\ubaa7"+
-- "\0\ubaee\0\ubb35\0\ubb7c\0\u0470\0\u124e\0\ubbc3\0\ubc0a\0\ubc51"+
-- "\0\ubc98\0\ubcdf\0\ubd26\0\ubd6d\0\ubdb4\0\ubdfb\0\u0470\0\ubdb4"+
-- "\0\ube42\0\ubdfb";
-+ "\0\0\0\111\0\222\0\333\0\u0124\0\u016d\0\u01b6\0\u01ff"+
-+ "\0\u0248\0\u0291\0\u02da\0\u0323\0\u036c\0\u03b5\0\u03fe\0\u0447"+
-+ "\0\u0447\0\u0490\0\u04d9\0\u0522\0\u056b\0\u05b4\0\u0490\0\u05fd"+
-+ "\0\u0646\0\u0490\0\u068f\0\u06d8\0\u0721\0\u076a\0\u07b3\0\u07fc"+
-+ "\0\u0845\0\u088e\0\u08d7\0\u0920\0\u0969\0\u09b2\0\u09fb\0\u0490"+
-+ "\0\u0490\0\u0a44\0\u0a8d\0\u0ad6\0\u0b1f\0\u0490\0\u0b68\0\u0bb1"+
-+ "\0\u0490\0\u0490\0\u0bfa\0\u0490\0\u0c43\0\u0c8c\0\u0490\0\u0490"+
-+ "\0\u0490\0\u0490\0\u0490\0\u0490\0\u0490\0\u0cd5\0\u0d1e\0\u0d67"+
-+ "\0\u0db0\0\u0490\0\u0490\0\u0df9\0\u0490\0\u0e42\0\u0e8b\0\u0ed4"+
-+ "\0\u0490\0\u0f1d\0\u0490\0\u0f66\0\u0f66\0\u0b68\0\u0490\0\u0490"+
-+ "\0\u0faf\0\u0490\0\u0ff8\0\u1041\0\u1041\0\u0490\0\u108a\0\u0490"+
-+ "\0\u10d3\0\u0490\0\u111c\0\u0490\0\u1165\0\u11ae\0\u11f7\0\u1240"+
-+ "\0\u056b\0\u0490\0\u0490\0\u05b4\0\u0490\0\u1289\0\u12d2\0\u131b"+
-+ "\0\u1364\0\u13ad\0\u13f6\0\u143f\0\u1488\0\u14d1\0\u151a\0\u1563"+
-+ "\0\u15ac\0\u15f5\0\u163e\0\u1687\0\u16d0\0\u1719\0\u1762\0\u17ab"+
-+ "\0\u17f4\0\u0490\0\u183d\0\u1886\0\u18cf\0\u09fb\0\u1918\0\u0490"+
-+ "\0\u1961\0\u0490\0\u19aa\0\u19f3\0\u1a3c\0\u1a85\0\u0490\0\u0490"+
-+ "\0\u0490\0\u0490\0\u0490\0\u0ad6\0\u0c43\0\u1ace\0\u1b17\0\u0490"+
-+ "\0\u1b60\0\u1ba9\0\u0c43\0\u0c8c\0\u0490\0\u1bf2\0\u0d1e\0\u0d67"+
-+ "\0\u0db0\0\u1c3b\0\u1c84\0\u1ccd\0\u1d16\0\u1d5f\0\u0490\0\u1da8"+
-+ "\0\u1df1\0\u1e3a\0\u1e83\0\u0490\0\u0490\0\u0490\0\u0490\0\u0490"+
-+ "\0\u0490\0\u0f66\0\u0b68\0\u1ecc\0\u0490\0\u1041\0\u1f15\0\u1f5e"+
-+ "\0\u1fa7\0\u1ff0\0\u2039\0\u10d3\0\u2082\0\u0490\0\u1289\0\u0490"+
-+ "\0\u20cb\0\u1364\0\u0490\0\u2114\0\u215d\0\u21a6\0\u21ef\0\u2238"+
-+ "\0\u2281\0\u22ca\0\u2313\0\u235c\0\u23a5\0\u23ee\0\u2437\0\u2480"+
-+ "\0\u24c9\0\u2512\0\u255b\0\u25a4\0\u25ed\0\u2636\0\u267f\0\u26c8"+
-+ "\0\u2711\0\u275a\0\u27a3\0\u27ec\0\u2835\0\u287e\0\u28c7\0\u2910"+
-+ "\0\u2959\0\u29a2\0\u29eb\0\u2a34\0\u2a7d\0\u2ac6\0\u2b0f\0\u2b58"+
-+ "\0\u2ba1\0\u2bea\0\u0490\0\u2c33\0\u2c7c\0\u2cc5\0\u2d0e\0\u2d57"+
-+ "\0\u2da0\0\u2de9\0\u2e32\0\u0490\0\u0490\0\u2e7b\0\u2ec4\0\u2f0d"+
-+ "\0\u2f56\0\u2f9f\0\u2fe8\0\u0490\0\u3031\0\u307a\0\u0490\0\u1f15"+
-+ "\0\u0490\0\u30c3\0\u310c\0\u3155\0\u319e\0\u31e7\0\u3230\0\u3279"+
-+ "\0\u32c2\0\u330b\0\u3354\0\u339d\0\u33e6\0\u342f\0\u3478\0\u34c1"+
-+ "\0\u350a\0\u3553\0\u359c\0\u35e5\0\u362e\0\u3677\0\u36c0\0\u3709"+
-+ "\0\u3752\0\u379b\0\u37e4\0\u382d\0\u3876\0\u38bf\0\u3908\0\u3951"+
-+ "\0\u399a\0\u39e3\0\u3a2c\0\u3a75\0\u3abe\0\u3b07\0\u3b50\0\u3b99"+
-+ "\0\u3be2\0\u3c2b\0\u3c74\0\u3cbd\0\u0490\0\u3d06\0\u3d4f\0\u3d98"+
-+ "\0\u3de1\0\u3e2a\0\u3e73\0\u3ebc\0\u3f05\0\u3f4e\0\u3f97\0\u3fe0"+
-+ "\0\u4029\0\u4072\0\u40bb\0\u0490\0\u4104\0\u414d\0\u4196\0\u41df"+
-+ "\0\u4228\0\u4271\0\u42ba\0\u4303\0\u434c\0\u4395\0\u43de\0\u4427"+
-+ "\0\u4470\0\u44b9\0\u4502\0\u454b\0\u4594\0\u45dd\0\u4626\0\u466f"+
-+ "\0\u12d2\0\u46b8\0\u4701\0\u474a\0\u12d2\0\u4793\0\u47dc\0\u4825"+
-+ "\0\u486e\0\u48b7\0\u4900\0\u4949\0\u4992\0\u12d2\0\u49db\0\u4a24"+
-+ "\0\u4a6d\0\u4ab6\0\u4aff\0\u4b48\0\u12d2\0\u4b91\0\u0490\0\u0490"+
-+ "\0\u4bda\0\u4c23\0\u4c6c\0\u4cb5\0\u2c33\0\u4cfe\0\u4d47\0\u4d90"+
-+ "\0\u4dd9\0\u4e22\0\u4e6b\0\u4eb4\0\u4efd\0\u4f46\0\u4f8f\0\u4fd8"+
-+ "\0\u5021\0\u3031\0\u506a\0\u50b3\0\u50fc\0\u5145\0\u518e\0\u51d7"+
-+ "\0\u5220\0\u5269\0\u52b2\0\u52fb\0\u5344\0\u538d\0\u53d6\0\u541f"+
-+ "\0\u5468\0\u54b1\0\u12d2\0\u54fa\0\u5543\0\u558c\0\u55d5\0\u561e"+
-+ "\0\u12d2\0\u12d2\0\u5667\0\u56b0\0\u56f9\0\u5742\0\u578b\0\u57d4"+
-+ "\0\u581d\0\u5866\0\u58af\0\u58f8\0\u5941\0\u598a\0\u59d3\0\u5a1c"+
-+ "\0\u5a65\0\u12d2\0\u0490\0\u5aae\0\u5af7\0\u5b40\0\u5b89\0\u5bd2"+
-+ "\0\u5c1b\0\u5c64\0\u5cad\0\u5cf6\0\u5d3f\0\u5d88\0\u5dd1\0\u5e1a"+
-+ "\0\u5e63\0\u5eac\0\u5ef5\0\u5f3e\0\u5f87\0\u5fd0\0\u6019\0\u50b3"+
-+ "\0\u0490\0\u6062\0\u60ab\0\u60f4\0\u613d\0\u6186\0\u61cf\0\u6218"+
-+ "\0\u6261\0\u62aa\0\u62f3\0\u633c\0\u6385\0\u63ce\0\u6417\0\u6460"+
-+ "\0\u64a9\0\u64f2\0\u653b\0\u6584\0\u65cd\0\u6616\0\u665f\0\u66a8"+
-+ "\0\u12d2\0\u66f1\0\u673a\0\u6783\0\u67cc\0\u12d2\0\u6815\0\u685e"+
-+ "\0\u68a7\0\u68f0\0\u12d2\0\u12d2\0\u6939\0\u2b58\0\u6982\0\u69cb"+
-+ "\0\u6a14\0\u6a5d\0\u6aa6\0\u6aef\0\u6b38\0\u6b81\0\u6bca\0\u6c13"+
-+ "\0\u6c5c\0\u6ca5\0\u6cee\0\u6d37\0\u6d80\0\u6dc9\0\u6e12\0\u6e5b"+
-+ "\0\u6ea4\0\u5fd0\0\u0490\0\u6eed\0\u6f36\0\u6f7f\0\u6fc8\0\u12d2"+
-+ "\0\u7011\0\u12d2\0\u12d2\0\u705a\0\u70a3\0\u70ec\0\u12d2\0\u7135"+
-+ "\0\u717e\0\u71c7\0\u7210\0\u7259\0\u72a2\0\u72eb\0\u7334\0\u737d"+
-+ "\0\u73c6\0\u740f\0\u7458\0\u74a1\0\u74ea\0\u7533\0\u757c\0\u75c5"+
-+ "\0\u760e\0\u7657\0\u76a0\0\u76e9\0\u7732\0\u777b\0\u77c4\0\u2a7d"+
-+ "\0\u0490\0\u780d\0\u7856\0\u789f\0\u78e8\0\u7931\0\u797a\0\u79c3"+
-+ "\0\u7a0c\0\u7a55\0\u7a9e\0\u7ae7\0\u7b30\0\u7b79\0\u7bc2\0\u7c0b"+
-+ "\0\u7c54\0\u7c9d\0\u7ce6\0\u7d2f\0\u7d78\0\u7dc1\0\u7e0a\0\u7e53"+
-+ "\0\u7e9c\0\u7ee5\0\u7f2e\0\u7f77\0\u7fc0\0\u8009\0\u8052\0\u809b"+
-+ "\0\u80e4\0\u812d\0\u8176\0\u81bf\0\u8208\0\u8251\0\u829a\0\u82e3"+
-+ "\0\u832c\0\u8375\0\u83be\0\u12d2\0\u8407\0\u8450\0\u8499\0\u84e2"+
-+ "\0\u852b\0\u8574\0\u12d2\0\u85bd\0\u8606\0\u864f\0\u8698\0\u12d2"+
-+ "\0\u86e1\0\u872a\0\u8773\0\u87bc\0\u8805\0\u884e\0\u8897\0\u88e0"+
-+ "\0\u8929\0\u0490\0\u0490\0\u8972\0\u89bb\0\u8a04\0\u8a4d\0\u8a96"+
-+ "\0\u8adf\0\u8b28\0\u8b71\0\u8bba\0\u8c03\0\u8c4c\0\u8c95\0\u8cde"+
-+ "\0\u8d27\0\u8d70\0\u7ee5\0\u0490\0\u8db9\0\u8e02\0\u8e4b\0\u8e94"+
-+ "\0\u8edd\0\u8f26\0\u8f6f\0\u8fb8\0\u9001\0\u904a\0\u9093\0\u90dc"+
-+ "\0\u9125\0\u916e\0\u91b7\0\u9200\0\u9249\0\u9292\0\u92db\0\u9324"+
-+ "\0\u936d\0\u93b6\0\u93ff\0\u9448\0\u9491\0\u94da\0\u9523\0\u956c"+
-+ "\0\u95b5\0\u95fe\0\u0490\0\u9647\0\u9690\0\u96d9\0\u9722\0\u976b"+
-+ "\0\u97b4\0\u97fd\0\u9846\0\u988f\0\u98d8\0\u9921\0\u996a\0\u99b3"+
-+ "\0\u99fc\0\u9a45\0\u9a8e\0\u9ad7\0\u9b20\0\u9b69\0\u9bb2\0\u9bfb"+
-+ "\0\u9c44\0\u9c8d\0\u9cd6\0\u9d1f\0\u9d68\0\u9db1\0\u9dfa\0\u9e43"+
-+ "\0\u9e8c\0\u9ed5\0\u9f1e\0\u9f67\0\u9fb0\0\u9ff9\0\ua042\0\ua08b"+
-+ "\0\ua0d4\0\ua11d\0\ua166\0\ua1af\0\u12d2\0\u12d2\0\ua1f8\0\ua241"+
-+ "\0\ua28a\0\ua2d3\0\ua31c\0\ua365\0\ua3ae\0\ua3f7\0\u93b6\0\ua440"+
-+ "\0\u9448\0\ua489\0\ua4d2\0\ua51b\0\ua564\0\ua5ad\0\ua5f6\0\ua63f"+
-+ "\0\ua688\0\ua6d1\0\ua71a\0\ua763\0\ua7ac\0\ua7f5\0\ua83e\0\ua887"+
-+ "\0\ua8d0\0\ua919\0\u0490\0\ua962\0\ua9ab\0\ua9f4\0\uaa3d\0\uaa86"+
-+ "\0\uaacf\0\uab18\0\uab61\0\uabaa\0\uabf3\0\uac3c\0\uac85\0\uacce"+
-+ "\0\uad17\0\uad60\0\u9c44\0\u0490\0\uada9\0\uadf2\0\uae3b\0\uae84"+
-+ "\0\uaecd\0\uaf16\0\uaf5f\0\uafa8\0\uaff1\0\ub03a\0\ub083\0\ub0cc"+
-+ "\0\ub115\0\ub15e\0\ub1a7\0\ub1f0\0\ub239\0\ub282\0\ub2cb\0\ub314"+
-+ "\0\ub35d\0\ub3a6\0\ub3ef\0\ub438\0\ub481\0\ub4ca\0\ub513\0\ub55c"+
-+ "\0\ub5a5\0\ub5ee\0\ub637\0\ub680\0\ub6c9\0\ub712\0\ub75b\0\ub7a4"+
-+ "\0\ub7ed\0\ub836\0\ub87f\0\ub8c8\0\ub911\0\ub95a\0\ub9a3\0\ub9ec"+
-+ "\0\uba35\0\uba7e\0\ubac7\0\ubb10\0\ubb59\0\ubba2\0\ubbeb\0\ubc34"+
-+ "\0\ubc7d\0\ubcc6\0\ubd0f\0\ubd58\0\ubda1\0\ubdea\0\ube33\0\ube7c"+
-+ "\0\ubec5\0\ubf0e\0\ubf57\0\ubfa0\0\ubfe9\0\uad60\0\u0490\0\uc032"+
-+ "\0\uc07b\0\uc0c4\0\uc10d\0\uc156\0\uc19f\0\uc1e8\0\uc231\0\uc27a"+
-+ "\0\uc2c3\0\uc30c\0\uc355\0\uc39e\0\uc3e7\0\uc430\0\uc479\0\uc4c2"+
-+ "\0\ub35d\0\uc50b\0\uc554\0\uc59d\0\uc5e6\0\uc62f\0\uc678\0\uc6c1"+
-+ "\0\uc70a\0\uc753\0\uc79c\0\uc7e5\0\uc82e\0\uc877\0\uc8c0\0\uc909"+
-+ "\0\uc952\0\uc99b\0\uc9e4\0\uca2d\0\uca76\0\ucabf\0\ucb08\0\ucb51"+
-+ "\0\ucb9a\0\ucbe3\0\ucc2c\0\ucc75\0\u0490\0\u0490\0\uccbe\0\ucd07"+
-+ "\0\ucd50\0\ucd99\0\ucde2\0\uce2b\0\uce74\0\ucebd\0\ucf06\0\uc032"+
-+ "\0\u0490\0\ucf4f\0\ucf98\0\ucfe1\0\u0490\0\ud02a\0\u12d2\0\ud073"+
-+ "\0\ud0bc\0\ud105\0\ud14e\0\ud197\0\uc50b\0\ud1e0\0\ud229\0\uc554"+
-+ "\0\ud272\0\ud2bb\0\ud304\0\ud34d\0\ud396\0\ud3df\0\ud428\0\ud471"+
-+ "\0\ud4ba\0\ud503\0\ud54c\0\ud595\0\ud5de\0\ud627\0\ud670\0\ud6b9"+
-+ "\0\ud702\0\ud74b\0\ud794\0\ud7dd\0\ud826\0\ud86f\0\ud8b8\0\ud901"+
-+ "\0\ud94a\0\ud993\0\ud9dc\0\uda25\0\uda6e\0\udab7\0\udb00\0\udb49"+
-+ "\0\udb92\0\u0490\0\u12d2\0\udbdb\0\udc24\0\udc6d\0\udcb6\0\udcff"+
-+ "\0\udd48\0\udd91\0\uddda\0\ude23\0\ude6c\0\udeb5\0\udefe\0\udf47"+
-+ "\0\udf90\0\udfd9\0\ue022\0\ue06b\0\ue0b4\0\ue0fd\0\ue146\0\ue18f"+
-+ "\0\ue1d8\0\ue221\0\ue26a\0\ue2b3\0\ue2fc\0\ue345\0\ue38e\0\ue3d7"+
-+ "\0\ue420\0\ue469\0\ue4b2\0\ue4fb\0\ue544\0\ue58d\0\ue5d6\0\ue61f"+
-+ "\0\ue668\0\ue6b1\0\ue6fa\0\ue743\0\ue78c\0\ue7d5\0\ue81e\0\ue867"+
-+ "\0\ue8b0\0\ue8f9\0\ue942\0\ue98b\0\ue9d4\0\uea1d\0\uea66\0\ueaaf"+
-+ "\0\ueaf8\0\ueb41\0\ueb8a\0\uebd3\0\uec1c\0\uec65\0\uecae\0\uecf7"+
-+ "\0\u0490\0\ue544\0\ued40\0\ue58d\0\ued89\0\uedd2\0\uee1b\0\uee64"+
-+ "\0\ueead\0\ueef6\0\uef3f\0\uef88\0\uefd1\0\uf01a\0\uf063\0\uf0ac"+
-+ "\0\uf0f5\0\uf13e\0\uf187\0\uf1d0\0\uf219\0\uf262\0\uf2ab\0\uf2f4"+
-+ "\0\uf33d\0\uf386\0\uf3cf\0\uf418\0\uf461\0\uf4aa\0\uf4f3\0\uf53c"+
-+ "\0\uf585\0\uf5ce\0\uf617\0\uf660\0\uf6a9\0\uf6f2\0\uf73b\0\uf784"+
-+ "\0\uf7cd\0\uf816\0\uf85f\0\uf8a8\0\uf8f1\0\u0490\0\uf93a\0\uf983"+
-+ "\0\uf9cc\0\ufa15\0\ufa5e\0\ufaa7\0\ufaf0\0\ufb39\0\ufb82\0\ufbcb"+
-+ "\0\ufc14\0\ufc5d\0\ufca6\0\ufcef\0\ufd38\0\ufd81\0\ufdca\0\ufe13"+
-+ "\0\ufe5c\0\ufea5\0\ufeee\0\uff37\0\uff80\0\uffc9\1\22\1\133"+
-+ "\1\244\1\355\1\u0136\1\u017f\1\u01c8\1\u0211\1\u025a\1\u02a3"+
-+ "\1\u02ec\1\u0335\0\u0490\1\u037e\1\u03c7\1\u0410\1\u0459\1\u04a2"+
-+ "\1\u04eb\1\u0534\1\u057d\1\u05c6\1\u060f\1\u0658\1\u06a1\1\u06ea"+
-+ "\1\u0733\1\u077c\1\u07c5\1\u080e\1\u0857\1\u08a0\1\u08e9\1\u0932"+
-+ "\1\u097b\1\u09c4\1\u0a0d\1\u0a56\1\u0a9f\1\u0ae8\1\u0b31\1\u0b7a"+
-+ "\1\u0bc3\1\u0c0c\1\u0c55\1\u0c9e\1\u0ce7\1\u0d30\1\u0d79\1\u0dc2"+
-+ "\1\u0e0b\1\u0e54\1\u0e9d\1\u0ee6\1\u0f2f\1\u0f78\1\u0fc1\1\u100a"+
-+ "\1\u1053\1\u109c\1\u10e5\1\u112e\1\u1177\0\u0490\1\u11c0\1\u1209"+
-+ "\1\u1252\1\u129b\1\u12e4\1\u132d\1\u1376\1\u13bf\1\u1408\1\u1451"+
-+ "\1\u149a\1\u14e3\0\u0490\1\u152c\1\u1575\1\u15be\1\u1607\1\u1650"+
-+ "\1\u1699\1\u16e2\1\u172b\1\u1774\1\u17bd\1\u1806\1\u184f\1\u1898"+
-+ "\1\u18e1\1\u192a\1\u1973\1\u19bc\1\u1a05\1\u1a4e\1\u1a97\1\u1ae0"+
-+ "\1\u1b29\1\u1b72\1\u1bbb\1\u1c04\1\u1c4d\1\u1c96\1\u1cdf\1\u1d28"+
-+ "\1\u1d71\1\u1dba\1\u1e03\1\u1e4c\1\u1e95\1\u1ede\1\u1f27\1\u1f70"+
-+ "\1\u1fb9\1\u2002\1\u204b\1\u2094\1\u20dd\1\u2126\1\u216f\1\u21b8"+
-+ "\1\u2201\1\u224a\0\u0490\0\u0490\1\u2293\1\u22dc\1\u2325\1\u236e"+
-+ "\1\u23b7\1\u2400\1\u2449\0\u0490\0\u0490\0\u0490\1\u2492\1\u24db"+
-+ "\1\u2524\1\u256d\1\u25b6\1\u25ff\1\u2648\1\u2691\1\u26da\1\u2723"+
-+ "\1\u276c\1\u27b5\1\u27fe\1\u2847\1\u2890\1\u28d9\1\u2922\1\u296b"+
-+ "\1\u29b4\1\u29fd\1\u2a46\1\u2a8f\1\u2ad8\1\u2b21\1\u2b6a\1\u2bb3"+
-+ "\1\u2bfc\0\u0490\1\u2c45\1\u2c8e\1\u2cd7\1\u2d20\1\u2d69\1\u2db2"+
-+ "\1\u2dfb\1\u2e44\1\u2e8d\1\u2ed6\1\u2f1f\1\u2f68\1\u2fb1\1\u2ffa"+
-+ "\1\u3043\0\u0490\1\u308c\1\u30d5\0\u0490\1\u311e\1\u3167\1\u31b0"+
-+ "\1\u31f9\1\u3242\1\u328b\1\u32d4\1\u331d\1\u3366\1\u33af\1\u33f8"+
-+ "\1\u3441\1\u348a\1\u34d3\1\u351c\1\u3565\0\u0490\1\u35ae\1\u35f7"+
-+ "\1\u3640\0\u0490\0\u0490\1\u3689\1\u36d2\0\u0490\0\u0490\1\u371b"+
-+ "\1\u3764\1\u37ad\0\u0490\1\u37f6\0\u0490\0\u0490\1\u383f\1\u3888"+
-+ "\0\u0490\1\u38d1\1\u391a\1\u3963\1\u39ac\1\u39f5\0\u0490\1\u3a3e"+
-+ "\0\u0490\1\u3a87\0\u0490\1\u3ad0\1\u3b19\1\u3b62\1\u3bab\1\u3bf4"+
-+ "\1\u3c3d\1\u3c86\1\u3ccf\1\u3d18\1\u3d61\1\u3daa\1\u3df3\1\u3e3c"+
-+ "\1\u3e85\0\u0490\1\u3ece\1\u3f17\1\u3f60\1\u3fa9\1\u3ff2\0\u0490"+
-+ "\1\u403b\1\u4084\0\u0490\1\u40cd\1\u4116\1\u415f\0\u0490\1\u41a8"+
-+ "\0\u0490\1\u41f1\0\u0490";
-
- private static int [] zzUnpackRowMap() {
-- int [] result = new int[826];
-+ int [] result = new int[1299];
- int offset = 0;
- offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
- return result;
-@@ -382,1092 +448,1291 @@
- private static final int [] ZZ_TRANS = zzUnpackTrans();
-
- private static final String ZZ_TRANS_PACKED_0 =
-- "\11\20\2\21\1\22\13\20\1\21\5\20\1\23\51\20"+
-- "\30\24\1\25\1\26\55\24\2\27\1\30\2\27\2\30"+
-+ "\11\20\2\21\1\22\13\20\1\21\5\20\1\23\53\20"+
-+ "\30\24\1\25\1\26\57\24\2\27\1\30\2\27\2\30"+
- "\1\27\1\31\1\32\1\33\1\32\1\27\1\34\6\27"+
- "\1\30\2\27\1\32\7\27\25\30\4\27\1\30\1\27"+
-- "\3\30\6\27\1\30\5\27\1\35\2\27\2\35\1\27"+
-- "\1\36\3\37\10\27\1\35\1\27\1\36\1\37\1\27"+
-- "\1\40\3\27\1\41\1\27\25\35\4\27\1\35\1\42"+
-- "\3\35\6\27\1\35\5\27\1\35\2\27\2\35\1\27"+
-- "\1\43\3\37\10\27\1\35\1\27\1\43\1\37\1\27"+
-- "\1\40\3\27\1\44\1\27\25\35\4\27\1\35\1\42"+
-- "\3\35\6\27\1\35\13\27\4\45\4\27\1\46\5\27"+
-- "\2\45\1\27\1\47\2\27\1\50\52\27\4\51\1\52"+
-- "\3\51\1\53\1\54\1\55\1\54\1\56\1\51\1\57"+
-- "\1\51\1\60\2\51\1\61\2\51\1\53\1\54\1\62"+
-- "\1\63\1\64\3\51\1\65\36\51\1\66\1\67\1\70"+
-- "\1\71\1\72\1\73\1\74\1\75\2\51\31\76\1\77"+
-- "\1\100\1\101\1\102\1\76\1\103\50\76\2\27\1\35"+
-- "\2\27\2\35\1\27\4\104\1\27\1\105\3\27\1\106"+
-- "\2\27\1\35\1\27\2\104\7\27\25\35\4\27\1\35"+
-- "\1\27\3\35\6\27\1\35\3\27\4\107\1\110\4\107"+
-- "\1\111\1\112\1\111\13\107\1\111\2\107\1\113\54\107"+
-+ "\3\30\6\27\1\30\2\27\2\30\3\27\1\35\2\27"+
-+ "\2\35\1\27\1\36\3\37\10\27\1\35\1\27\1\36"+
-+ "\1\37\1\27\1\40\3\27\1\41\1\27\25\35\4\27"+
-+ "\1\35\1\42\3\35\6\27\1\35\2\27\2\35\3\27"+
-+ "\1\35\2\27\2\35\1\27\1\43\3\37\10\27\1\35"+
-+ "\1\27\1\43\1\37\1\27\1\40\3\27\1\44\1\27"+
-+ "\25\35\4\27\1\35\1\42\3\35\6\27\1\35\2\27"+
-+ "\2\35\11\27\4\45\4\27\1\46\5\27\2\45\1\27"+
-+ "\1\47\2\27\1\50\54\27\4\51\1\52\3\51\1\53"+
-+ "\1\54\1\55\1\54\1\56\1\51\1\57\1\51\1\60"+
-+ "\2\51\1\61\2\51\1\53\1\54\1\62\1\63\1\64"+
-+ "\3\51\1\65\36\51\1\66\1\67\1\70\1\71\1\72"+
-+ "\1\73\1\74\1\75\4\51\31\76\1\77\1\100\1\101"+
-+ "\1\102\1\76\1\103\52\76\2\27\1\35\2\27\2\35"+
-+ "\1\27\4\104\1\27\1\105\3\27\1\106\2\27\1\35"+
-+ "\1\27\2\104\7\27\25\35\4\27\1\35\1\27\3\35"+
-+ "\6\27\1\35\2\27\2\35\1\27\4\107\1\110\4\107"+
-+ "\1\111\1\112\1\111\13\107\1\111\2\107\1\113\56\107"+
- "\4\51\1\52\3\51\3\114\1\115\2\51\1\116\1\117"+
- "\6\51\2\114\2\51\1\120\3\51\1\121\45\51\1\122"+
-- "\1\51\1\123\11\124\2\125\1\126\13\124\1\125\5\124"+
-- "\1\127\51\124\10\27\1\36\2\27\1\130\1\27\1\131"+
-- "\10\27\1\36\5\27\1\132\62\27\4\133\12\27\2\133"+
-- "\57\27\2\134\1\135\2\134\2\135\15\134\1\135\12\134"+
-- "\25\135\4\134\1\135\1\134\3\135\6\134\1\135\3\134"+
-- "\11\20\2\21\1\22\13\20\1\21\57\20\107\0\11\20"+
-- "\2\21\1\22\13\20\1\21\5\20\1\136\51\20\30\24"+
-- "\1\137\1\140\105\24\1\141\1\142\105\24\1\143\1\144"+
-- "\55\24\1\0\3\30\1\0\3\30\14\0\4\30\7\0"+
-- "\32\30\1\0\3\30\6\0\1\30\13\0\1\31\4\0"+
-- "\1\34\104\0\1\32\103\0\1\34\77\0\3\35\1\0"+
-- "\3\35\14\0\4\35\7\0\32\35\1\0\3\35\6\0"+
-- "\1\35\13\0\1\36\15\0\1\36\71\0\3\37\13\0"+
-- "\1\37\107\0\1\145\1\146\57\0\1\147\2\0\1\147"+
-- "\1\150\15\0\1\147\11\0\1\151\1\152\1\153\1\154"+
-- "\4\147\1\155\1\156\1\157\1\160\1\147\1\161\1\162"+
-- "\1\163\1\147\1\164\1\147\1\165\1\166\1\147\1\167"+
-- "\1\170\1\171\1\0\1\147\1\0\3\147\6\0\1\147"+
-- "\13\0\1\42\15\0\1\42\70\0\1\43\15\0\1\43"+
-- "\6\0\1\172\53\0\1\147\2\0\1\173\1\150\15\0"+
-+ "\3\51\1\123\11\124\2\125\1\126\13\124\1\125\5\124"+
-+ "\1\127\53\124\10\27\1\36\2\27\1\130\1\27\1\131"+
-+ "\10\27\1\36\5\27\1\132\64\27\4\133\12\27\2\133"+
-+ "\61\27\2\134\1\135\2\134\2\135\15\134\1\135\12\134"+
-+ "\25\135\4\134\1\135\1\134\3\135\6\134\1\135\2\134"+
-+ "\2\135\1\134\11\20\2\21\1\22\13\20\1\21\61\20"+
-+ "\111\0\11\20\2\21\1\22\13\20\1\21\5\20\1\136"+
-+ "\53\20\30\24\1\137\1\140\107\24\1\141\1\142\107\24"+
-+ "\1\143\1\144\57\24\1\0\3\30\1\0\3\30\14\0"+
-+ "\4\30\7\0\32\30\1\0\3\30\6\0\1\30\2\0"+
-+ "\2\30\11\0\1\31\4\0\1\34\106\0\1\32\105\0"+
-+ "\1\34\101\0\3\35\1\0\3\35\14\0\4\35\7\0"+
-+ "\32\35\1\0\3\35\6\0\1\35\2\0\2\35\11\0"+
-+ "\1\36\15\0\1\36\73\0\3\37\13\0\1\37\111\0"+
-+ "\1\145\1\146\61\0\1\147\2\0\1\147\1\150\15\0"+
-+ "\1\147\11\0\1\151\1\152\1\153\1\154\4\147\1\155"+
-+ "\1\156\1\157\1\160\1\147\1\161\1\162\1\163\1\147"+
-+ "\1\164\1\147\1\165\1\166\1\147\1\167\1\170\1\171"+
-+ "\1\0\1\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\11\0\1\42\15\0\1\42\72\0\1\43\15\0\1\43"+
-+ "\6\0\1\172\55\0\1\147\2\0\1\173\1\150\15\0"+
- "\1\147\10\0\1\174\1\151\1\152\1\153\1\154\4\147"+
- "\1\155\1\156\1\157\1\160\1\147\1\161\1\175\1\163"+
- "\1\147\1\164\1\147\1\165\1\166\1\147\1\167\1\170"+
-- "\1\171\1\0\1\147\1\0\3\147\6\0\1\147\13\0"+
-- "\4\45\4\0\1\46\5\0\2\45\1\0\1\176\2\0"+
-- "\1\50\72\0\1\177\116\0\1\200\1\201\55\0\3\202"+
-- "\1\203\1\202\1\204\1\205\1\206\3\202\1\0\24\202"+
-- "\1\207\1\210\1\202\1\211\3\202\1\212\7\202\1\213"+
-- "\4\202\1\203\1\202\1\206\1\203\17\202\10\0\1\53"+
-- "\3\214\1\56\1\0\1\57\4\0\1\61\2\0\1\53"+
-- "\1\214\1\62\1\63\1\64\3\0\1\215\36\0\1\66"+
-- "\1\67\1\70\1\71\1\72\1\73\1\74\1\75\12\0"+
-- "\4\214\1\56\1\0\1\57\4\0\1\61\2\0\2\214"+
-- "\1\62\1\63\1\64\3\0\1\215\36\0\1\66\1\67"+
-- "\1\70\1\71\1\72\1\73\1\74\1\75\12\0\3\214"+
-- "\1\54\1\56\1\0\1\57\4\0\1\61\2\0\2\214"+
-- "\1\62\1\63\1\64\3\0\1\215\36\0\1\66\1\67"+
-- "\1\70\1\71\1\72\1\73\1\74\1\75\107\0\1\216"+
-- "\21\0\1\217\116\0\1\220\1\201\56\0\1\221\1\222"+
-- "\1\221\1\0\2\222\1\221\1\223\13\0\1\222\1\0"+
-- "\1\223\10\0\25\222\4\221\1\222\1\0\3\222\6\0"+
-- "\1\222\13\0\1\224\1\225\1\226\1\225\12\0\1\224"+
-- "\1\225\57\0\31\76\1\227\1\230\1\231\1\0\1\76"+
-- "\1\0\100\76\1\232\1\233\55\76\4\230\1\234\4\230"+
-- "\3\0\13\230\1\0\2\230\1\76\54\230\4\235\1\236"+
-- "\4\235\3\0\13\235\1\0\3\235\1\0\53\235\10\0"+
-- "\4\104\12\0\2\104\67\0\4\106\12\0\2\106\57\0"+
-- "\4\107\1\0\4\107\3\0\13\107\1\0\2\107\1\0"+
-- "\54\107\3\237\1\240\1\237\1\241\1\242\1\243\3\237"+
-- "\1\0\16\237\1\244\5\237\1\245\1\246\1\237\1\247"+
-- "\3\237\1\250\7\237\1\251\4\237\1\240\1\237\1\243"+
-- "\1\240\17\237\13\0\1\111\103\0\4\252\2\0\1\253"+
-- "\7\0\2\252\61\0\1\254\2\0\2\254\15\0\1\254"+
-- "\12\0\25\254\4\0\1\254\1\0\3\254\6\0\1\254"+
-- "\22\0\1\255\67\0\11\256\2\125\1\126\13\256\1\125"+
-- "\70\256\2\125\1\126\13\256\1\125\4\256\1\257\2\256"+
-- "\1\260\6\256\1\261\1\256\1\262\36\256\1\0\1\263"+
-- "\1\0\1\263\3\0\1\263\1\264\15\0\1\264\35\0"+
-- "\4\263\27\0\4\133\12\0\2\133\60\0\3\135\1\0"+
-- "\3\135\1\265\13\0\4\135\7\0\32\135\1\0\3\135"+
-- "\6\0\1\135\3\0\13\136\1\266\73\136\30\24\1\137"+
-- "\1\0\105\24\1\0\1\140\55\24\11\146\2\267\1\270"+
-- "\13\146\1\267\57\146\1\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\32\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\1\147\1\271"+
-- "\30\147\1\0\3\147\6\0\1\147\3\0\11\151\2\272"+
-- "\1\273\13\151\1\272\57\151\1\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\1\147\1\274\15\147\1\275\4\147"+
-- "\1\276\5\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\5\147\1\277\24\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-+ "\1\171\1\0\1\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\11\0\4\45\4\0\1\46\5\0\2\45\1\0"+
-+ "\1\176\2\0\1\50\74\0\1\177\120\0\1\200\1\201"+
-+ "\57\0\3\202\1\203\1\202\1\204\1\205\1\206\3\202"+
-+ "\1\0\24\202\1\207\1\210\1\202\1\211\3\202\1\212"+
-+ "\7\202\1\213\4\202\1\203\1\202\1\206\1\203\21\202"+
-+ "\10\0\1\53\3\214\1\56\1\0\1\57\4\0\1\61"+
-+ "\2\0\1\53\1\214\1\62\1\63\1\64\3\0\1\215"+
-+ "\36\0\1\66\1\67\1\70\1\71\1\72\1\73\1\74"+
-+ "\1\75\14\0\4\214\1\56\1\0\1\57\4\0\1\61"+
-+ "\2\0\2\214\1\62\1\63\1\64\3\0\1\215\36\0"+
-+ "\1\66\1\67\1\70\1\71\1\72\1\73\1\74\1\75"+
-+ "\14\0\3\214\1\54\1\56\1\0\1\57\4\0\1\61"+
-+ "\2\0\2\214\1\62\1\63\1\64\3\0\1\215\36\0"+
-+ "\1\66\1\67\1\70\1\71\1\72\1\73\1\74\1\75"+
-+ "\111\0\1\216\23\0\1\217\120\0\1\220\1\201\60\0"+
-+ "\1\221\1\222\1\221\1\0\2\222\1\221\1\223\13\0"+
-+ "\1\222\1\0\1\223\10\0\25\222\4\221\1\222\1\0"+
-+ "\3\222\6\0\1\222\2\0\2\222\11\0\1\224\1\225"+
-+ "\1\226\1\225\12\0\1\224\1\225\61\0\31\76\1\227"+
-+ "\1\230\1\231\1\0\1\76\1\0\102\76\1\232\1\233"+
-+ "\57\76\4\230\1\234\4\230\3\0\13\230\1\0\2\230"+
-+ "\1\76\56\230\4\235\1\236\4\235\3\0\13\235\1\0"+
-+ "\3\235\1\0\55\235\10\0\4\104\12\0\2\104\71\0"+
-+ "\4\106\12\0\2\106\61\0\4\107\1\0\4\107\3\0"+
-+ "\13\107\1\0\2\107\1\0\56\107\3\237\1\240\1\237"+
-+ "\1\241\1\242\1\243\3\237\1\0\16\237\1\244\5\237"+
-+ "\1\245\1\246\1\237\1\247\3\237\1\250\7\237\1\251"+
-+ "\4\237\1\240\1\237\1\243\1\240\21\237\13\0\1\111"+
-+ "\105\0\4\252\2\0\1\253\7\0\2\252\63\0\1\254"+
-+ "\2\0\2\254\15\0\1\254\12\0\25\254\4\0\1\254"+
-+ "\1\0\3\254\6\0\1\254\2\0\2\254\20\0\1\255"+
-+ "\71\0\11\256\2\125\1\126\13\256\1\125\72\256\2\125"+
-+ "\1\126\13\256\1\125\4\256\1\257\2\256\1\260\6\256"+
-+ "\1\261\1\256\1\262\40\256\1\0\1\263\1\0\1\263"+
-+ "\3\0\1\263\1\264\15\0\1\264\35\0\4\263\31\0"+
-+ "\4\133\12\0\2\133\62\0\3\135\1\0\3\135\1\265"+
-+ "\13\0\4\135\7\0\32\135\1\0\3\135\6\0\1\135"+
-+ "\2\0\2\135\1\0\13\136\1\266\75\136\30\24\1\137"+
-+ "\1\0\107\24\1\0\1\140\57\24\11\146\2\267\1\270"+
-+ "\13\146\1\267\61\146\1\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\32\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\2\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-+ "\1\147\1\271\30\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\1\0\11\151\2\272\1\273\13\151\1\272\61\151"+
-+ "\1\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
-+ "\1\274\15\147\1\275\4\147\1\276\5\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\5\147\1\277\24\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
- "\14\0\4\147\7\0\3\147\1\300\5\147\1\301\2\147"+
-- "\1\302\15\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\1\303\2\147\14\0\4\147\7\0\5\147\1\304"+
-- "\24\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\1\147\1\305\1\147\14\0\4\147\7\0\1\306\31\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\11\147\1\307\20\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\1\310\31\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\20\147\1\311"+
-- "\1\147\1\312\7\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\2\147\1\313"+
-- "\3\147\1\314\7\147\1\315\13\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\1\147\1\316\1\147\14\0"+
-- "\4\147\7\0\2\147\1\317\1\320\1\147\1\321\4\147"+
-- "\1\322\1\147\1\323\15\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\1\147\1\324\1\147\14\0\4\147"+
-+ "\1\302\15\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\1\303\2\147\14\0\4\147\7\0"+
-+ "\5\147\1\304\24\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\2\0\3\147\1\0\1\147\1\305\1\147\14\0"+
-+ "\4\147\7\0\1\306\31\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\11\147\1\307\20\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\1\310\31\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\2\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-+ "\20\147\1\311\1\147\1\312\7\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\2\147\1\313\3\147\1\314\7\147\1\315"+
-+ "\13\147\1\0\3\147\6\0\1\147\2\0\2\147\2\0"+
-+ "\3\147\1\0\1\147\1\316\1\147\14\0\4\147\7\0"+
-+ "\2\147\1\317\1\320\1\147\1\321\4\147\1\322\1\147"+
-+ "\1\323\15\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\1\147\1\324\1\147\14\0\4\147"+
- "\7\0\11\147\1\325\20\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\1\147\1\326\1\147\14\0\4\147"+
-- "\7\0\14\147\1\327\15\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
-- "\1\330\22\147\1\0\3\147\6\0\1\147\62\0\1\331"+
-- "\106\0\1\332\116\0\1\333\20\0\3\147\1\0\3\147"+
-- "\1\334\13\0\2\147\1\335\1\147\7\0\15\147\1\336"+
-- "\14\147\1\0\3\147\6\0\1\147\3\0\11\174\3\0"+
-- "\13\174\1\0\57\174\1\0\3\147\1\0\3\147\1\337"+
-+ "\2\0\2\147\2\0\3\147\1\0\1\147\1\326\1\147"+
-+ "\14\0\4\147\7\0\14\147\1\327\15\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\7\147\1\330\22\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\60\0\1\331\110\0\1\332"+
-+ "\120\0\1\333\22\0\3\147\1\0\3\147\1\334\13\0"+
-+ "\2\147\1\335\1\147\7\0\15\147\1\336\14\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\1\0\11\174\3\0"+
-+ "\13\174\1\0\61\174\1\0\3\147\1\0\3\147\1\337"+
- "\13\0\2\147\1\340\1\147\7\0\2\147\1\341\3\147"+
- "\1\314\7\147\1\315\13\147\1\0\3\147\6\0\1\147"+
-- "\75\0\1\342\14\0\11\201\3\0\13\201\1\0\57\201"+
-- "\3\0\1\343\3\0\1\343\54\0\1\343\1\0\2\343"+
-- "\20\0\3\344\3\0\1\344\36\0\2\344\3\0\1\344"+
-- "\1\0\1\344\1\0\1\344\2\0\1\344\1\0\4\344"+
-- "\2\0\1\344\1\0\1\344\13\0\3\345\3\0\1\345"+
-- "\36\0\2\345\3\0\1\345\1\0\1\345\1\0\1\345"+
-- "\2\0\1\345\1\0\4\345\2\0\1\345\1\0\1\345"+
-- "\15\0\1\203\3\0\1\203\54\0\1\203\1\0\2\203"+
-- "\25\0\1\346\42\0\1\347\6\0\1\350\1\0\1\351"+
-- "\116\0\1\352\15\0\1\221\1\0\1\221\3\0\1\221"+
-- "\54\0\4\221\20\0\3\222\1\0\3\222\1\353\13\0"+
-- "\4\222\4\0\1\354\2\0\32\222\1\0\3\222\6\0"+
-- "\1\222\16\0\1\355\73\0\30\232\1\356\56\232\11\233"+
-- "\2\357\1\76\13\233\1\357\57\233\11\230\3\0\13\230"+
-- "\1\0\57\230\33\0\1\76\53\0\3\235\1\360\1\361"+
-- "\1\235\1\362\1\363\1\235\3\0\13\235\1\0\34\235"+
-- "\1\360\1\235\1\363\1\360\17\235\3\0\1\364\3\0"+
-- "\1\364\54\0\1\364\1\0\2\364\20\0\3\365\3\0"+
-- "\1\365\36\0\2\365\3\0\1\365\1\0\1\365\1\0"+
-- "\1\365\2\0\1\365\1\0\4\365\2\0\1\365\1\0"+
-- "\1\365\13\0\3\366\3\0\1\366\36\0\2\366\3\0"+
-- "\1\366\1\0\1\366\1\0\1\366\2\0\1\366\1\0"+
-- "\4\366\2\0\1\366\1\0\1\366\15\0\1\240\3\0"+
-- "\1\240\54\0\1\240\1\0\2\240\20\0\3\254\1\0"+
-- "\3\254\14\0\4\254\4\0\1\367\2\0\32\254\1\0"+
-- "\3\254\6\0\1\254\3\0\11\257\2\370\1\371\13\257"+
-- "\1\370\57\257\11\256\2\125\1\126\13\256\1\125\10\256"+
-- "\1\372\57\256\2\125\1\126\13\256\1\125\14\256\1\373"+
-- "\53\256\2\125\1\126\13\256\1\125\20\256\1\374\36\256"+
-- "\1\0\1\263\1\0\1\263\3\0\1\263\54\0\4\263"+
-- "\27\0\1\265\15\0\1\265\61\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\1\375\31\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-+ "\2\0\2\147\73\0\1\342\16\0\11\201\3\0\13\201"+
-+ "\1\0\61\201\3\0\1\343\3\0\1\343\54\0\1\343"+
-+ "\1\0\2\343\22\0\3\344\3\0\1\344\36\0\2\344"+
-+ "\3\0\1\344\1\0\1\344\1\0\1\344\2\0\1\344"+
-+ "\1\0\4\344\2\0\1\344\1\0\1\344\15\0\3\345"+
-+ "\3\0\1\345\36\0\2\345\3\0\1\345\1\0\1\345"+
-+ "\1\0\1\345\2\0\1\345\1\0\4\345\2\0\1\345"+
-+ "\1\0\1\345\17\0\1\203\3\0\1\203\54\0\1\203"+
-+ "\1\0\2\203\27\0\1\346\42\0\1\347\6\0\1\350"+
-+ "\1\0\1\351\120\0\1\352\17\0\1\221\1\0\1\221"+
-+ "\3\0\1\221\54\0\4\221\22\0\3\222\1\0\3\222"+
-+ "\1\353\13\0\4\222\4\0\1\354\2\0\32\222\1\0"+
-+ "\3\222\6\0\1\222\2\0\2\222\14\0\1\355\75\0"+
-+ "\30\232\1\356\60\232\11\233\2\357\1\76\13\233\1\357"+
-+ "\61\233\11\230\3\0\13\230\1\0\61\230\33\0\1\76"+
-+ "\55\0\3\235\1\360\1\361\1\235\1\362\1\363\1\235"+
-+ "\3\0\13\235\1\0\34\235\1\360\1\235\1\363\1\360"+
-+ "\21\235\3\0\1\364\3\0\1\364\54\0\1\364\1\0"+
-+ "\2\364\22\0\3\365\3\0\1\365\36\0\2\365\3\0"+
-+ "\1\365\1\0\1\365\1\0\1\365\2\0\1\365\1\0"+
-+ "\4\365\2\0\1\365\1\0\1\365\15\0\3\366\3\0"+
-+ "\1\366\36\0\2\366\3\0\1\366\1\0\1\366\1\0"+
-+ "\1\366\2\0\1\366\1\0\4\366\2\0\1\366\1\0"+
-+ "\1\366\17\0\1\240\3\0\1\240\54\0\1\240\1\0"+
-+ "\2\240\22\0\3\254\1\0\3\254\14\0\4\254\4\0"+
-+ "\1\367\2\0\32\254\1\0\3\254\6\0\1\254\2\0"+
-+ "\2\254\1\0\11\257\2\370\1\371\13\257\1\370\61\257"+
-+ "\11\256\2\125\1\126\13\256\1\125\10\256\1\372\61\256"+
-+ "\2\125\1\126\13\256\1\125\14\256\1\373\55\256\2\125"+
-+ "\1\126\13\256\1\125\20\256\1\374\40\256\1\0\1\263"+
-+ "\1\0\1\263\3\0\1\263\54\0\4\263\31\0\1\265"+
-+ "\15\0\1\265\63\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\1\375\31\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\2\0\3\147\1\0\3\147\14\0\4\147\7\0"+
- "\1\376\1\147\1\377\13\147\1\u0100\13\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\22\147\1\u0101\7\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
-- "\1\u0102\30\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\2\147\1\u0103\27\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\22\147\1\u0101\7\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\1\147\1\u0102\30\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\2\147\1\u0103\27\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
- "\14\0\4\147\7\0\4\147\1\u0104\25\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\22\147\1\u0105\7\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\20\147"+
-- "\1\u0106\11\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\2\147\1\u0107\27\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\22\147\1\u0105\7\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\20\147\1\u0106\11\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\2\147\1\u0107\27\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
- "\14\0\4\147\7\0\10\147\1\u0108\21\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\1\147\1\u0109\10\147\1\u010a\17\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\1\147\1\u010b\30\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
-- "\1\u010c\2\147\1\u010d\17\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
-- "\1\u010e\30\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\15\147\1\u010f\14\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\1\u0110\31\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\14\147\1\u0111\15\147\1\0\3\147\6\0\1\147\4\0"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\1\147\1\u0109\10\147\1\u010a\17\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\1\147\1\u010b\30\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\7\147\1\u010c\2\147"+
-+ "\1\u010d\17\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
-+ "\1\u010e\30\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\15\147"+
-+ "\1\u010f\14\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\1\u0110"+
-+ "\31\147\1\0\3\147\6\0\1\147\2\0\2\147\2\0"+
-+ "\3\147\1\0\3\147\14\0\4\147\7\0\14\147\1\u0111"+
-+ "\15\147\1\0\3\147\6\0\1\147\2\0\2\147\2\0"+
- "\3\147\1\0\3\147\14\0\4\147\7\0\1\u0112\31\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\14\147\1\u0113\15\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\22\147\1\u0114\7\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\5\147"+
-- "\1\u0115\24\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\14\147\1\u0113\15\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\22\147\1\u0114\7\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\5\147\1\u0115\24\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
- "\1\0\3\147\14\0\4\147\7\0\14\147\1\u0116\15\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\12\147\1\u0117\17\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\14\147\1\u0118\15\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\15\147"+
-- "\1\u0119\14\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\12\147\1\u0117\17\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\14\147\1\u0118\15\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\15\147\1\u0119\14\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
- "\1\0\3\147\14\0\4\147\7\0\10\147\1\u011a\21\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\14\147\1\u011b\15\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\20\147\1\u011c\11\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\16\147"+
-- "\1\u011d\13\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\14\147\1\u011b\15\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\20\147\1\u011c\11\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\16\147\1\u011d\13\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
- "\1\0\3\147\14\0\4\147\7\0\20\147\1\u011e\11\147"+
-- "\1\0\3\147\6\0\1\147\42\0\1\u011f\106\0\1\u0120"+
-- "\126\0\1\u0121\37\0\1\334\15\0\1\334\61\0\3\147"+
-- "\1\0\3\147\1\334\13\0\2\147\1\335\1\147\7\0"+
-- "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\2\147\1\u0122\27\147\1\0"+
-- "\3\147\6\0\1\147\13\0\1\337\15\0\1\337\61\0"+
-- "\3\147\1\0\3\147\1\337\13\0\2\147\1\340\1\147"+
-- "\7\0\32\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\40\0\1\u011f"+
-+ "\110\0\1\u0120\130\0\1\u0121\41\0\1\334\15\0\1\334"+
-+ "\63\0\3\147\1\0\3\147\1\334\13\0\2\147\1\335"+
-+ "\1\147\7\0\32\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\2\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-+ "\2\147\1\u0122\27\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\11\0\1\337\15\0\1\337\63\0\3\147\1\0"+
-+ "\3\147\1\337\13\0\2\147\1\340\1\147\7\0\32\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
- "\1\0\3\147\14\0\4\147\7\0\14\147\1\u0123\15\147"+
-- "\1\0\3\147\6\0\1\147\76\0\1\u0124\14\0\3\u0125"+
-- "\3\0\1\u0125\36\0\2\u0125\3\0\1\u0125\1\0\1\u0125"+
-- "\1\0\1\u0125\2\0\1\u0125\1\0\4\u0125\2\0\1\u0125"+
-- "\1\0\1\u0125\13\0\3\u0126\3\0\1\u0126\36\0\2\u0126"+
-- "\3\0\1\u0126\1\0\1\u0126\1\0\1\u0126\2\0\1\u0126"+
-- "\1\0\4\u0126\2\0\1\u0126\1\0\1\u0126\73\0\1\u0127"+
-- "\71\0\1\u0128\1\0\1\u0129\111\0\1\u012a\74\0\1\u012b"+
-- "\142\0\1\u012c\23\0\1\353\15\0\1\353\5\0\1\354"+
-- "\52\0\30\232\1\356\1\76\55\232\13\357\1\76\15\357"+
-- "\1\u012d\1\u012e\1\u012f\1\233\1\357\1\233\50\357\3\0"+
-- "\1\235\3\0\1\235\23\0\1\76\30\0\1\235\1\0"+
-- "\2\235\23\0\1\u0130\1\0\1\u0131\24\0\1\76\54\0"+
-- "\3\u0132\3\0\1\u0132\23\0\1\76\12\0\2\u0132\3\0"+
-- "\1\u0132\1\0\1\u0132\1\0\1\u0132\2\0\1\u0132\1\0"+
-- "\4\u0132\2\0\1\u0132\1\0\1\u0132\15\0\1\360\3\0"+
-- "\1\360\23\0\1\76\30\0\1\360\1\0\2\360\20\0"+
-- "\3\u0133\3\0\1\u0133\36\0\2\u0133\3\0\1\u0133\1\0"+
-- "\1\u0133\1\0\1\u0133\2\0\1\u0133\1\0\4\u0133\2\0"+
-- "\1\u0133\1\0\1\u0133\13\0\3\u0134\3\0\1\u0134\36\0"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\74\0\1\u0124"+
-+ "\16\0\3\u0125\3\0\1\u0125\36\0\2\u0125\3\0\1\u0125"+
-+ "\1\0\1\u0125\1\0\1\u0125\2\0\1\u0125\1\0\4\u0125"+
-+ "\2\0\1\u0125\1\0\1\u0125\15\0\3\u0126\3\0\1\u0126"+
-+ "\36\0\2\u0126\3\0\1\u0126\1\0\1\u0126\1\0\1\u0126"+
-+ "\2\0\1\u0126\1\0\4\u0126\2\0\1\u0126\1\0\1\u0126"+
-+ "\54\0\1\u0127\20\0\1\u0128\73\0\1\u0129\1\0\1\u012a"+
-+ "\113\0\1\u012b\76\0\1\u012c\144\0\1\u012d\25\0\1\353"+
-+ "\15\0\1\353\5\0\1\354\54\0\30\232\1\356\1\76"+
-+ "\57\232\13\357\1\76\15\357\1\u012e\1\u012f\1\u0130\1\233"+
-+ "\1\357\1\233\52\357\3\0\1\235\3\0\1\235\23\0"+
-+ "\1\76\30\0\1\235\1\0\2\235\25\0\1\u0131\1\0"+
-+ "\1\u0132\24\0\1\76\56\0\3\u0133\3\0\1\u0133\23\0"+
-+ "\1\76\12\0\2\u0133\3\0\1\u0133\1\0\1\u0133\1\0"+
-+ "\1\u0133\2\0\1\u0133\1\0\4\u0133\2\0\1\u0133\1\0"+
-+ "\1\u0133\17\0\1\360\3\0\1\360\23\0\1\76\30\0"+
-+ "\1\360\1\0\2\360\22\0\3\u0134\3\0\1\u0134\36\0"+
- "\2\u0134\3\0\1\u0134\1\0\1\u0134\1\0\1\u0134\2\0"+
-- "\1\u0134\1\0\4\u0134\2\0\1\u0134\1\0\1\u0134\12\0"+
-- "\11\256\2\125\1\126\13\256\1\125\7\256\1\u0135\60\256"+
-- "\2\125\1\126\13\256\1\125\17\256\1\u0136\50\256\2\125"+
-- "\1\126\13\256\1\125\21\256\1\u0137\35\256\1\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\16\147\1\u0138\13\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\2\147\1\u0139\27\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\6\147\1\u013a\1\u013b\22\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\12\147\1\u013c\17\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\12\147\1\u013d"+
-- "\17\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\5\147\1\u013e\24\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\1\147\1\u013f"+
-+ "\1\u0134\1\0\4\u0134\2\0\1\u0134\1\0\1\u0134\15\0"+
-+ "\3\u0135\3\0\1\u0135\36\0\2\u0135\3\0\1\u0135\1\0"+
-+ "\1\u0135\1\0\1\u0135\2\0\1\u0135\1\0\4\u0135\2\0"+
-+ "\1\u0135\1\0\1\u0135\14\0\11\256\2\125\1\126\13\256"+
-+ "\1\125\7\256\1\u0136\62\256\2\125\1\126\13\256\1\125"+
-+ "\17\256\1\u0137\52\256\2\125\1\126\13\256\1\125\21\256"+
-+ "\1\u0138\37\256\1\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\16\147\1\u0139\13\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\2\147\1\u013a\27\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\6\147\1\u013b\1\u013c\22\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\12\147\1\u013d\17\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\12\147\1\u013e\17\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\5\147\1\u013f\24\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\1\147\1\u0140"+
- "\1\147\14\0\4\147\7\0\32\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\5\147\1\u0140\24\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\7\147\1\u0141"+
-- "\22\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\12\147\1\u0142\17\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\7\147\1\u0143\22\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\6\0"+
-- "\1\151\2\147\1\u0144\10\147\1\u0145\2\147\1\u0146\13\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\16\147\1\u0147\13\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\12\147\1\u0148\17\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\14\147"+
-- "\1\u0149\15\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\5\147\1\u014a\24\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\7\147\1\u014b\22\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\7\147\1\u014c\22\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\2\147"+
-- "\1\u014d\27\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\22\147\1\u014e\7\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\1\147\1\u014f\30\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\2\147\1\u0150\27\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
-- "\1\u0151\30\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\15\147\1\u0152\5\147"+
-- "\1\u0153\6\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\4\147\1\u0154\25\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\4\147\1\u0155\25\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\1\147\1\u0156\1\147"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\5\147\1\u0141\24\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\7\147\1\u0142\22\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\12\147\1\u0143\17\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\7\147\1\u0144\22\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\6\0\1\151\2\147\1\u0145\10\147\1\u0146\2\147"+
-+ "\1\u0147\13\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\16\147"+
-+ "\1\u0148\13\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\12\147"+
-+ "\1\u0149\17\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\14\147"+
-+ "\1\u014a\15\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\5\147"+
-+ "\1\u014b\24\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
-+ "\1\u014c\22\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
-+ "\1\u014d\22\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\2\147"+
-+ "\1\u014e\27\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\22\147"+
-+ "\1\u014f\7\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
-+ "\1\u0150\30\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\2\147"+
-+ "\1\u0151\27\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
-+ "\1\u0152\30\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\15\147"+
-+ "\1\u0153\5\147\1\u0154\6\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\4\147\1\u0155\25\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\4\147\1\u0156\25\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\1\147\1\u0157\1\147"+
- "\14\0\4\147\7\0\32\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\15\147"+
-- "\1\u0157\14\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\7\147\1\u0158\22\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\10\147\1\u0159\21\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\16\147\1\u015a\13\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\12\147"+
-- "\1\u015b\17\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\31\147\1\u015c\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\1\147\1\u015d"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\15\147\1\u0158\14\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\7\147\1\u0159\22\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\10\147\1\u015a\21\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\16\147\1\u015b\13\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\12\147\1\u015c\17\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\31\147\1\u015d\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\2\0\3\147\1\0\1\147\1\u015e\1\147\14\0"+
-+ "\4\147\7\0\32\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\42\0\1\u015f\110\0\1\u0160\106\0\1\u0161\52\0"+
-+ "\3\147\1\0\3\147\14\0\4\147\7\0\14\147\1\u0162"+
-+ "\15\147\1\0\3\147\6\0\1\147\2\0\2\147\2\0"+
-+ "\3\147\1\0\3\147\14\0\4\147\7\0\1\147\1\u0150"+
-+ "\1\u0163\27\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\75\0\1\u0164\15\0\3\u0165\3\0\1\u0165\36\0\2\u0165"+
-+ "\3\0\1\u0165\1\0\1\u0165\1\0\1\u0165\2\0\1\u0165"+
-+ "\1\0\4\u0165\2\0\1\u0165\1\0\1\u0165\53\0\1\u0166"+
-+ "\132\0\1\u0167\74\0\1\u0168\104\0\1\u0169\115\0\1\u016a"+
-+ "\125\0\1\u016b\121\0\1\u016c\14\0\13\357\1\76\14\357"+
-+ "\1\u016d\1\233\57\357\4\u012f\1\u016e\4\u012f\2\357\1\76"+
-+ "\13\u012f\1\357\2\u012f\1\357\56\u012f\4\u016f\1\u0170\4\u016f"+
-+ "\2\357\1\76\13\u016f\1\357\3\u016f\1\233\55\u016f\4\0"+
-+ "\1\u0131\1\0\1\u0132\103\0\3\u0133\3\0\1\u0133\36\0"+
-+ "\2\u0133\3\0\1\u0133\1\0\1\u0133\1\0\1\u0133\2\0"+
-+ "\1\u0133\1\0\4\u0133\2\0\1\u0133\1\0\1\u0133\15\0"+
-+ "\3\u0171\3\0\1\u0171\36\0\2\u0171\3\0\1\u0171\1\0"+
-+ "\1\u0171\1\0\1\u0171\2\0\1\u0171\1\0\4\u0171\2\0"+
-+ "\1\u0171\1\0\1\u0171\15\0\3\u0172\3\0\1\u0172\36\0"+
-+ "\2\u0172\3\0\1\u0172\1\0\1\u0172\1\0\1\u0172\2\0"+
-+ "\1\u0172\1\0\4\u0172\2\0\1\u0172\1\0\1\u0172\14\0"+
-+ "\11\256\2\125\1\126\13\256\1\125\11\256\1\u0173\60\256"+
-+ "\2\125\1\126\13\256\1\125\4\256\1\u0174\4\256\1\u0175"+
-+ "\10\256\1\u0176\47\256\2\125\1\126\13\256\1\125\16\256"+
-+ "\1\u0177\42\256\1\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\5\147\1\u0178\24\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\6\0\1\151\2\147\1\u0179\27\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\4\147\1\u017a\25\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\24\147\1\u017b\5\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\1\147\1\u017c"+
- "\1\147\14\0\4\147\7\0\32\147\1\0\3\147\6\0"+
-- "\1\147\44\0\1\u015e\106\0\1\u015f\104\0\1\u0160\50\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\14\147\1\u0161"+
-- "\15\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\1\147\1\u014f\1\u0162\27\147"+
-- "\1\0\3\147\6\0\1\147\77\0\1\u0163\13\0\3\u0164"+
-- "\3\0\1\u0164\36\0\2\u0164\3\0\1\u0164\1\0\1\u0164"+
-- "\1\0\1\u0164\2\0\1\u0164\1\0\4\u0164\2\0\1\u0164"+
-- "\1\0\1\u0164\73\0\1\u0165\72\0\1\u0166\102\0\1\u0167"+
-- "\113\0\1\u0168\123\0\1\u0169\117\0\1\u016a\12\0\13\357"+
-- "\1\76\14\357\1\u016b\1\233\55\357\4\u012e\1\u016c\4\u012e"+
-- "\2\357\1\76\13\u012e\1\357\2\u012e\1\357\54\u012e\4\u016d"+
-- "\1\u016e\4\u016d\2\357\1\76\13\u016d\1\357\3\u016d\1\233"+
-- "\53\u016d\4\0\1\u0130\1\0\1\u0131\101\0\3\u0132\3\0"+
-- "\1\u0132\36\0\2\u0132\3\0\1\u0132\1\0\1\u0132\1\0"+
-- "\1\u0132\2\0\1\u0132\1\0\4\u0132\2\0\1\u0132\1\0"+
-- "\1\u0132\13\0\3\u016f\3\0\1\u016f\36\0\2\u016f\3\0"+
-- "\1\u016f\1\0\1\u016f\1\0\1\u016f\2\0\1\u016f\1\0"+
-- "\4\u016f\2\0\1\u016f\1\0\1\u016f\13\0\3\u0170\3\0"+
-- "\1\u0170\36\0\2\u0170\3\0\1\u0170\1\0\1\u0170\1\0"+
-- "\1\u0170\2\0\1\u0170\1\0\4\u0170\2\0\1\u0170\1\0"+
-- "\1\u0170\12\0\11\256\2\125\1\126\13\256\1\125\11\256"+
-- "\1\u0171\56\256\2\125\1\126\13\256\1\125\4\256\1\u0172"+
-- "\4\256\1\u0173\10\256\1\u0174\45\256\2\125\1\126\13\256"+
-- "\1\125\16\256\1\u0175\40\256\1\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\5\147\1\u0176\24\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\6\0\1\151\2\147\1\u0177\27\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\4\147\1\u0178\25\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\24\147\1\u0179"+
-- "\5\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\1\147\1\u017a\1\147\14\0\4\147\7\0\32\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\7\147\1\u017b\22\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\4\147\1\u017c\25\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\1\147\1\u017d"+
-- "\30\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\6\147\1\u017e\23\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\1\u017f"+
-- "\13\0\2\147\1\u0180\1\147\7\0\32\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\7\147\1\u0181\22\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
-- "\1\u0182\30\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\3\147\1\u0183\26\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\14\147\1\u0184\15\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\12\147\1\u0185\17\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\2\147"+
-- "\1\u0186\27\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\12\147\1\u0187\17\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\10\147\1\u0188\21\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\1\u0189\2\147\14\0"+
-- "\4\147\7\0\32\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\4\147\1\u018a"+
-- "\25\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\4\147\1\u018b\25\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\23\147\1\u018c\6\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\16\147\1\u018d\13\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\7\147\1\u018e"+
-- "\22\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\11\147\1\u018f\20\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\7\147\1\u017d\22\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\4\147\1\u017e\25\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\1\147\1\u017f\30\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\6\147\1\u0180\23\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\1\u0181"+
-+ "\13\0\2\147\1\u0182\1\147\7\0\32\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\7\147\1\u0183\22\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\1\147\1\u0184\30\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\3\147\1\u0185\26\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\14\147\1\u0186\15\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\12\147\1\u0187\17\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\2\147\1\u0188\27\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\12\147\1\u0189\17\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\10\147\1\u018a\21\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\1\u018b"+
-+ "\2\147\14\0\4\147\7\0\32\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\4\147\1\u018c\25\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\4\147\1\u018d\25\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\23\147\1\u018e\6\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\16\147\1\u018f\13\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
- "\4\147\7\0\7\147\1\u0190\22\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\14\147\1\u0191\15\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\17\147\1\u0192"+
-- "\12\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\15\147\1\u0193\14\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\12\147\1\u0194\17\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\7\147\1\u0195\22\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\16\147\1\u0196"+
-- "\13\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\1\u0197\31\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\24\147\1\u0198\5\147\1\0\3\147\6\0\1\147"+
-- "\44\0\1\u0199\46\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\2\147\1\u019a\27\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
-- "\1\u019b\22\147\1\0\3\147\6\0\1\147\24\0\1\u019c"+
-- "\133\0\1\u019d\106\0\1\u019e\101\0\1\u019f\106\0\1\u01a0"+
-- "\104\0\1\u01a1\70\0\1\u01a2\65\0\11\u016b\2\u01a3\1\u01a4"+
-- "\13\u016b\1\u01a3\1\u01a5\56\u016b\11\u012e\2\357\1\76\13\u012e"+
-- "\1\357\57\u012e\11\233\2\357\1\76\13\233\1\357\3\233"+
-- "\1\357\53\233\3\u016d\1\u01a6\1\u01a7\1\u016d\1\u01a8\1\u01a9"+
-- "\1\u016d\2\357\1\76\13\u016d\1\357\34\u016d\1\u01a6\1\u016d"+
-- "\1\u01a9\1\u01a6\17\u016d\1\0\3\u01aa\3\0\1\u01aa\36\0"+
-- "\2\u01aa\3\0\1\u01aa\1\0\1\u01aa\1\0\1\u01aa\2\0"+
-- "\1\u01aa\1\0\4\u01aa\2\0\1\u01aa\1\0\1\u01aa\12\0"+
-- "\11\256\2\125\1\126\13\256\1\125\4\256\1\u01ab\4\256"+
-- "\1\u01ac\45\256\11\u0172\2\u01ad\1\u01ae\13\u0172\1\u01ad\57\u0172"+
-- "\11\256\2\125\1\126\13\256\1\125\12\256\1\u01af\55\256"+
-- "\2\125\1\126\13\256\1\125\23\256\1\u01b0\40\256\1\u01b1"+
-- "\3\256\2\125\1\126\13\256\1\125\57\256\1\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\23\147\1\u01b2\6\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\3\147\1\u01b3\26\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\14\147\1\u01b4\15\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
-- "\1\u01b5\22\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\23\147\1\u01b6\6\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\17\147\1\u01b7\12\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\7\147\1\u01b8\22\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\u01b9"+
-- "\31\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\15\147\1\u01ba\14\147\1\0"+
-- "\3\147\6\0\1\147\5\0\1\u01bb\2\0\2\u01bb\1\0"+
-- "\1\u017f\7\0\1\u01bc\3\0\1\u01bb\1\0\1\u017f\10\0"+
-- "\25\u01bb\4\0\1\u01bb\1\0\3\u01bb\6\0\1\u01bb\4\0"+
-- "\1\147\1\u01bb\1\147\1\0\2\u01bb\1\147\1\u017f\7\0"+
-- "\1\u01bc\3\0\1\u01bb\1\147\1\u0180\1\147\7\0\25\u01bb"+
-- "\4\147\1\u01bb\1\0\3\u01bb\6\0\1\u01bb\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\23\147\1\u01bd\6\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\4\147\1\u01be\25\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\12\147\1\u01bf\17\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\5\147"+
-- "\1\u01c0\24\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\1\u01c1\31\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\2\147\1\u01c2\27\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\14\147\1\u01c3\15\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\1\u01c4\31\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\14\147\1\u01c5\15\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\3\147\1\u01c6\26\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\4\147"+
-- "\1\u01c7\25\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\17\147\1\u01c8\12\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\20\147\1\u01c9\11\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\11\147\1\u0191\20\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\7\147\1\u0192\22\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\14\147\1\u0193\15\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\17\147\1\u0194\12\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\15\147\1\u0195\14\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\12\147\1\u0196\17\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\7\147\1\u0197\22\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\16\147\1\u0198\13\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\1\u0199\31\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\24\147\1\u019a\5\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\42\0\1\u019b\50\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\2\147\1\u019c\27\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\7\147\1\u019d\22\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\22\0\1\u019e\144\0\1\u019f"+
-+ "\101\0\1\u01a0\110\0\1\u01a1\103\0\1\u01a2\110\0\1\u01a3"+
-+ "\106\0\1\u01a4\72\0\1\u01a5\67\0\11\u016d\2\u01a6\1\u01a7"+
-+ "\13\u016d\1\u01a6\1\u01a8\60\u016d\11\u012f\2\357\1\76\13\u012f"+
-+ "\1\357\61\u012f\11\233\2\357\1\76\13\233\1\357\3\233"+
-+ "\1\357\55\233\3\u016f\1\u01a9\1\u01aa\1\u016f\1\u01ab\1\u01ac"+
-+ "\1\u016f\2\357\1\76\13\u016f\1\357\34\u016f\1\u01a9\1\u016f"+
-+ "\1\u01ac\1\u01a9\21\u016f\1\0\3\u01ad\3\0\1\u01ad\36\0"+
-+ "\2\u01ad\3\0\1\u01ad\1\0\1\u01ad\1\0\1\u01ad\2\0"+
-+ "\1\u01ad\1\0\4\u01ad\2\0\1\u01ad\1\0\1\u01ad\14\0"+
-+ "\11\256\2\125\1\126\13\256\1\125\4\256\1\u01ae\4\256"+
-+ "\1\u01af\47\256\11\u0174\2\u01b0\1\u01b1\13\u0174\1\u01b0\61\u0174"+
-+ "\11\256\2\125\1\126\13\256\1\125\12\256\1\u01b2\57\256"+
-+ "\2\125\1\126\13\256\1\125\23\256\1\u01b3\42\256\1\u01b4"+
-+ "\3\256\2\125\1\126\13\256\1\125\61\256\1\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\23\147\1\u01b5\6\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\3\147\1\u01b6\26\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\14\147\1\u01b7\15\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\7\147\1\u01b8\22\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\23\147\1\u01b9\6\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\17\147\1\u01ba\12\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\7\147\1\u01bb\22\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\14\0\4\147\7\0\1\u01bc\31\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\2\0\3\147\1\0"+
-+ "\3\147\14\0\4\147\7\0\15\147\1\u01bd\14\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\3\0\1\u01be\2\0"+
-+ "\2\u01be\1\0\1\u0181\7\0\1\u01bf\3\0\1\u01be\1\0"+
-+ "\1\u0181\10\0\25\u01be\4\0\1\u01be\1\0\3\u01be\6\0"+
-+ "\1\u01be\2\0\2\u01be\2\0\1\147\1\u01be\1\147\1\0"+
-+ "\2\u01be\1\147\1\u0181\7\0\1\u01bf\3\0\1\u01be\1\147"+
-+ "\1\u0182\1\147\7\0\25\u01be\4\147\1\u01be\1\0\3\u01be"+
-+ "\6\0\1\u01be\2\0\2\u01be\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\23\147\1\u01c0\6\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\4\147\1\u01c1\25\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\12\147\1\u01c2\17\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\5\147\1\u01c3\24\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\1\u01c4\31\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\2\147\1\u01c5\27\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\14\147\1\u01c6\15\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\1\u01c7\31\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\14\147\1\u01c8\15\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\3\147\1\u01c9\26\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
- "\7\0\4\147\1\u01ca\25\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
-- "\1\u01cb\30\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\1\u01cc\13\0\2\147\1\u01cd\1\147\7\0"+
-- "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\7\147\1\u01ce\22\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\4\147\1\u01cf\25\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\21\147\1\u01d0\10\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\16\147\1\u01d1"+
-- "\13\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\7\147\1\u01d2\22\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\1\337"+
-- "\13\0\2\147\1\340\1\147\7\0\15\147\1\u01d3\14\147"+
-- "\1\0\3\147\6\0\1\147\24\0\1\u01d4\130\0\1\u01d5"+
-- "\106\0\1\u01d6\111\0\1\u01d7\101\0\1\u01d8\106\0\1\u01d9"+
-- "\66\0\1\u01da\65\0\13\u01a3\1\u01a4\14\u01a3\1\u01db\1\u01dc"+
-- "\1\u01dd\1\u01de\1\u016b\1\u01a3\1\u016b\50\u01a3\30\u01a4\1\u01df"+
-- "\1\u01e0\1\u01e1\1\u01e2\1\232\1\u01a4\1\232\50\u01a4\11\u016b"+
-- "\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\1\357\55\u016b\3\233"+
-- "\1\u016d\3\233\1\u016d\1\233\2\357\1\76\13\233\1\357"+
-- "\3\233\1\357\30\233\1\u016d\1\233\2\u016d\23\233\1\u01e3"+
-- "\1\233\1\u01e4\2\233\2\357\1\76\13\233\1\357\3\233"+
-- "\1\357\54\233\3\u01e5\3\233\1\u01e5\1\233\2\357\1\76"+
-- "\13\233\1\357\3\233\1\357\12\233\2\u01e5\3\233\1\u01e5"+
-- "\1\233\1\u01e5\1\233\1\u01e5\2\233\1\u01e5\1\233\4\u01e5"+
-- "\2\233\1\u01e5\1\233\1\u01e5\15\233\1\u01a6\3\233\1\u01a6"+
-- "\1\233\2\357\1\76\13\233\1\357\3\233\1\357\30\233"+
-- "\1\u01a6\1\233\2\u01a6\17\233\1\0\3\235\3\0\1\235"+
-- "\36\0\2\235\3\0\1\235\1\0\1\235\1\0\1\235"+
-- "\2\0\1\235\1\0\4\235\2\0\1\235\1\0\1\235"+
-- "\12\0\11\u01ab\2\u01e6\1\u01e7\13\u01ab\1\u01e6\57\u01ab\11\256"+
-- "\2\125\1\126\13\256\1\125\12\256\1\u01e8\55\256\2\125"+
-- "\1\126\13\256\1\125\13\256\1\u01e9\54\256\2\125\1\126"+
-- "\13\256\1\125\21\256\1\u01ea\46\256\2\125\1\126\13\256"+
-- "\1\125\11\256\1\u01eb\45\256\1\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\7\147\1\u01ec\22\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\4\147\1\u01ed\25\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\22\147"+
-- "\1\u01ee\7\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\4\147\1\u01ef\25\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\7\147\1\u01f0\22\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\7\147\1\u01f1\22\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\16\147"+
-- "\1\u01f2\13\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\1\u01f3\2\147\14\0\4\147\7\0\32\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\1\u01f4"+
-- "\13\0\2\147\1\u01f5\1\147\7\0\32\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\u01bb\1\0\3\u01bb\1\u01f6\3\0"+
-- "\1\u01f7\1\0\1\u01f8\1\0\1\u01f9\3\0\4\u01bb\7\0"+
-- "\32\u01bb\1\0\3\u01bb\6\0\1\u01bb\4\0\3\u01fa\1\0"+
-- "\4\u01fa\3\0\2\u01fa\2\0\10\u01fa\7\0\32\u01fa\1\0"+
-- "\3\u01fa\6\0\1\u01fa\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\15\147\1\u01fb\14\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\5\147\1\u01fc\24\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\6\0\1\151\32\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\15\147\1\u01fd\14\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\5\147\1\u01fe\24\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\3\147"+
-- "\1\u01ff\26\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\16\147\1\u0200\13\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\13\147\1\u0201\16\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\12\147\1\u0202\17\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\4\147"+
-- "\1\u0203\25\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\1\u0204\13\0\2\147\1\u0205\1\147\7\0"+
-- "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\1\147\1\u0206\1\147\14\0\4\147\7\0\32\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\24\147\1\u0207\5\147\1\0\3\147\6\0"+
-- "\1\147\5\0\1\u0208\2\0\2\u0208\1\0\1\u01cc\13\0"+
-- "\1\u0208\1\0\1\u01cc\10\0\25\u0208\4\0\1\u0208\1\0"+
-- "\3\u0208\6\0\1\u0208\4\0\1\147\1\u0208\1\147\1\0"+
-- "\2\u0208\1\147\1\u01cc\13\0\1\u0208\1\147\1\u01cd\1\147"+
-- "\7\0\25\u0208\4\147\1\u0208\1\0\3\u0208\6\0\1\u0208"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\15\147"+
-- "\1\u0209\14\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\1\u020a\13\0\2\147\1\u020b\1\147\7\0"+
-- "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\1\334\13\0\2\147\1\335\1\147\7\0\15\147"+
-- "\1\u020c\14\147\1\0\3\147\6\0\1\147\13\0\4\u01d4"+
-- "\12\0\2\u01d4\6\0\1\u020d\125\0\1\u020e\106\0\1\u020f"+
-- "\74\0\1\u0210\111\0\1\u0211\145\0\1\u0212\11\0\4\u0213"+
-- "\12\0\2\u0213\57\0\13\u01a3\1\u01a4\14\u01a3\1\u01db\1\u0214"+
-- "\1\u01dd\1\u01de\1\u016b\1\u01a3\1\u016b\63\u01a3\1\u01a4\14\u01a3"+
-- "\1\u0215\1\u016b\55\u01a3\4\u01dd\1\u0216\4\u01dd\2\u01a3\1\u01a4"+
-- "\13\u01dd\1\u01a3\1\u0217\1\u01dd\1\u01a3\54\u01dd\4\u0218\1\u0219"+
-- "\4\u0218\2\u01a3\1\u01a4\13\u0218\1\u01a3\1\u021a\2\u0218\1\u016b"+
-- "\53\u0218\30\u01a4\1\u01df\1\u021b\1\u01e1\1\u01e2\1\232\1\u01a4"+
-- "\1\232\100\u01a4\1\u021c\1\u016b\55\u01a4\4\u01e1\1\u021d\4\u01e1"+
-- "\3\232\13\u01e1\1\232\1\u021e\1\u01e1\1\u01a4\54\u01e1\4\u021f"+
-- "\1\u0220\4\u021f\3\232\13\u021f\1\232\1\u0221\2\u021f\1\232"+
-- "\53\u021f\4\233\1\u01e3\1\233\1\u01e4\2\233\2\357\1\76"+
-- "\13\233\1\357\60\233\3\u01e5\3\233\1\u01e5\1\233\2\357"+
-- "\1\76\13\233\1\357\16\233\2\u01e5\3\233\1\u01e5\1\233"+
-- "\1\u01e5\1\233\1\u01e5\2\233\1\u01e5\1\233\4\u01e5\2\233"+
-- "\1\u01e5\1\233\1\u01e5\13\233\3\u0222\3\233\1\u0222\1\233"+
-- "\2\357\1\76\13\233\1\357\16\233\2\u0222\3\233\1\u0222"+
-- "\1\233\1\u0222\1\233\1\u0222\2\233\1\u0222\1\233\4\u0222"+
-- "\2\233\1\u0222\1\233\1\u0222\12\233\11\256\2\125\1\126"+
-- "\13\256\1\125\13\256\1\u0223\54\256\2\125\1\126\13\256"+
-- "\1\125\14\256\1\u0224\53\256\2\125\1\126\13\256\1\125"+
-- "\4\256\1\u0225\63\256\2\125\1\126\13\256\1\125\12\256"+
-- "\1\u0226\44\256\1\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\5\147\1\u0227\24\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\1\u0228\13\0\2\147\1\u0228"+
-- "\1\147\7\0\32\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\1\147\1\u0229"+
-- "\30\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\14\147\1\u022a\15\147\1\0"+
-- "\3\147\6\0\1\147\3\0\2\u022b\1\u022c\2\u022b\2\u022c"+
-- "\1\u022b\1\u01f4\3\0\10\u022b\1\u022c\1\u022b\1\u01f4\1\0"+
-- "\7\u022b\25\u022c\4\u022b\1\u022c\1\u022b\3\u022c\6\u022b\1\u022c"+
-- "\4\u022b\1\u022d\1\u022c\1\u022d\1\u022b\2\u022c\1\u022d\1\u01f4"+
-- "\3\0\10\u022b\1\u022c\1\u022d\1\u01f5\1\147\7\u022b\25\u022c"+
-- "\4\u022d\1\u022c\1\u022b\3\u022c\6\u022b\1\u022c\3\u022b\10\0"+
-- "\1\u01f6\3\0\1\u01f7\1\0\1\u01f8\1\0\1\u01f9\5\0"+
-- "\1\u01f6\62\0\1\u01bb\2\0\2\u01bb\1\0\1\u01f7\13\0"+
-- "\1\u01bb\1\0\1\u01f7\10\0\25\u01bb\4\0\1\u01bb\1\0"+
-- "\3\u01bb\6\0\1\u01bb\13\0\1\u01f8\6\0\1\u022e\6\0"+
-- "\1\u01f8\61\0\3\u022f\1\0\4\u022f\3\0\2\u022f\2\0"+
-- "\10\u022f\7\0\32\u022f\1\0\3\u022f\6\0\1\u022f\4\0"+
-- "\3\u01fa\1\0\4\u01fa\3\0\2\u01fa\2\0\1\u01fa\1\u0230"+
-- "\6\u01fa\7\0\32\u01fa\1\0\3\u01fa\6\0\1\u01fa\4\0"+
-- "\3\147\1\0\3\147\1\u0231\13\0\2\147\1\u0232\1\147"+
-- "\7\0\32\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\6\147\1\u0233\23\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\7\147\1\u0234\22\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\1\147\1\u0235\30\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\4\147"+
-- "\1\u0236\25\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\2\147\1\u0237\27\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\14\147\1\u0238\15\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\5\147\1\u0239\24\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\5\147"+
-- "\1\u023a\24\147\1\0\3\147\6\0\1\147\3\0\2\u023b"+
-- "\1\u023c\2\u023b\2\u023c\1\u023b\1\u0204\3\0\10\u023b\1\u023c"+
-- "\1\u023b\1\u0204\1\0\7\u023b\25\u023c\4\u023b\1\u023c\1\u023b"+
-- "\3\u023c\6\u023b\1\u023c\4\u023b\1\u023d\1\u023c\1\u023d\1\u023b"+
-- "\2\u023c\1\u023d\1\u0204\3\0\10\u023b\1\u023c\1\u023d\1\u0205"+
-- "\1\147\7\u023b\25\u023c\4\u023d\1\u023c\1\u023b\3\u023c\6\u023b"+
-- "\1\u023c\3\u023b\1\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\24\147\1\u023e\5\147\1\0\3\147\6\0\1\147"+
-- "\4\0\3\147\1\0\3\147\1\u023f\13\0\2\147\1\u0240"+
-- "\1\147\7\0\32\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\u0208\1\0\3\u0208\1\u0241\7\0\1\u0242\3\0\4\u0208"+
-- "\7\0\32\u0208\1\0\3\u0208\6\0\1\u0208\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\15\147\1\u0243\14\147"+
-- "\1\0\3\147\6\0\1\147\3\0\1\u0244\1\u0245\1\u0244"+
-- "\1\u0245\3\u0244\1\u0245\1\u020a\3\0\12\u0244\1\u020a\1\0"+
-- "\34\u0244\4\u0245\20\u0244\1\u0246\1\u0247\1\u0246\1\u0244\2\u0247"+
-- "\1\u0246\1\u020a\3\0\10\u0244\2\u0247\1\u020b\1\147\7\u0244"+
-- "\25\u0247\4\u0246\1\u0247\1\u0244\3\u0247\6\u0244\1\u0247\3\u0244"+
-- "\53\0\1\u0248\106\0\1\u0249\140\0\1\u024a\44\0\1\u024b"+
-- "\62\0\1\u024c\77\0\4\u0213\12\0\2\u0213\6\0\1\u024d"+
-- "\50\0\13\357\1\76\14\357\1\u01a3\1\u012d\1\u024e\1\u024f"+
-- "\53\357\11\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\1\u01a3"+
-- "\55\u016b\11\u01dd\2\u01a3\1\u01a4\13\u01dd\1\u01a3\1\u0217\62\u01dd"+
-- "\1\u0216\4\u01dd\2\u01a3\1\u01a4\13\u01dd\1\u01a3\1\u0217\1\u024e"+
-- "\1\u01a3\54\u01dd\11\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5"+
-- "\2\u016b\1\u01a3\53\u016b\3\u0218\1\u0250\1\u0251\1\u0218\1\u0252"+
-- "\1\u0253\1\u0218\2\u01a3\1\u01a4\13\u0218\1\u01a3\1\u021a\33\u0218"+
-- "\1\u0250\1\u0218\1\u0253\1\u0250\17\u0218\11\u016b\2\u01a3\1\u01a4"+
-- "\13\u016b\1\u01a3\1\u01a5\1\357\1\u016b\1\u01a3\53\u016b\30\76"+
-- "\1\u01a4\1\u012d\1\u0254\1\u0255\53\76\30\232\1\356\1\u01a4"+
-- "\55\232\11\u01e1\3\232\13\u01e1\1\232\1\u021e\62\u01e1\1\u021d"+
-- "\4\u01e1\3\232\13\u01e1\1\232\1\u021e\1\u0254\1\u01a4\54\u01e1"+
-- "\30\232\1\356\2\232\1\u01a4\53\232\3\u021f\1\u0256\1\u0257"+
-- "\1\u021f\1\u0258\1\u0259\1\u021f\3\232\13\u021f\1\232\1\u0221"+
-- "\33\u021f\1\u0256\1\u021f\1\u0259\1\u0256\17\u021f\30\232\1\356"+
-- "\1\76\1\232\1\u01a4\53\232\1\233\3\u025a\3\233\1\u025a"+
-- "\1\233\2\357\1\76\13\233\1\357\16\233\2\u025a\3\233"+
-- "\1\u025a\1\233\1\u025a\1\233\1\u025a\2\233\1\u025a\1\233"+
-- "\4\u025a\2\233\1\u025a\1\233\1\u025a\12\233\11\256\2\125"+
-- "\1\126\13\256\1\125\14\256\1\u025b\53\256\2\125\1\126"+
-- "\13\256\1\125\15\256\1\u025c\41\256\11\u0225\2\u025d\1\u025e"+
-- "\13\u0225\1\u025d\57\u0225\11\256\2\125\1\126\13\256\1\125"+
-- "\13\256\1\u025f\43\256\1\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\6\147\1\u0260\23\147\1\0\3\147\6\0"+
-- "\1\147\3\0\13\u0228\1\0\73\u0228\1\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\2\147\1\u0261\27\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\15\147\1\u0262\14\147\1\0\3\147\6\0"+
-- "\1\147\3\0\11\u022b\3\0\13\u022b\1\0\60\u022b\3\u022c"+
-- "\1\u022b\3\u022c\1\u0263\3\0\2\u01f4\6\u022b\3\u022c\1\u0264"+
-- "\7\u022b\32\u022c\1\u022b\3\u022c\6\u022b\1\u022c\4\u022b\3\u022d"+
-- "\1\u022b\3\u022d\1\u022b\3\0\10\u022b\3\u022d\1\147\7\u022b"+
-- "\32\u022d\1\u022b\3\u022d\6\u022b\1\u022d\3\u022b\10\0\1\u022e"+
-- "\5\0\1\u01f8\7\0\1\u022e\61\0\3\u022f\1\0\4\u022f"+
-- "\3\0\2\u022f\2\0\1\u022f\1\u0265\6\u022f\7\0\32\u022f"+
-- "\1\0\3\u022f\6\0\1\u022f\4\0\1\u01fa\1\u0266\1\u01fa"+
-- "\1\0\2\u0266\1\u01fa\1\u0230\3\0\2\u01fa\2\0\1\u01fa"+
-- "\1\u0230\2\u01fa\1\u0266\1\u01fa\1\u0230\1\u01fa\7\0\25\u0266"+
-- "\4\u01fa\1\u0266\1\0\3\u0266\6\0\1\u0266\5\0\1\u0267"+
-- "\2\0\2\u0267\1\0\1\u0231\13\0\1\u0267\1\0\1\u0231"+
-- "\10\0\25\u0267\4\0\1\u0267\1\0\3\u0267\6\0\1\u0267"+
-- "\4\0\1\147\1\u0267\1\147\1\0\2\u0267\1\147\1\u0231"+
-- "\13\0\1\u0267\1\147\1\u0232\1\147\7\0\25\u0267\4\147"+
-- "\1\u0267\1\0\3\u0267\6\0\1\u0267\4\0\3\147\1\0"+
-- "\3\147\1\u0268\13\0\2\147\1\u0269\1\147\6\0\1\151"+
-- "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\1\u026a\13\0\2\147\1\u026b\1\147\7\0\32\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\1\u026c\13\0\2\147\1\u026d\1\147\7\0\32\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\5\147\1\u026e\24\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\2\147\1\u026f\27\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\1\147\1\u0270"+
-- "\30\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\4\147\1\u0271\25\147\1\0"+
-- "\3\147\6\0\1\147\3\0\11\u023b\3\0\13\u023b\1\0"+
-- "\60\u023b\3\u023c\1\u023b\3\u023c\1\u0272\3\0\1\u0204\7\u023b"+
-- "\3\u023c\1\u0273\7\u023b\32\u023c\1\u023b\3\u023c\6\u023b\1\u023c"+
-- "\4\u023b\3\u023d\1\u023b\3\u023d\1\u023b\3\0\10\u023b\3\u023d"+
-- "\1\147\7\u023b\32\u023d\1\u023b\3\u023d\6\u023b\1\u023d\3\u023b"+
-- "\2\0\1\u0274\2\0\2\u0274\1\0\1\u023f\7\0\1\u0275"+
-- "\3\0\1\u0274\1\0\1\u023f\10\0\25\u0274\4\0\1\u0274"+
-- "\1\0\3\u0274\6\0\1\u0274\4\0\1\147\1\u0276\1\147"+
-- "\1\0\2\u0276\1\147\1\u023f\7\0\1\u0275\3\0\1\u0276"+
-- "\1\147\1\u0240\1\147\7\0\25\u0276\4\147\1\u0276\1\0"+
-- "\3\u0276\6\0\1\u0276\13\0\1\u0241\7\0\1\u0242\5\0"+
-- "\1\u0241\61\0\3\u0277\1\0\4\u0277\3\0\2\u0277\2\0"+
-- "\10\u0277\7\0\32\u0277\1\0\3\u0277\6\0\1\u0277\3\0"+
-- "\11\u0244\3\0\13\u0244\1\0\60\u0244\1\u0245\1\u0244\1\u0245"+
-- "\3\u0244\1\u0245\1\u0278\3\0\12\u0244\1\u0278\1\0\34\u0244"+
-- "\4\u0245\20\u0244\1\u0246\1\u0247\1\u0246\1\u0244\2\u0247\1\u0246"+
-- "\1\u0278\3\0\10\u0244\2\u0247\1\u0279\1\147\7\u0244\25\u0247"+
-- "\4\u0246\1\u0247\1\u0244\3\u0247\6\u0244\1\u0247\4\u0244\3\u0247"+
-- "\1\u0244\3\u0247\1\u0244\3\0\10\u0244\3\u0247\1\147\7\u0244"+
-- "\32\u0247\1\u0244\3\u0247\6\u0244\1\u0247\3\u0244\54\0\1\u027a"+
-- "\106\0\1\u027b\51\0\1\u027c\151\0\1\u027d\22\0\1\u027e"+
-- "\1\0\4\u024e\1\u027f\4\u024e\2\357\1\76\13\u024e\1\357"+
-- "\1\u024e\1\u0280\1\u024e\1\u0281\1\u012e\1\u024e\1\u012e\50\u024e"+
-- "\4\u0282\1\u0283\4\u0282\2\357\1\76\13\u0282\1\357\1\u0282"+
-- "\1\u012d\1\u0284\1\u012f\1\u016d\1\u0282\1\u016d\50\u0282\3\u016b"+
-- "\1\u0218\3\u016b\1\u0218\1\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3"+
-- "\1\u01a5\2\u016b\1\u01a3\30\u016b\1\u0218\1\u016b\2\u0218\23\u016b"+
-- "\1\u0285\1\u016b\1\u0286\2\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3"+
-- "\1\u01a5\2\u016b\1\u01a3\54\u016b\3\u0287\3\u016b\1\u0287\1\u016b"+
-- "\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\2\u016b\1\u01a3\12\u016b"+
-- "\2\u0287\3\u016b\1\u0287\1\u016b\1\u0287\1\u016b\1\u0287\2\u016b"+
-- "\1\u0287\1\u016b\4\u0287\2\u016b\1\u0287\1\u016b\1\u0287\15\u016b"+
-- "\1\u0250\3\u016b\1\u0250\1\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3"+
-- "\1\u01a5\2\u016b\1\u01a3\30\u016b\1\u0250\1\u016b\2\u0250\17\u016b"+
-- "\4\u0254\1\u0288\4\u0254\3\76\13\u0254\1\76\1\u0254\1\u0289"+
-- "\1\u0254\1\u028a\1\230\1\u0254\1\230\50\u0254\4\u028b\1\u028c"+
-- "\4\u028b\3\76\13\u028b\1\76\1\u028b\1\227\1\u028d\1\231"+
-- "\1\235\1\u028b\1\235\50\u028b\3\232\1\u021f\3\232\1\u021f"+
-- "\20\232\1\356\2\232\1\u01a4\30\232\1\u021f\1\232\2\u021f"+
-- "\23\232\1\u028e\1\232\1\u028f\21\232\1\356\2\232\1\u01a4"+
-- "\54\232\3\u0290\3\232\1\u0290\20\232\1\356\2\232\1\u01a4"+
-- "\12\232\2\u0290\3\232\1\u0290\1\232\1\u0290\1\232\1\u0290"+
-- "\2\232\1\u0290\1\232\4\u0290\2\232\1\u0290\1\232\1\u0290"+
-- "\15\232\1\u0256\3\232\1\u0256\20\232\1\356\2\232\1\u01a4"+
-- "\30\232\1\u0256\1\232\2\u0256\17\232\1\233\3\u016d\3\233"+
-- "\1\u016d\1\233\2\357\1\76\13\233\1\357\16\233\2\u016d"+
-- "\3\233\1\u016d\1\233\1\u016d\1\233\1\u016d\2\233\1\u016d"+
-- "\1\233\4\u016d\2\233\1\u016d\1\233\1\u016d\12\233\11\256"+
-- "\2\125\1\126\13\256\1\125\15\256\1\u0291\52\256\2\125"+
-- "\1\126\13\256\1\125\4\256\1\u0292\63\256\2\125\1\126"+
-- "\13\256\1\125\14\256\1\u0293\42\256\1\0\3\147\1\0"+
-- "\3\147\1\u0294\13\0\2\147\1\u0295\1\147\6\0\1\151"+
-- "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\15\147\1\u0296\14\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\7\147\1\u0243\22\147\1\0\3\147\6\0"+
-- "\1\147\3\0\10\u022b\1\u0263\3\0\2\u01f4\10\u022b\1\u0263"+
-- "\1\0\57\u022b\1\0\3\u0264\1\0\3\u0264\1\u0297\3\0"+
-- "\2\u0298\6\0\4\u0264\7\0\32\u0264\1\0\3\u0264\6\0"+
-- "\1\u0264\4\0\3\u022f\1\0\3\u022f\1\u0265\3\0\2\u022f"+
-- "\1\u01f8\1\0\1\u022f\1\u0265\4\u022f\1\u0265\1\u022f\7\0"+
-- "\32\u022f\1\0\3\u022f\6\0\1\u022f\4\0\3\u0266\1\0"+
-- "\3\u0266\1\u0299\3\0\1\u0230\1\u01fa\1\u01f8\1\0\1\u029a"+
-- "\1\u0230\2\u01fa\4\u0266\7\0\32\u0266\1\0\3\u0266\6\0"+
-- "\1\u0266\4\0\3\u0267\1\0\3\u0267\1\u029b\3\0\1\u0231"+
-- "\3\0\1\u029c\3\0\4\u0267\7\0\32\u0267\1\0\3\u0267"+
-- "\6\0\1\u0267\3\0\2\u029d\1\u029e\2\u029d\2\u029e\1\u029d"+
-- "\1\u0268\3\0\10\u029d\1\u029e\1\u029d\1\u0268\1\0\7\u029d"+
-- "\25\u029e\4\u029d\1\u029e\1\u029d\3\u029e\6\u029d\1\u029e\4\u029d"+
-- "\1\u029f\1\u029e\1\u029f\1\u029d\2\u029e\1\u029f\1\u0268\3\0"+
-- "\10\u029d\1\u029e\1\u029f\1\u0269\1\147\7\u029d\25\u029e\4\u029f"+
-- "\1\u029e\1\u029d\3\u029e\6\u029d\1\u029e\3\u029d\10\0\1\u026a"+
-- "\15\0\1\u026a\12\0\1\u02a0\5\0\1\u02a1\40\0\3\147"+
-- "\1\0\3\147\1\u026a\13\0\2\147\1\u026b\1\147\7\0"+
-- "\2\147\1\u02a2\5\147\1\u02a3\21\147\1\0\3\147\6\0"+
-- "\1\147\5\0\1\u02a4\2\0\2\u02a4\1\0\1\u026c\13\0"+
-- "\1\u02a4\1\0\1\u026c\10\0\25\u02a4\4\0\1\u02a4\1\0"+
-- "\3\u02a4\6\0\1\u02a4\4\0\1\147\1\u02a4\1\147\1\0"+
-- "\2\u02a4\1\147\1\u026c\13\0\1\u02a4\1\147\1\u026d\1\147"+
-- "\7\0\25\u02a4\4\147\1\u02a4\1\0\3\u02a4\6\0\1\u02a4"+
-- "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\6\147"+
-- "\1\u02a5\23\147\1\0\3\147\6\0\1\147\4\0\3\147"+
-- "\1\0\3\147\14\0\4\147\7\0\7\147\1\u02a6\22\147"+
-- "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
-- "\14\0\4\147\7\0\7\147\1\u02a7\22\147\1\0\3\147"+
-- "\6\0\1\147\4\0\3\147\1\0\3\147\1\u02a8\13\0"+
-- "\2\147\1\u02a9\1\147\7\0\32\147\1\0\3\147\6\0"+
-- "\1\147\3\0\10\u023b\1\u0272\3\0\1\u0204\11\u023b\1\u0272"+
-- "\1\0\57\u023b\1\0\3\u0273\1\0\3\u0273\1\u02aa\3\0"+
-- "\1\u02ab\7\0\4\u0273\7\0\32\u0273\1\0\3\u0273\6\0"+
-- "\1\u0273\4\0\3\u0274\1\0\3\u0274\1\u02ac\3\0\1\u02ad"+
-- "\1\0\1\u02ae\1\0\1\u02af\3\0\2\u0274\1\u02b0\1\u0274"+
-- "\7\0\32\u0274\1\0\3\u0274\6\0\1\u0274\4\0\3\u02b1"+
-- "\1\0\4\u02b1\3\0\2\u02b1\2\0\10\u02b1\7\0\32\u02b1"+
-- "\1\0\3\u02b1\6\0\1\u02b1\4\0\3\u0276\1\0\3\u0276"+
-- "\1\u02ac\3\0\1\u02ad\1\0\1\u02ae\1\0\1\u02af\3\0"+
-- "\2\u0276\1\u02b2\1\u0276\7\0\32\u0276\1\0\3\u0276\6\0"+
-- "\1\u0276\4\0\3\u0277\1\0\4\u0277\3\0\2\u0277\2\0"+
-- "\1\u0277\1\u02b3\6\u0277\7\0\32\u0277\1\0\3\u0277\6\0"+
-- "\1\u0277\3\0\10\u0244\1\u0278\3\0\12\u0244\1\u0278\1\0"+
-- "\60\u0244\3\u0247\1\u0244\3\u0247\1\u0278\3\0\10\u0244\2\u0247"+
-- "\1\u0279\1\147\7\u0244\32\u0247\1\u0244\3\u0247\6\u0244\1\u0247"+
-- "\3\u0244\46\0\1\u02b4\106\0\1\u02b5\77\0\1\u02b6\66\0"+
-- "\1\u02b7\67\0\11\u024e\2\357\1\76\13\u024e\1\357\1\u024e"+
-- "\1\u0280\1\u012e\1\u0281\1\u012e\1\u024e\1\u012e\54\u024e\1\u027f"+
-- "\4\u024e\2\357\1\76\13\u024e\1\357\1\u01dd\1\u012e\1\357"+
-- "\54\u024e\4\u0284\1\u02b8\4\u0284\2\357\1\76\13\u0284\1\357"+
-- "\2\u0284\1\u0282\1\u012e\53\u0284\13\357\1\76\15\357\1\u012d"+
-- "\1\u012e\1\u024f\1\233\1\357\1\233\50\357\3\u0282\1\u02b9"+
-- "\1\u02ba\1\u0282\1\u02bb\1\u02bc\1\u0282\2\357\1\76\13\u0282"+
-- "\1\357\1\u0282\1\u012d\1\u0284\1\u02bd\1\u016d\1\u0282\1\u016d"+
-- "\25\u0282\1\u02b9\1\u0282\1\u02bc\1\u02b9\17\u0282\4\u012e\1\u016c"+
-- "\4\u012e\2\357\1\76\13\u012e\1\357\2\u012e\1\357\1\u024e"+
-- "\53\u012e\4\u016b\1\u0285\1\u016b\1\u0286\2\u016b\2\u01a3\1\u01a4"+
-- "\13\u016b\1\u01a3\1\u01a5\57\u016b\3\u0287\3\u016b\1\u0287\1\u016b"+
-- "\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\15\u016b\2\u0287\3\u016b"+
-- "\1\u0287\1\u016b\1\u0287\1\u016b\1\u0287\2\u016b\1\u0287\1\u016b"+
-- "\4\u0287\2\u016b\1\u0287\1\u016b\1\u0287\13\u016b\3\u02be\3\u016b"+
-- "\1\u02be\1\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\15\u016b"+
-- "\2\u02be\3\u016b\1\u02be\1\u016b\1\u02be\1\u016b\1\u02be\2\u016b"+
-- "\1\u02be\1\u016b\4\u02be\2\u016b\1\u02be\1\u016b\1\u02be\12\u016b"+
-- "\11\u0254\3\76\13\u0254\1\76\1\u0254\1\u0289\1\230\1\u028a"+
-- "\1\230\1\u0254\1\230\54\u0254\1\u0288\4\u0254\3\76\13\u0254"+
-- "\1\76\1\u01e1\1\u012e\1\76\54\u0254\4\u028d\1\u02bf\4\u028d"+
-- "\3\0\13\u028d\1\0\2\u028d\1\u028b\1\230\53\u028d\31\76"+
-- "\1\227\1\230\1\u0255\1\0\1\76\1\0\50\76\3\u028b"+
-- "\1\u02c0\1\u02c1\1\u028b\1\u02c2\1\u02c3\1\u028b\3\76\13\u028b"+
-- "\1\76\1\u028b\1\227\1\u028d\1\u02c4\1\235\1\u028b\1\235"+
-- "\25\u028b\1\u02c0\1\u028b\1\u02c3\1\u02c0\17\u028b\4\230\1\234"+
-- "\4\230\3\0\13\230\1\0\2\230\1\76\1\u0254\53\230"+
-- "\4\232\1\u028e\1\232\1\u028f\21\232\1\356\57\232\3\u0290"+
-- "\3\232\1\u0290\20\232\1\356\15\232\2\u0290\3\232\1\u0290"+
-- "\1\232\1\u0290\1\232\1\u0290\2\232\1\u0290\1\232\4\u0290"+
-- "\2\232\1\u0290\1\232\1\u0290\13\232\3\u02c5\3\232\1\u02c5"+
-- "\20\232\1\356\15\232\2\u02c5\3\232\1\u02c5\1\232\1\u02c5"+
-- "\1\232\1\u02c5\2\232\1\u02c5\1\232\4\u02c5\2\232\1\u02c5"+
-- "\1\232\1\u02c5\12\232\11\256\2\125\1\126\13\256\1\125"+
-- "\4\256\1\u02c6\52\256\11\u0292\2\u02c7\1\u02c8\13\u0292\1\u02c7"+
-- "\57\u0292\11\256\2\125\1\126\13\256\1\125\15\256\1\u02c9"+
-- "\41\256\2\u02ca\1\u02cb\2\u02ca\2\u02cb\1\u02ca\1\u0294\3\0"+
-- "\10\u02ca\1\u02cb\1\u02ca\1\u0294\1\0\7\u02ca\25\u02cb\4\u02ca"+
-- "\1\u02cb\1\u02ca\3\u02cb\6\u02ca\1\u02cb\4\u02ca\1\u02cc\1\u02cb"+
-- "\1\u02cc\1\u02ca\2\u02cb\1\u02cc\1\u0294\3\0\10\u02ca\1\u02cb"+
-- "\1\u02cc\1\u0295\1\147\7\u02ca\25\u02cb\4\u02cc\1\u02cb\1\u02ca"+
-- "\3\u02cb\6\u02ca\1\u02cb\3\u02ca\1\0\3\147\1\0\3\147"+
-- "\1\u02cd\13\0\2\147\1\u02cd\1\147\7\0\32\147\1\0"+
-- "\3\147\6\0\1\147\13\0\1\u0297\3\0\2\u0298\10\0"+
-- "\1\u0297\62\0\1\u0264\2\0\2\u0264\1\0\1\u0298\13\0"+
-- "\1\u0264\1\0\1\u0298\10\0\25\u0264\4\0\1\u0264\1\0"+
-- "\3\u0264\6\0\1\u0264\4\0\3\u01fa\1\0\3\u01fa\1\u0299"+
-- "\3\0\1\u0230\1\u01fa\1\u01f8\1\0\1\u029a\1\u0230\4\u01fa"+
-- "\1\u0299\1\u01fa\7\0\32\u01fa\1\0\3\u01fa\6\0\1\u01fa"+
-- "\4\0\3\u02ce\1\0\4\u02ce\3\0\2\u02ce\2\0\1\u02ce"+
-- "\1\u02cf\6\u02ce\7\0\32\u02ce\1\0\3\u02ce\6\0\1\u02ce"+
-- "\13\0\1\u029b\3\0\1\u0231\3\0\1\u029c\5\0\1\u029b"+
-- "\61\0\3\u02d0\1\0\4\u02d0\3\0\2\u02d0\2\0\10\u02d0"+
-- "\7\0\32\u02d0\1\0\3\u02d0\6\0\1\u02d0\3\0\11\u029d"+
-- "\3\0\13\u029d\1\0\60\u029d\3\u029e\1\u029d\3\u029e\1\u02d1"+
-- "\3\0\2\u0268\6\u029d\3\u029e\1\u02d2\7\u029d\32\u029e\1\u029d"+
-- "\3\u029e\6\u029d\1\u029e\4\u029d\3\u029f\1\u029d\3\u029f\1\u029d"+
-- "\3\0\10\u029d\3\u029f\1\147\7\u029d\32\u029f\1\u029d\3\u029f"+
-- "\6\u029d\1\u029f\3\u029d\43\0\1\u02d3\116\0\1\u02d4\34\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\4\147\1\u02d5"+
-- "\25\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
-- "\3\147\14\0\4\147\7\0\14\147\1\u02d6\15\147\1\0"+
-- "\3\147\6\0\1\147\4\0\3\u02a4\1\0\3\u02a4\1\u02d7"+
-- "\13\0\4\u02a4\7\0\32\u02a4\1\0\3\u02a4\6\0\1\u02a4"+
-- "\4\0\3\147\1\0\3\147\1\u02d8\13\0\2\147\1\u02d9"+
-- "\1\147\6\0\1\151\32\147\1\0\3\147\6\0\1\147"+
-- "\3\0\2\u02da\1\u02db\2\u02da\2\u02db\1\u02da\1\u02a8\3\0"+
-- "\10\u02da\1\u02db\1\u02da\1\u02a8\1\0\7\u02da\25\u02db\4\u02da"+
-- "\1\u02db\1\u02da\3\u02db\6\u02da\1\u02db\4\u02da\1\u02dc\1\u02db"+
-- "\1\u02dc\1\u02da\2\u02db\1\u02dc\1\u02a8\3\0\10\u02da\1\u02db"+
-- "\1\u02dc\1\u02a9\1\147\7\u02da\25\u02db\4\u02dc\1\u02db\1\u02da"+
-- "\3\u02db\6\u02da\1\u02db\3\u02da\10\0\1\u02aa\3\0\1\u02ab"+
-- "\11\0\1\u02aa\62\0\1\u0273\2\0\2\u0273\1\0\1\u02ab"+
-- "\13\0\1\u0273\1\0\1\u02ab\10\0\25\u0273\4\0\1\u0273"+
-- "\1\0\3\u0273\6\0\1\u0273\13\0\1\u02ac\3\0\1\u02ad"+
-- "\1\0\1\u02ae\1\0\1\u02af\5\0\1\u02ac\62\0\1\u0274"+
-- "\2\0\2\u0274\1\0\1\u02ad\13\0\1\u0274\1\0\1\u02ad"+
-- "\10\0\25\u0274\4\0\1\u0274\1\0\3\u0274\6\0\1\u0274"+
-- "\13\0\1\u02ae\6\0\1\u02dd\6\0\1\u02ae\61\0\3\u02de"+
-- "\1\0\4\u02de\3\0\2\u02de\2\0\10\u02de\7\0\32\u02de"+
-- "\1\0\3\u02de\6\0\1\u02de\4\0\3\u02b1\1\0\4\u02b1"+
-- "\3\0\2\u02b1\2\0\1\u02b1\1\u02df\6\u02b1\7\0\32\u02b1"+
-- "\1\0\3\u02b1\6\0\1\u02b1\4\0\3\u0277\1\0\3\u0277"+
-- "\1\u02b3\3\0\2\u0277\2\0\1\u0277\1\u02b3\4\u0277\1\u02b3"+
-- "\1\u0277\7\0\32\u0277\1\0\3\u0277\6\0\1\u0277\110\0"+
-- "\1\u02e0\106\0\1\u02e1\64\0\1\u02e2\23\0\3\u0284\1\u02e3"+
-- "\1\u02e4\1\u0284\1\u02e5\1\u02e6\1\u0284\2\357\1\76\13\u0284"+
-- "\1\357\34\u0284\1\u02e3\1\u0284\1\u02e6\1\u02e3\17\u0284\3\357"+
-- "\1\u0282\3\357\1\u0282\3\357\1\76\15\357\1\u012d\1\u012e"+
-- "\1\u024f\1\233\1\357\1\233\25\357\1\u0282\1\357\2\u0282"+
-- "\23\357\1\u02e7\1\357\1\u02e8\4\357\1\76\15\357\1\u012d"+
-- "\1\u012e\1\u024f\1\233\1\357\1\233\51\357\3\u02e9\3\357"+
-- "\1\u02e9\3\357\1\76\15\357\1\u012d\1\u012e\1\u024f\1\233"+
-- "\1\357\1\233\7\357\2\u02e9\3\357\1\u02e9\1\357\1\u02e9"+
-- "\1\357\1\u02e9\2\357\1\u02e9\1\357\4\u02e9\2\357\1\u02e9"+
-- "\1\357\1\u02e9\15\357\1\u02b9\3\357\1\u02b9\3\357\1\76"+
-- "\15\357\1\u012d\1\u012e\1\u024f\1\233\1\357\1\233\25\357"+
-- "\1\u02b9\1\357\2\u02b9\17\357\4\u016d\1\u016e\4\u016d\2\357"+
-- "\1\76\13\u016d\1\357\3\u016d\1\357\53\u016d\1\u016b\3\u02ea"+
-- "\3\u016b\1\u02ea\1\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5"+
-- "\15\u016b\2\u02ea\3\u016b\1\u02ea\1\u016b\1\u02ea\1\u016b\1\u02ea"+
-- "\2\u016b\1\u02ea\1\u016b\4\u02ea\2\u016b\1\u02ea\1\u016b\1\u02ea"+
-- "\12\u016b\3\u028d\1\u02eb\1\u02ec\1\u028d\1\u02ed\1\u02ee\1\u028d"+
-- "\3\0\13\u028d\1\0\34\u028d\1\u02eb\1\u028d\1\u02ee\1\u02eb"+
-- "\17\u028d\3\76\1\u028b\3\76\1\u028b\21\76\1\227\1\230"+
-- "\1\u0255\1\0\1\76\1\0\25\76\1\u028b\1\76\2\u028b"+
-- "\23\76\1\u02ef\1\76\1\u02f0\22\76\1\227\1\230\1\u0255"+
-- "\1\0\1\76\1\0\51\76\3\u02f1\3\76\1\u02f1\21\76"+
-- "\1\227\1\230\1\u0255\1\0\1\76\1\0\7\76\2\u02f1"+
-- "\3\76\1\u02f1\1\76\1\u02f1\1\76\1\u02f1\2\76\1\u02f1"+
-- "\1\76\4\u02f1\2\76\1\u02f1\1\76\1\u02f1\15\76\1\u02c0"+
-- "\3\76\1\u02c0\21\76\1\227\1\230\1\u0255\1\0\1\76"+
-- "\1\0\25\76\1\u02c0\1\76\2\u02c0\17\76\4\235\1\236"+
-- "\4\235\3\0\13\235\1\0\3\235\1\76\53\235\1\232"+
-- "\3\u02f2\3\232\1\u02f2\20\232\1\356\15\232\2\u02f2\3\232"+
-- "\1\u02f2\1\232\1\u02f2\1\232\1\u02f2\2\232\1\u02f2\1\232"+
-- "\4\u02f2\2\232\1\u02f2\1\232\1\u02f2\12\232\11\u02c6\2\u02f3"+
-- "\1\u02f4\13\u02c6\1\u02f3\57\u02c6\11\256\2\125\1\126\13\256"+
-- "\1\125\4\256\1\u02f5\52\256\11\u02ca\3\0\13\u02ca\1\0"+
-- "\60\u02ca\3\u02cb\1\u02ca\3\u02cb\1\u02f6\3\0\2\u0294\6\u02ca"+
-- "\3\u02cb\1\u02f7\7\u02ca\32\u02cb\1\u02ca\3\u02cb\6\u02ca\1\u02cb"+
-- "\4\u02ca\3\u02cc\1\u02ca\3\u02cc\1\u02ca\3\0\10\u02ca\3\u02cc"+
-- "\1\147\7\u02ca\32\u02cc\1\u02ca\3\u02cc\6\u02ca\1\u02cc\3\u02ca"+
-- "\13\u02cd\1\0\73\u02cd\1\0\3\u02ce\1\0\4\u02ce\3\0"+
-- "\2\u02ce\2\0\1\u02ce\1\u02f8\6\u02ce\7\0\32\u02ce\1\0"+
-- "\3\u02ce\6\0\1\u02ce\4\0\1\u02ce\1\u02f9\1\u02ce\1\0"+
-- "\2\u02f9\1\u02ce\1\u02cf\3\0\2\u02ce\2\0\1\u02ce\1\u02f8"+
-- "\2\u02ce\1\u02f9\1\u02ce\1\u02cf\1\u02ce\7\0\25\u02f9\4\u02ce"+
-- "\1\u02f9\1\0\3\u02f9\6\0\1\u02f9\4\0\3\u02d0\1\0"+
-- "\4\u02d0\3\0\2\u02d0\2\0\1\u02d0\1\u02fa\6\u02d0\7\0"+
-- "\32\u02d0\1\0\3\u02d0\6\0\1\u02d0\3\0\10\u029d\1\u02d1"+
-- "\3\0\2\u0268\10\u029d\1\u02d1\1\0\57\u029d\1\0\3\u02d2"+
-- "\1\0\3\u02d2\1\u02fb\3\0\2\u02fc\6\0\4\u02d2\7\0"+
-- "\32\u02d2\1\0\3\u02d2\6\0\1\u02d2\11\0\1\u02fd\151\0"+
-- "\1\u02fe\36\0\3\147\1\0\1\147\1\u02ff\1\147\14\0"+
-- "\4\147\7\0\32\147\1\0\3\147\6\0\1\147\4\0"+
-- "\3\147\1\0\3\147\14\0\4\147\7\0\12\147\1\u0300"+
-- "\17\147\1\0\3\147\6\0\1\147\13\0\1\u02d7\15\0"+
-- "\1\u02d7\60\0\2\u0301\1\u0302\2\u0301\2\u0302\1\u0301\1\u02d8"+
-- "\3\0\10\u0301\1\u0302\1\u0301\1\u02d8\1\0\7\u0301\25\u0302"+
-- "\4\u0301\1\u0302\1\u0301\3\u0302\6\u0301\1\u0302\4\u0301\1\u0303"+
-- "\1\u0302\1\u0303\1\u0301\2\u0302\1\u0303\1\u02d8\3\0\10\u0301"+
-- "\1\u0302\1\u0303\1\u02d9\1\147\7\u0301\25\u0302\4\u0303\1\u0302"+
-- "\1\u0301\3\u0302\6\u0301\1\u0302\3\u0301\11\u02da\3\0\13\u02da"+
-- "\1\0\60\u02da\3\u02db\1\u02da\3\u02db\1\u0304\3\0\1\u02a8"+
-- "\7\u02da\3\u02db\1\u0305\7\u02da\32\u02db\1\u02da\3\u02db\6\u02da"+
-- "\1\u02db\4\u02da\3\u02dc\1\u02da\3\u02dc\1\u02da\3\0\10\u02da"+
-- "\3\u02dc\1\147\7\u02da\32\u02dc\1\u02da\3\u02dc\6\u02da\1\u02dc"+
-- "\3\u02da\10\0\1\u0306\5\0\1\u02ae\7\0\1\u0306\61\0"+
-- "\3\u02de\1\0\4\u02de\3\0\2\u02de\2\0\1\u02de\1\u0307"+
-- "\6\u02de\7\0\32\u02de\1\0\3\u02de\6\0\1\u02de\4\0"+
-- "\1\u02b1\1\u0308\1\u02b1\1\0\2\u0308\1\u02b1\1\u02df\3\0"+
-- "\2\u02b1\2\0\1\u02b1\1\u02df\2\u02b1\1\u0308\1\u02b1\1\u02df"+
-- "\1\u02b1\7\0\25\u0308\4\u02b1\1\u0308\1\0\3\u0308\6\0"+
-- "\1\u0308\22\0\1\u0309\106\0\1\u030a\126\0\1\u030b\47\0"+
-- "\3\u012e\1\u0284\1\u016c\2\u012e\1\u0284\1\u012e\2\357\1\76"+
-- "\13\u012e\1\357\2\u012e\1\357\1\u024e\30\u012e\1\u0284\1\u012e"+
-- "\2\u0284\23\u012e\1\u030c\1\u012e\1\u030d\2\u012e\2\357\1\76"+
-- "\13\u012e\1\357\2\u012e\1\357\1\u024e\54\u012e\3\u030e\1\u016c"+
-- "\2\u012e\1\u030e\1\u012e\2\357\1\76\13\u012e\1\357\2\u012e"+
-- "\1\357\1\u024e\12\u012e\2\u030e\3\u012e\1\u030e\1\u012e\1\u030e"+
-- "\1\u012e\1\u030e\2\u012e\1\u030e\1\u012e\4\u030e\2\u012e\1\u030e"+
-- "\1\u012e\1\u030e\15\u012e\1\u02e3\1\u016c\2\u012e\1\u02e3\1\u012e"+
-- "\2\357\1\76\13\u012e\1\357\2\u012e\1\357\1\u024e\30\u012e"+
-- "\1\u02e3\1\u012e\2\u02e3\17\u012e\4\357\1\u02e7\1\357\1\u02e8"+
-- "\4\357\1\76\15\357\1\u012d\1\u012e\1\u012f\1\233\1\357"+
-- "\1\233\51\357\3\u02e9\3\357\1\u02e9\3\357\1\76\15\357"+
-- "\1\u012d\1\u012e\1\u012f\1\233\1\357\1\233\7\357\2\u02e9"+
-- "\3\357\1\u02e9\1\357\1\u02e9\1\357\1\u02e9\2\357\1\u02e9"+
-- "\1\357\4\u02e9\2\357\1\u02e9\1\357\1\u02e9\13\357\3\u030f"+
-- "\3\357\1\u030f\3\357\1\76\15\357\1\u012d\1\u012e\1\u012f"+
-- "\1\233\1\357\1\233\7\357\2\u030f\3\357\1\u030f\1\357"+
-- "\1\u030f\1\357\1\u030f\2\357\1\u030f\1\357\4\u030f\2\357"+
-- "\1\u030f\1\357\1\u030f\12\357\1\u016b\3\u0218\3\u016b\1\u0218"+
-- "\1\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\15\u016b\2\u0218"+
-- "\3\u016b\1\u0218\1\u016b\1\u0218\1\u016b\1\u0218\2\u016b\1\u0218"+
-- "\1\u016b\4\u0218\2\u016b\1\u0218\1\u016b\1\u0218\12\u016b\3\230"+
-- "\1\u028d\1\234\2\230\1\u028d\1\230\3\0\13\230\1\0"+
-- "\2\230\1\76\1\u0254\30\230\1\u028d\1\230\2\u028d\23\230"+
-- "\1\u0310\1\230\1\u0311\2\230\3\0\13\230\1\0\2\230"+
-- "\1\76\1\u0254\54\230\3\u0312\1\234\2\230\1\u0312\1\230"+
-- "\3\0\13\230\1\0\2\230\1\76\1\u0254\12\230\2\u0312"+
-- "\3\230\1\u0312\1\230\1\u0312\1\230\1\u0312\2\230\1\u0312"+
-- "\1\230\4\u0312\2\230\1\u0312\1\230\1\u0312\15\230\1\u02eb"+
-- "\1\234\2\230\1\u02eb\1\230\3\0\13\230\1\0\2\230"+
-- "\1\76\1\u0254\30\230\1\u02eb\1\230\2\u02eb\17\230\4\76"+
-- "\1\u02ef\1\76\1\u02f0\22\76\1\227\1\230\1\231\1\0"+
-- "\1\76\1\0\51\76\3\u02f1\3\76\1\u02f1\21\76\1\227"+
-- "\1\230\1\231\1\0\1\76\1\0\7\76\2\u02f1\3\76"+
-- "\1\u02f1\1\76\1\u02f1\1\76\1\u02f1\2\76\1\u02f1\1\76"+
-- "\4\u02f1\2\76\1\u02f1\1\76\1\u02f1\13\76\3\u0313\3\76"+
-- "\1\u0313\21\76\1\227\1\230\1\231\1\0\1\76\1\0"+
-- "\7\76\2\u0313\3\76\1\u0313\1\76\1\u0313\1\76\1\u0313"+
-- "\2\76\1\u0313\1\76\4\u0313\2\76\1\u0313\1\76\1\u0313"+
-- "\12\76\1\232\3\u021f\3\232\1\u021f\20\232\1\356\15\232"+
-- "\2\u021f\3\232\1\u021f\1\232\1\u021f\1\232\1\u021f\2\232"+
-- "\1\u021f\1\232\4\u021f\2\232\1\u021f\1\232\1\u021f\12\232"+
-- "\11\u02f5\2\u0314\1\u0315\13\u02f5\1\u0314\57\u02f5\10\u02ca\1\u02f6"+
-- "\3\0\2\u0294\10\u02ca\1\u02f6\1\0\57\u02ca\1\0\3\u02f7"+
-- "\1\0\3\u02f7\1\u0316\3\0\2\u0317\6\0\4\u02f7\7\0"+
-- "\32\u02f7\1\0\3\u02f7\6\0\1\u02f7\4\0\1\u02ce\1\u02f9"+
-- "\1\u02ce\1\0\2\u02f9\1\u02ce\1\u02f8\3\0\2\u02ce\1\u01f8"+
-- "\1\0\1\u02ce\1\u02f8\2\u02ce\1\u02f9\1\u02ce\1\u02f8\1\u02ce"+
-- "\7\0\25\u02f9\4\u02ce\1\u02f9\1\0\3\u02f9\6\0\1\u02f9"+
-- "\4\0\3\u02f9\1\0\3\u02f9\1\u0318\3\0\1\u02cf\1\u02ce"+
-- "\1\u01f8\1\0\1\u02ce\1\u02f8\2\u02ce\4\u02f9\7\0\32\u02f9"+
-- "\1\0\3\u02f9\6\0\1\u02f9\4\0\3\u02d0\1\0\3\u02d0"+
-- "\1\u02fa\3\0\2\u02d0\2\0\1\u02d0\1\u02fa\4\u02d0\1\u02fa"+
-- "\1\u02d0\7\0\32\u02d0\1\0\3\u02d0\6\0\1\u02d0\13\0"+
-- "\1\u02fb\3\0\2\u02fc\10\0\1\u02fb\62\0\1\u02d2\2\0"+
-- "\2\u02d2\1\0\1\u02fc\13\0\1\u02d2\1\0\1\u02fc\10\0"+
-- "\25\u02d2\4\0\1\u02d2\1\0\3\u02d2\6\0\1\u02d2\51\0"+
-- "\1\u0319\114\0\1\u031a\33\0\3\147\1\0\3\147\14\0"+
-- "\4\147\7\0\7\147\1\u031b\22\147\1\0\3\147\6\0"+
-- "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-- "\15\147\1\u031c\14\147\1\0\3\147\6\0\1\147\3\0"+
-- "\11\u0301\3\0\13\u0301\1\0\60\u0301\3\u0302\1\u0301\3\u0302"+
-- "\1\u031d\3\0\2\u02d8\6\u0301\3\u0302\1\u031e\7\u0301\32\u0302"+
-- "\1\u0301\3\u0302\6\u0301\1\u0302\4\u0301\3\u0303\1\u0301\3\u0303"+
-- "\1\u0301\3\0\10\u0301\3\u0303\1\147\7\u0301\32\u0303\1\u0301"+
-- "\3\u0303\6\u0301\1\u0303\3\u0301\10\u02da\1\u0304\3\0\1\u02a8"+
-- "\11\u02da\1\u0304\1\0\57\u02da\1\0\3\u0305\1\0\3\u0305"+
-- "\1\u031f\3\0\1\u0320\7\0\4\u0305\7\0\32\u0305\1\0"+
-- "\3\u0305\6\0\1\u0305\4\0\3\u02de\1\0\3\u02de\1\u0321"+
-- "\3\0\2\u02de\1\u02ae\1\0\1\u02de\1\u0307\4\u02de\1\u0321"+
-- "\1\u02de\7\0\32\u02de\1\0\3\u02de\6\0\1\u02de\4\0"+
-- "\3\u0308\1\0\3\u0308\1\u0322\3\0\1\u02df\1\u02b1\1\u02ae"+
-- "\1\0\1\u0323\1\u02df\2\u02b1\2\u0308\1\u0324\1\u0308\7\0"+
-- "\32\u0308\1\0\3\u0308\6\0\1\u0308\44\0\1\u0325\45\0"+
-- "\4\u012e\1\u0326\1\u012e\1\u030d\2\u012e\2\357\1\76\13\u012e"+
-- "\1\357\60\u012e\3\u030e\1\u016c\2\u012e\1\u030e\1\u012e\2\357"+
-- "\1\76\13\u012e\1\357\2\u012e\1\357\13\u012e\2\u030e\3\u012e"+
-- "\1\u030e\1\u012e\1\u030e\1\u012e\1\u030e\2\u012e\1\u030e\1\u012e"+
-- "\4\u030e\2\u012e\1\u030e\1\u012e\1\u030e\13\u012e\3\u0327\1\u016c"+
-- "\2\u012e\1\u0327\1\u012e\2\357\1\76\13\u012e\1\357\2\u012e"+
-- "\1\357\13\u012e\2\u0327\3\u012e\1\u0327\1\u012e\1\u0327\1\u012e"+
-- "\1\u0327\2\u012e\1\u0327\1\u012e\4\u0327\2\u012e\1\u0327\1\u012e"+
-- "\1\u0327\12\u012e\1\357\3\u0328\3\357\1\u0328\3\357\1\76"+
-- "\15\357\1\u012d\1\u012e\1\u012f\1\233\1\357\1\233\7\357"+
-- "\2\u0328\3\357\1\u0328\1\357\1\u0328\1\357\1\u0328\2\357"+
-- "\1\u0328\1\357\4\u0328\2\357\1\u0328\1\357\1\u0328\12\357"+
-- "\4\230\1\u0329\1\230\1\u0311\2\230\3\0\13\230\1\0"+
-- "\60\230\3\u0312\1\234\2\230\1\u0312\1\230\3\0\13\230"+
-- "\1\0\2\230\1\76\13\230\2\u0312\3\230\1\u0312\1\230"+
-- "\1\u0312\1\230\1\u0312\2\230\1\u0312\1\230\4\u0312\2\230"+
-- "\1\u0312\1\230\1\u0312\13\230\3\u032a\1\234\2\230\1\u032a"+
-- "\1\230\3\0\13\230\1\0\2\230\1\76\13\230\2\u032a"+
-- "\3\230\1\u032a\1\230\1\u032a\1\230\1\u032a\2\230\1\u032a"+
-- "\1\230\4\u032a\2\230\1\u032a\1\230\1\u032a\12\230\1\76"+
-- "\3\u032b\3\76\1\u032b\21\76\1\227\1\230\1\231\1\0"+
-- "\1\76\1\0\7\76\2\u032b\3\76\1\u032b\1\76\1\u032b"+
-- "\1\76\1\u032b\2\76\1\u032b\1\76\4\u032b\2\76\1\u032b"+
-- "\1\76\1\u032b\12\76\10\0\1\u0316\3\0\2\u0317\10\0"+
-- "\1\u0316\62\0\1\u02f7\2\0\2\u02f7\1\0\1\u0317\13\0"+
-- "\1\u02f7\1\0\1\u0317\10\0\25\u02f7\4\0\1\u02f7\1\0"+
-- "\3\u02f7\6\0\1\u02f7\4\0\3\u02ce\1\0\3\u02ce\1\u0318"+
-- "\3\0\1\u02cf\1\u02ce\1\u01f8\1\0\1\u02ce\1\u02f8\4\u02ce"+
-- "\1\u0318\1\u02ce\7\0\32\u02ce\1\0\3\u02ce\6\0\1\u02ce"+
-- "\51\0\1\u032c\41\0\3\147\1\0\3\147\14\0\4\147"+
-- "\7\0\7\147\1\u032d\22\147\1\0\3\147\6\0\1\147"+
-- "\3\0\10\u0301\1\u031d\3\0\2\u02d8\10\u0301\1\u031d\1\0"+
-- "\57\u0301\1\0\3\u031e\1\0\3\u031e\1\u032e\3\0\2\u032f"+
-- "\6\0\4\u031e\7\0\32\u031e\1\0\3\u031e\6\0\1\u031e"+
-- "\13\0\1\u031f\3\0\1\u0320\11\0\1\u031f\62\0\1\u0305"+
-- "\2\0\2\u0305\1\0\1\u0320\13\0\1\u0305\1\0\1\u0320"+
-- "\10\0\25\u0305\4\0\1\u0305\1\0\3\u0305\6\0\1\u0305"+
-- "\4\0\3\u02b1\1\0\3\u02b1\1\u0322\3\0\1\u02df\1\u02b1"+
-- "\1\u02ae\1\0\1\u0323\1\u02df\4\u02b1\1\u0322\1\u02b1\7\0"+
-- "\32\u02b1\1\0\3\u02b1\6\0\1\u02b1\4\0\3\u0330\1\0"+
-- "\4\u0330\3\0\2\u0330\2\0\1\u0330\1\u0331\6\u0330\7\0"+
-- "\32\u0330\1\0\3\u0330\6\0\1\u0330\110\0\1\u0332\1\0"+
-- "\4\u012e\1\u030c\1\u012e\1\u030d\2\u012e\2\357\1\76\13\u012e"+
-- "\1\357\2\u012e\1\357\55\u012e\3\u0333\1\u016c\2\u012e\1\u0333"+
-- "\1\u012e\2\357\1\76\13\u012e\1\357\2\u012e\1\357\13\u012e"+
-- "\2\u0333\3\u012e\1\u0333\1\u012e\1\u0333\1\u012e\1\u0333\2\u012e"+
-- "\1\u0333\1\u012e\4\u0333\2\u012e\1\u0333\1\u012e\1\u0333\12\u012e"+
-- "\1\357\3\u0282\3\357\1\u0282\3\357\1\76\15\357\1\u012d"+
-- "\1\u012e\1\u012f\1\233\1\357\1\233\7\357\2\u0282\3\357"+
-- "\1\u0282\1\357\1\u0282\1\357\1\u0282\2\357\1\u0282\1\357"+
-- "\4\u0282\2\357\1\u0282\1\357\1\u0282\12\357\4\230\1\u0310"+
-- "\1\230\1\u0311\2\230\3\0\13\230\1\0\2\230\1\76"+
-- "\55\230\3\u0334\1\234\2\230\1\u0334\1\230\3\0\13\230"+
-- "\1\0\2\230\1\76\13\230\2\u0334\3\230\1\u0334\1\230"+
-- "\1\u0334\1\230\1\u0334\2\230\1\u0334\1\230\4\u0334\2\230"+
-- "\1\u0334\1\230\1\u0334\12\230\1\76\3\u028b\3\76\1\u028b"+
-- "\21\76\1\227\1\230\1\231\1\0\1\76\1\0\7\76"+
-- "\2\u028b\3\76\1\u028b\1\76\1\u028b\1\76\1\u028b\2\76"+
-- "\1\u028b\1\76\4\u028b\2\76\1\u028b\1\76\1\u028b\12\76"+
-- "\10\0\1\u032e\3\0\2\u032f\10\0\1\u032e\62\0\1\u031e"+
-- "\2\0\2\u031e\1\0\1\u032f\13\0\1\u031e\1\0\1\u032f"+
-- "\10\0\25\u031e\4\0\1\u031e\1\0\3\u031e\6\0\1\u031e"+
-- "\4\0\3\u0330\1\0\4\u0330\3\0\2\u0330\2\0\1\u0330"+
-- "\1\u0335\6\u0330\7\0\32\u0330\1\0\3\u0330\6\0\1\u0330"+
-- "\4\0\1\u0330\1\u0336\1\u0330\1\0\2\u0336\1\u0330\1\u0331"+
-- "\3\0\2\u0330\2\0\1\u0330\1\u0335\2\u0330\1\u0336\1\u0330"+
-- "\1\u0331\1\u0330\7\0\25\u0336\4\u0330\1\u0336\1\0\3\u0336"+
-- "\6\0\1\u0336\22\0\1\u0337\67\0\1\u012e\3\u0284\1\u016c"+
-- "\2\u012e\1\u0284\1\u012e\2\357\1\76\13\u012e\1\357\2\u012e"+
-- "\1\357\13\u012e\2\u0284\3\u012e\1\u0284\1\u012e\1\u0284\1\u012e"+
-- "\1\u0284\2\u012e\1\u0284\1\u012e\4\u0284\2\u012e\1\u0284\1\u012e"+
-- "\1\u0284\12\u012e\1\230\3\u028d\1\234\2\230\1\u028d\1\230"+
-- "\3\0\13\230\1\0\2\230\1\76\13\230\2\u028d\3\230"+
-- "\1\u028d\1\230\1\u028d\1\230\1\u028d\2\230\1\u028d\1\230"+
-- "\4\u028d\2\230\1\u028d\1\230\1\u028d\12\230\1\0\1\u0330"+
-- "\1\u0336\1\u0330\1\0\2\u0336\1\u0330\1\u0338\3\0\2\u0330"+
-- "\1\u02ae\1\0\1\u0330\1\u0335\2\u0330\1\u0336\1\u0330\1\u0338"+
-- "\1\u0330\7\0\25\u0336\4\u0330\1\u0336\1\0\3\u0336\6\0"+
-- "\1\u0336\4\0\3\u0336\1\0\3\u0336\1\u0339\3\0\1\u0331"+
-- "\1\u0330\1\u02ae\1\0\1\u0330\1\u0335\2\u0330\2\u0336\1\u033a"+
-- "\1\u0336\7\0\32\u0336\1\0\3\u0336\6\0\1\u0336\4\0"+
-- "\3\u0330\1\0\3\u0330\1\u0339\3\0\1\u0331\1\u0330\1\u02ae"+
-- "\1\0\1\u0330\1\u0335\4\u0330\1\u0339\1\u0330\7\0\32\u0330"+
-- "\1\0\3\u0330\6\0\1\u0330\3\0";
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\17\147\1\u01cb\12\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\20\147\1\u01cc\11\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\4\147\1\u01cd\25\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\1\147\1\u01ce\30\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\1\u01cf\13\0"+
-+ "\2\147\1\u01d0\1\147\7\0\32\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\7\147\1\u01d1\22\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\4\147\1\u01d2\25\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\21\147\1\u01d3\10\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\16\147\1\u01d4\13\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\7\147\1\u01d5\22\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\1\337"+
-+ "\13\0\2\147\1\340\1\147\7\0\15\147\1\u01d6\14\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\22\0\1\u01d7"+
-+ "\133\0\1\u01d8\107\0\1\u01d9\110\0\1\u01da\113\0\1\u01db"+
-+ "\103\0\1\u01dc\110\0\1\u01dd\70\0\1\u01de\67\0\13\u01a6"+
-+ "\1\u01a7\14\u01a6\1\u01df\1\u01e0\1\u01e1\1\u01e2\1\u016d\1\u01a6"+
-+ "\1\u016d\52\u01a6\30\u01a7\1\u01e3\1\u01e4\1\u01e5\1\u01e6\1\232"+
-+ "\1\u01a7\1\232\52\u01a7\11\u016d\2\u01a6\1\u01a7\13\u016d\1\u01a6"+
-+ "\1\u01a8\1\357\57\u016d\3\233\1\u016f\3\233\1\u016f\1\233"+
-+ "\2\357\1\76\13\233\1\357\3\233\1\357\30\233\1\u016f"+
-+ "\1\233\2\u016f\25\233\1\u01e7\1\233\1\u01e8\2\233\2\357"+
-+ "\1\76\13\233\1\357\3\233\1\357\56\233\3\u01e9\3\233"+
-+ "\1\u01e9\1\233\2\357\1\76\13\233\1\357\3\233\1\357"+
-+ "\12\233\2\u01e9\3\233\1\u01e9\1\233\1\u01e9\1\233\1\u01e9"+
-+ "\2\233\1\u01e9\1\233\4\u01e9\2\233\1\u01e9\1\233\1\u01e9"+
-+ "\17\233\1\u01a9\3\233\1\u01a9\1\233\2\357\1\76\13\233"+
-+ "\1\357\3\233\1\357\30\233\1\u01a9\1\233\2\u01a9\21\233"+
-+ "\1\0\3\235\3\0\1\235\36\0\2\235\3\0\1\235"+
-+ "\1\0\1\235\1\0\1\235\2\0\1\235\1\0\4\235"+
-+ "\2\0\1\235\1\0\1\235\14\0\11\u01ae\2\u01ea\1\u01eb"+
-+ "\13\u01ae\1\u01ea\61\u01ae\11\256\2\125\1\126\13\256\1\125"+
-+ "\12\256\1\u01ec\57\256\2\125\1\126\13\256\1\125\13\256"+
-+ "\1\u01ed\56\256\2\125\1\126\13\256\1\125\21\256\1\u01ee"+
-+ "\50\256\2\125\1\126\13\256\1\125\11\256\1\u01ef\47\256"+
-+ "\1\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
-+ "\1\u01f0\22\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\4\147"+
-+ "\1\u01f1\25\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\22\147"+
-+ "\1\u01f2\7\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\4\147"+
-+ "\1\u01f3\25\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
-+ "\1\u01f4\22\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
-+ "\1\u01f5\22\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\16\147"+
-+ "\1\u01f6\13\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\1\u01f7\2\147\14\0\4\147\7\0"+
-+ "\32\147\1\0\3\147\6\0\1\147\2\0\2\147\2\0"+
-+ "\3\147\1\0\3\147\1\u01f8\13\0\2\147\1\u01f9\1\147"+
-+ "\7\0\32\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\u01be\1\0\3\u01be\1\u01fa\3\0\1\u01fb\1\0"+
-+ "\1\u01fc\1\0\1\u01fd\3\0\4\u01be\7\0\32\u01be\1\0"+
-+ "\3\u01be\6\0\1\u01be\2\0\2\u01be\2\0\3\u01fe\1\0"+
-+ "\4\u01fe\3\0\2\u01fe\2\0\10\u01fe\7\0\32\u01fe\1\0"+
-+ "\3\u01fe\6\0\1\u01fe\2\0\2\u01fe\2\0\3\147\1\0"+
-+ "\3\147\14\0\4\147\7\0\15\147\1\u01ff\14\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\2\0\3\147\1\0"+
-+ "\3\147\14\0\4\147\7\0\5\147\1\u0200\24\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\2\0\3\147\1\0"+
-+ "\3\147\14\0\4\147\6\0\1\151\32\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\15\147\1\u0201\14\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\5\147\1\u0202\24\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\3\147\1\u0203\26\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\16\147\1\u0204\13\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\13\147\1\u0205\16\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\12\147\1\u0206\17\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\4\147\1\u0207\25\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\1\u0208\13\0\2\147\1\u0209\1\147\7\0\32\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\2\0\3\147\1\0"+
-+ "\1\147\1\u020a\1\147\14\0\4\147\7\0\32\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\2\0\3\147\1\0"+
-+ "\3\147\14\0\4\147\7\0\24\147\1\u020b\5\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\3\0\1\u020c\2\0"+
-+ "\2\u020c\1\0\1\u01cf\13\0\1\u020c\1\0\1\u01cf\10\0"+
-+ "\25\u020c\4\0\1\u020c\1\0\3\u020c\6\0\1\u020c\2\0"+
-+ "\2\u020c\2\0\1\147\1\u020c\1\147\1\0\2\u020c\1\147"+
-+ "\1\u01cf\13\0\1\u020c\1\147\1\u01d0\1\147\7\0\25\u020c"+
-+ "\4\147\1\u020c\1\0\3\u020c\6\0\1\u020c\2\0\2\u020c"+
-+ "\2\0\3\147\1\0\3\147\14\0\4\147\7\0\15\147"+
-+ "\1\u020d\14\147\1\0\3\147\6\0\1\147\2\0\2\147"+
-+ "\2\0\3\147\1\0\3\147\1\u020e\13\0\2\147\1\u020f"+
-+ "\1\147\7\0\32\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\2\0\3\147\1\0\3\147\1\334\13\0\2\147"+
-+ "\1\335\1\147\7\0\15\147\1\u0210\14\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\11\0\4\u01d7\12\0\2\u01d7"+
-+ "\6\0\1\u0211\134\0\1\u0212\103\0\1\u0213\110\0\1\u0214"+
-+ "\76\0\1\u0215\113\0\1\u0216\147\0\1\u0217\13\0\4\u0218"+
-+ "\12\0\2\u0218\61\0\13\u01a6\1\u01a7\14\u01a6\1\u01df\1\u0219"+
-+ "\1\u01e1\1\u01e2\1\u016d\1\u01a6\1\u016d\65\u01a6\1\u01a7\14\u01a6"+
-+ "\1\u021a\1\u016d\57\u01a6\4\u01e1\1\u021b\4\u01e1\2\u01a6\1\u01a7"+
-+ "\13\u01e1\1\u01a6\1\u021c\1\u01e1\1\u01a6\56\u01e1\4\u021d\1\u021e"+
-+ "\4\u021d\2\u01a6\1\u01a7\13\u021d\1\u01a6\1\u021f\2\u021d\1\u016d"+
-+ "\55\u021d\30\u01a7\1\u01e3\1\u0220\1\u01e5\1\u01e6\1\232\1\u01a7"+
-+ "\1\232\102\u01a7\1\u0221\1\u016d\57\u01a7\4\u01e5\1\u0222\4\u01e5"+
-+ "\3\232\13\u01e5\1\232\1\u0223\1\u01e5\1\u01a7\56\u01e5\4\u0224"+
-+ "\1\u0225\4\u0224\3\232\13\u0224\1\232\1\u0226\2\u0224\1\232"+
-+ "\55\u0224\4\233\1\u01e7\1\233\1\u01e8\2\233\2\357\1\76"+
-+ "\13\233\1\357\62\233\3\u01e9\3\233\1\u01e9\1\233\2\357"+
-+ "\1\76\13\233\1\357\16\233\2\u01e9\3\233\1\u01e9\1\233"+
-+ "\1\u01e9\1\233\1\u01e9\2\233\1\u01e9\1\233\4\u01e9\2\233"+
-+ "\1\u01e9\1\233\1\u01e9\15\233\3\u0227\3\233\1\u0227\1\233"+
-+ "\2\357\1\76\13\233\1\357\16\233\2\u0227\3\233\1\u0227"+
-+ "\1\233\1\u0227\1\233\1\u0227\2\233\1\u0227\1\233\4\u0227"+
-+ "\2\233\1\u0227\1\233\1\u0227\14\233\11\256\2\125\1\126"+
-+ "\13\256\1\125\13\256\1\u0228\56\256\2\125\1\126\13\256"+
-+ "\1\125\14\256\1\u0229\55\256\2\125\1\126\13\256\1\125"+
-+ "\4\256\1\u022a\65\256\2\125\1\126\13\256\1\125\12\256"+
-+ "\1\u022b\46\256\1\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\5\147\1\u022c\24\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\1\u022d\13\0"+
-+ "\2\147\1\u022d\1\147\7\0\32\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\1\147\1\u022e\30\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\14\147\1\u022f\15\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\1\0\2\u0230\1\u0231\2\u0230\2\u0231"+
-+ "\1\u0230\1\u01f8\3\0\10\u0230\1\u0231\1\u0230\1\u01f8\1\0"+
-+ "\7\u0230\25\u0231\4\u0230\1\u0231\1\u0230\3\u0231\6\u0230\1\u0231"+
-+ "\2\u0230\2\u0231\2\u0230\1\u0232\1\u0231\1\u0232\1\u0230\2\u0231"+
-+ "\1\u0232\1\u01f8\3\0\10\u0230\1\u0231\1\u0232\1\u01f9\1\147"+
-+ "\7\u0230\25\u0231\4\u0232\1\u0231\1\u0230\3\u0231\6\u0230\1\u0231"+
-+ "\2\u0230\2\u0231\1\u0230\10\0\1\u01fa\3\0\1\u01fb\1\0"+
-+ "\1\u01fc\1\0\1\u01fd\5\0\1\u01fa\64\0\1\u01be\2\0"+
-+ "\2\u01be\1\0\1\u01fb\13\0\1\u01be\1\0\1\u01fb\10\0"+
-+ "\25\u01be\4\0\1\u01be\1\0\3\u01be\6\0\1\u01be\2\0"+
-+ "\2\u01be\11\0\1\u01fc\6\0\1\u0233\6\0\1\u01fc\63\0"+
-+ "\3\u0234\1\0\4\u0234\3\0\2\u0234\2\0\10\u0234\7\0"+
-+ "\32\u0234\1\0\3\u0234\6\0\1\u0234\2\0\2\u0234\2\0"+
-+ "\3\u01fe\1\0\4\u01fe\3\0\2\u01fe\2\0\1\u01fe\1\u0235"+
-+ "\6\u01fe\7\0\32\u01fe\1\0\3\u01fe\6\0\1\u01fe\2\0"+
-+ "\2\u01fe\2\0\3\147\1\0\3\147\1\u0236\13\0\2\147"+
-+ "\1\u0237\1\147\7\0\32\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\6\147\1\u0238\23\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\7\147\1\u0239\22\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\1\147\1\u023a\30\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\4\147\1\u023b\25\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\2\147\1\u023c\27\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\14\147\1\u023d\15\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\5\147\1\u023e\24\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\5\147\1\u023f\24\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\1\0\2\u0240\1\u0241\2\u0240\2\u0241\1\u0240"+
-+ "\1\u0208\3\0\10\u0240\1\u0241\1\u0240\1\u0208\1\0\7\u0240"+
-+ "\25\u0241\4\u0240\1\u0241\1\u0240\3\u0241\6\u0240\1\u0241\2\u0240"+
-+ "\2\u0241\2\u0240\1\u0242\1\u0241\1\u0242\1\u0240\2\u0241\1\u0242"+
-+ "\1\u0208\3\0\10\u0240\1\u0241\1\u0242\1\u0209\1\147\7\u0240"+
-+ "\25\u0241\4\u0242\1\u0241\1\u0240\3\u0241\6\u0240\1\u0241\2\u0240"+
-+ "\2\u0241\1\u0240\1\0\3\147\1\0\3\147\14\0\4\147"+
-+ "\7\0\24\147\1\u0243\5\147\1\0\3\147\6\0\1\147"+
-+ "\2\0\2\147\2\0\3\147\1\0\3\147\1\u0244\13\0"+
-+ "\2\147\1\u0245\1\147\7\0\32\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\u020c\1\0\3\u020c\1\u0246"+
-+ "\7\0\1\u0247\3\0\4\u020c\7\0\32\u020c\1\0\3\u020c"+
-+ "\6\0\1\u020c\2\0\2\u020c\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\15\147\1\u0248\14\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\1\0\1\u0249\1\u024a\1\u0249"+
-+ "\1\u024a\3\u0249\1\u024a\1\u020e\3\0\12\u0249\1\u020e\1\0"+
-+ "\34\u0249\4\u024a\22\u0249\1\u024b\1\u024c\1\u024b\1\u0249\2\u024c"+
-+ "\1\u024b\1\u020e\3\0\10\u0249\2\u024c\1\u020f\1\147\7\u0249"+
-+ "\25\u024c\4\u024b\1\u024c\1\u0249\3\u024c\6\u0249\1\u024c\2\u0249"+
-+ "\2\u024c\1\u0249\46\0\1\u024d\115\0\1\u024e\110\0\1\u024f"+
-+ "\142\0\1\u0250\46\0\1\u0251\64\0\1\u0252\101\0\4\u0218"+
-+ "\12\0\2\u0218\6\0\1\u0253\52\0\13\357\1\76\14\357"+
-+ "\1\u01a6\1\u012e\1\u0254\1\u0255\55\357\11\u016d\2\u01a6\1\u01a7"+
-+ "\13\u016d\1\u01a6\1\u01a8\1\u01a6\57\u016d\11\u01e1\2\u01a6\1\u01a7"+
-+ "\13\u01e1\1\u01a6\1\u021c\64\u01e1\1\u021b\4\u01e1\2\u01a6\1\u01a7"+
-+ "\13\u01e1\1\u01a6\1\u021c\1\u0254\1\u01a6\56\u01e1\11\u016d\2\u01a6"+
-+ "\1\u01a7\13\u016d\1\u01a6\1\u01a8\2\u016d\1\u01a6\55\u016d\3\u021d"+
-+ "\1\u0256\1\u0257\1\u021d\1\u0258\1\u0259\1\u021d\2\u01a6\1\u01a7"+
-+ "\13\u021d\1\u01a6\1\u021f\33\u021d\1\u0256\1\u021d\1\u0259\1\u0256"+
-+ "\21\u021d\11\u016d\2\u01a6\1\u01a7\13\u016d\1\u01a6\1\u01a8\1\357"+
-+ "\1\u016d\1\u01a6\55\u016d\30\76\1\u01a7\1\u012e\1\u025a\1\u025b"+
-+ "\55\76\30\232\1\356\1\u01a7\57\232\11\u01e5\3\232\13\u01e5"+
-+ "\1\232\1\u0223\64\u01e5\1\u0222\4\u01e5\3\232\13\u01e5\1\232"+
-+ "\1\u0223\1\u025a\1\u01a7\56\u01e5\30\232\1\356\2\232\1\u01a7"+
-+ "\55\232\3\u0224\1\u025c\1\u025d\1\u0224\1\u025e\1\u025f\1\u0224"+
-+ "\3\232\13\u0224\1\232\1\u0226\33\u0224\1\u025c\1\u0224\1\u025f"+
-+ "\1\u025c\21\u0224\30\232\1\356\1\76\1\232\1\u01a7\55\232"+
-+ "\1\233\3\u0260\3\233\1\u0260\1\233\2\357\1\76\13\233"+
-+ "\1\357\16\233\2\u0260\3\233\1\u0260\1\233\1\u0260\1\233"+
-+ "\1\u0260\2\233\1\u0260\1\233\4\u0260\2\233\1\u0260\1\233"+
-+ "\1\u0260\14\233\11\256\2\125\1\126\13\256\1\125\14\256"+
-+ "\1\u0261\55\256\2\125\1\126\13\256\1\125\15\256\1\u0262"+
-+ "\43\256\11\u022a\2\u0263\1\u0264\13\u022a\1\u0263\61\u022a\11\256"+
-+ "\2\125\1\126\13\256\1\125\13\256\1\u0265\45\256\1\0"+
-+ "\3\147\1\0\3\147\14\0\4\147\7\0\6\147\1\u0266"+
-+ "\23\147\1\0\3\147\6\0\1\147\2\0\2\147\1\0"+
-+ "\13\u022d\1\0\75\u022d\1\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\2\147\1\u0267\27\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\15\147\1\u0268\14\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\1\0\11\u0230\3\0\13\u0230\1\0"+
-+ "\62\u0230\3\u0231\1\u0230\3\u0231\1\u0269\3\0\2\u01f8\6\u0230"+
-+ "\3\u0231\1\u026a\7\u0230\32\u0231\1\u0230\3\u0231\6\u0230\1\u0231"+
-+ "\2\u0230\2\u0231\2\u0230\3\u0232\1\u0230\3\u0232\1\u0230\3\0"+
-+ "\10\u0230\3\u0232\1\147\7\u0230\32\u0232\1\u0230\3\u0232\6\u0230"+
-+ "\1\u0232\2\u0230\2\u0232\1\u0230\10\0\1\u0233\5\0\1\u01fc"+
-+ "\7\0\1\u0233\63\0\3\u0234\1\0\4\u0234\3\0\2\u0234"+
-+ "\2\0\1\u0234\1\u026b\6\u0234\7\0\32\u0234\1\0\3\u0234"+
-+ "\6\0\1\u0234\2\0\2\u0234\2\0\1\u01fe\1\u026c\1\u01fe"+
-+ "\1\0\2\u026c\1\u01fe\1\u0235\3\0\2\u01fe\2\0\1\u01fe"+
-+ "\1\u0235\2\u01fe\1\u026c\1\u01fe\1\u0235\1\u01fe\7\0\25\u026c"+
-+ "\4\u01fe\1\u026c\1\0\3\u026c\6\0\1\u026c\2\0\2\u026c"+
-+ "\3\0\1\u026d\2\0\2\u026d\1\0\1\u0236\13\0\1\u026d"+
-+ "\1\0\1\u0236\10\0\25\u026d\4\0\1\u026d\1\0\3\u026d"+
-+ "\6\0\1\u026d\2\0\2\u026d\2\0\1\147\1\u026d\1\147"+
-+ "\1\0\2\u026d\1\147\1\u0236\13\0\1\u026d\1\147\1\u0237"+
-+ "\1\147\7\0\25\u026d\4\147\1\u026d\1\0\3\u026d\6\0"+
-+ "\1\u026d\2\0\2\u026d\2\0\3\147\1\0\3\147\1\u026e"+
-+ "\13\0\2\147\1\u026f\1\147\6\0\1\151\32\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\2\0\3\147\1\0"+
-+ "\3\147\1\u0270\13\0\2\147\1\u0271\1\147\7\0\32\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\2\0\3\147"+
-+ "\1\0\3\147\1\u0272\13\0\2\147\1\u0273\1\147\7\0"+
-+ "\32\147\1\0\3\147\6\0\1\147\2\0\2\147\2\0"+
-+ "\3\147\1\0\3\147\14\0\4\147\7\0\5\147\1\u0274"+
-+ "\24\147\1\0\3\147\6\0\1\147\2\0\2\147\2\0"+
-+ "\3\147\1\0\3\147\14\0\4\147\7\0\2\147\1\u0275"+
-+ "\27\147\1\0\3\147\6\0\1\147\2\0\2\147\2\0"+
-+ "\3\147\1\0\3\147\14\0\4\147\7\0\1\147\1\u0276"+
-+ "\30\147\1\0\3\147\6\0\1\147\2\0\2\147\2\0"+
-+ "\3\147\1\0\3\147\14\0\4\147\7\0\4\147\1\u0277"+
-+ "\25\147\1\0\3\147\6\0\1\147\2\0\2\147\1\0"+
-+ "\11\u0240\3\0\13\u0240\1\0\62\u0240\3\u0241\1\u0240\3\u0241"+
-+ "\1\u0278\3\0\1\u0208\7\u0240\3\u0241\1\u0279\7\u0240\32\u0241"+
-+ "\1\u0240\3\u0241\6\u0240\1\u0241\2\u0240\2\u0241\2\u0240\3\u0242"+
-+ "\1\u0240\3\u0242\1\u0240\3\0\10\u0240\3\u0242\1\147\7\u0240"+
-+ "\32\u0242\1\u0240\3\u0242\6\u0240\1\u0242\2\u0240\2\u0242\1\u0240"+
-+ "\2\0\1\u027a\2\0\2\u027a\1\0\1\u0244\7\0\1\u027b"+
-+ "\3\0\1\u027a\1\0\1\u0244\10\0\25\u027a\4\0\1\u027a"+
-+ "\1\0\3\u027a\6\0\1\u027a\2\0\2\u027a\2\0\1\147"+
-+ "\1\u027c\1\147\1\0\2\u027c\1\147\1\u0244\7\0\1\u027b"+
-+ "\3\0\1\u027c\1\147\1\u0245\1\147\7\0\25\u027c\4\147"+
-+ "\1\u027c\1\0\3\u027c\6\0\1\u027c\2\0\2\u027c\11\0"+
-+ "\1\u0246\7\0\1\u0247\5\0\1\u0246\63\0\3\u027d\1\0"+
-+ "\4\u027d\3\0\2\u027d\2\0\10\u027d\7\0\32\u027d\1\0"+
-+ "\3\u027d\6\0\1\u027d\2\0\2\u027d\1\0\11\u0249\3\0"+
-+ "\13\u0249\1\0\62\u0249\1\u024a\1\u0249\1\u024a\3\u0249\1\u024a"+
-+ "\1\u027e\3\0\12\u0249\1\u027e\1\0\34\u0249\4\u024a\22\u0249"+
-+ "\1\u024b\1\u024c\1\u024b\1\u0249\2\u024c\1\u024b\1\u027e\3\0"+
-+ "\10\u0249\2\u024c\1\u027f\1\147\7\u0249\25\u024c\4\u024b\1\u024c"+
-+ "\1\u0249\3\u024c\6\u0249\1\u024c\2\u0249\2\u024c\2\u0249\3\u024c"+
-+ "\1\u0249\3\u024c\1\u0249\3\0\10\u0249\3\u024c\1\147\7\u0249"+
-+ "\32\u024c\1\u0249\3\u024c\6\u0249\1\u024c\2\u0249\2\u024c\1\u0249"+
-+ "\106\0\1\u0280\56\0\1\u0281\110\0\1\u0282\53\0\1\u0283"+
-+ "\153\0\1\u0284\22\0\1\u0285\3\0\4\u0254\1\u0286\4\u0254"+
-+ "\2\357\1\76\13\u0254\1\357\1\u0254\1\u0287\1\u0254\1\u0288"+
-+ "\1\u012f\1\u0254\1\u012f\52\u0254\4\u0289\1\u028a\4\u0289\2\357"+
-+ "\1\76\13\u0289\1\357\1\u0289\1\u012e\1\u028b\1\u0130\1\u016f"+
-+ "\1\u0289\1\u016f\52\u0289\3\u016d\1\u021d\3\u016d\1\u021d\1\u016d"+
-+ "\2\u01a6\1\u01a7\13\u016d\1\u01a6\1\u01a8\2\u016d\1\u01a6\30\u016d"+
-+ "\1\u021d\1\u016d\2\u021d\25\u016d\1\u028c\1\u016d\1\u028d\2\u016d"+
-+ "\2\u01a6\1\u01a7\13\u016d\1\u01a6\1\u01a8\2\u016d\1\u01a6\56\u016d"+
-+ "\3\u028e\3\u016d\1\u028e\1\u016d\2\u01a6\1\u01a7\13\u016d\1\u01a6"+
-+ "\1\u01a8\2\u016d\1\u01a6\12\u016d\2\u028e\3\u016d\1\u028e\1\u016d"+
-+ "\1\u028e\1\u016d\1\u028e\2\u016d\1\u028e\1\u016d\4\u028e\2\u016d"+
-+ "\1\u028e\1\u016d\1\u028e\17\u016d\1\u0256\3\u016d\1\u0256\1\u016d"+
-+ "\2\u01a6\1\u01a7\13\u016d\1\u01a6\1\u01a8\2\u016d\1\u01a6\30\u016d"+
-+ "\1\u0256\1\u016d\2\u0256\21\u016d\4\u025a\1\u028f\4\u025a\3\76"+
-+ "\13\u025a\1\76\1\u025a\1\u0290\1\u025a\1\u0291\1\230\1\u025a"+
-+ "\1\230\52\u025a\4\u0292\1\u0293\4\u0292\3\76\13\u0292\1\76"+
-+ "\1\u0292\1\227\1\u0294\1\231\1\235\1\u0292\1\235\52\u0292"+
-+ "\3\232\1\u0224\3\232\1\u0224\20\232\1\356\2\232\1\u01a7"+
-+ "\30\232\1\u0224\1\232\2\u0224\25\232\1\u0295\1\232\1\u0296"+
-+ "\21\232\1\356\2\232\1\u01a7\56\232\3\u0297\3\232\1\u0297"+
-+ "\20\232\1\356\2\232\1\u01a7\12\232\2\u0297\3\232\1\u0297"+
-+ "\1\232\1\u0297\1\232\1\u0297\2\232\1\u0297\1\232\4\u0297"+
-+ "\2\232\1\u0297\1\232\1\u0297\17\232\1\u025c\3\232\1\u025c"+
-+ "\20\232\1\356\2\232\1\u01a7\30\232\1\u025c\1\232\2\u025c"+
-+ "\21\232\1\233\3\u016f\3\233\1\u016f\1\233\2\357\1\76"+
-+ "\13\233\1\357\16\233\2\u016f\3\233\1\u016f\1\233\1\u016f"+
-+ "\1\233\1\u016f\2\233\1\u016f\1\233\4\u016f\2\233\1\u016f"+
-+ "\1\233\1\u016f\14\233\11\256\2\125\1\126\13\256\1\125"+
-+ "\15\256\1\u0298\54\256\2\125\1\126\13\256\1\125\4\256"+
-+ "\1\u0299\65\256\2\125\1\126\13\256\1\125\14\256\1\u029a"+
-+ "\44\256\1\0\3\147\1\0\3\147\1\u029b\13\0\2\147"+
-+ "\1\u029c\1\147\6\0\1\151\32\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\15\147\1\u029d\14\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\2\0\3\147\1\0\3\147\14\0"+
-+ "\4\147\7\0\7\147\1\u0248\22\147\1\0\3\147\6\0"+
-+ "\1\147\2\0\2\147\1\0\10\u0230\1\u0269\3\0\2\u01f8"+
-+ "\10\u0230\1\u0269\1\0\61\u0230\1\0\3\u026a\1\0\3\u026a"+
-+ "\1\u029e\3\0\2\u029f\6\0\4\u026a\7\0\32\u026a\1\0"+
-+ "\3\u026a\6\0\1\u026a\2\0\2\u026a\2\0\3\u0234\1\0"+
-+ "\3\u0234\1\u026b\3\0\2\u0234\1\u01fc\1\0\1\u0234\1\u026b"+
-+ "\4\u0234\1\u026b\1\u0234\7\0\32\u0234\1\0\3\u0234\6\0"+
-+ "\1\u0234\2\0\2\u0234\2\0\3\u026c\1\0\3\u026c\1\u02a0"+
-+ "\3\0\1\u0235\1\u01fe\1\u01fc\1\0\1\u02a1\1\u0235\2\u01fe"+
-+ "\4\u026c\7\0\32\u026c\1\0\3\u026c\6\0\1\u026c\2\0"+
-+ "\2\u026c\2\0\3\u026d\1\0\3\u026d\1\u02a2\3\0\1\u0236"+
-+ "\3\0\1\u02a3\3\0\4\u026d\7\0\32\u026d\1\0\3\u026d"+
-+ "\6\0\1\u026d\2\0\2\u026d\1\0\2\u02a4\1\u02a5\2\u02a4"+
-+ "\2\u02a5\1\u02a4\1\u026e\3\0\10\u02a4\1\u02a5\1\u02a4\1\u026e"+
-+ "\1\0\7\u02a4\25\u02a5\4\u02a4\1\u02a5\1\u02a4\3\u02a5\6\u02a4"+
-+ "\1\u02a5\2\u02a4\2\u02a5\2\u02a4\1\u02a6\1\u02a5\1\u02a6\1\u02a4"+
-+ "\2\u02a5\1\u02a6\1\u026e\3\0\10\u02a4\1\u02a5\1\u02a6\1\u026f"+
-+ "\1\147\7\u02a4\25\u02a5\4\u02a6\1\u02a5\1\u02a4\3\u02a5\6\u02a4"+
-+ "\1\u02a5\2\u02a4\2\u02a5\1\u02a4\10\0\1\u0270\15\0\1\u0270"+
-+ "\12\0\1\u02a7\5\0\1\u02a8\42\0\3\147\1\0\3\147"+
-+ "\1\u0270\13\0\2\147\1\u0271\1\147\7\0\2\147\1\u02a9"+
-+ "\5\147\1\u02aa\21\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\3\0\1\u02ab\2\0\2\u02ab\1\0\1\u0272\13\0"+
-+ "\1\u02ab\1\0\1\u0272\10\0\25\u02ab\4\0\1\u02ab\1\0"+
-+ "\3\u02ab\6\0\1\u02ab\2\0\2\u02ab\2\0\1\147\1\u02ab"+
-+ "\1\147\1\0\2\u02ab\1\147\1\u0272\13\0\1\u02ab\1\147"+
-+ "\1\u0273\1\147\7\0\25\u02ab\4\147\1\u02ab\1\0\3\u02ab"+
-+ "\6\0\1\u02ab\2\0\2\u02ab\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\6\147\1\u02ac\23\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\7\147\1\u02ad\22\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\14\0\4\147\7\0\7\147\1\u02ae\22\147\1\0\3\147"+
-+ "\6\0\1\147\2\0\2\147\2\0\3\147\1\0\3\147"+
-+ "\1\u02af\13\0\2\147\1\u02b0\1\147\7\0\32\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\1\0\10\u0240\1\u0278"+
-+ "\3\0\1\u0208\11\u0240\1\u0278\1\0\61\u0240\1\0\3\u0279"+
-+ "\1\0\3\u0279\1\u02b1\3\0\1\u02b2\7\0\4\u0279\7\0"+
-+ "\32\u0279\1\0\3\u0279\6\0\1\u0279\2\0\2\u0279\2\0"+
-+ "\3\u027a\1\0\3\u027a\1\u02b3\3\0\1\u02b4\1\0\1\u02b5"+
-+ "\1\0\1\u02b6\3\0\2\u027a\1\u02b7\1\u027a\7\0\32\u027a"+
-+ "\1\0\3\u027a\6\0\1\u027a\2\0\2\u027a\2\0\3\u02b8"+
-+ "\1\0\4\u02b8\3\0\2\u02b8\2\0\10\u02b8\7\0\32\u02b8"+
-+ "\1\0\3\u02b8\6\0\1\u02b8\2\0\2\u02b8\2\0\3\u027c"+
-+ "\1\0\3\u027c\1\u02b3\3\0\1\u02b4\1\0\1\u02b5\1\0"+
-+ "\1\u02b6\3\0\2\u027c\1\u02b9\1\u027c\7\0\32\u027c\1\0"+
-+ "\3\u027c\6\0\1\u027c\2\0\2\u027c\2\0\3\u027d\1\0"+
-+ "\4\u027d\3\0\2\u027d\2\0\1\u027d\1\u02ba\6\u027d\7\0"+
-+ "\32\u027d\1\0\3\u027d\6\0\1\u027d\2\0\2\u027d\1\0"+
-+ "\10\u0249\1\u027e\3\0\12\u0249\1\u027e\1\0\62\u0249\3\u024c"+
-+ "\1\u0249\3\u024c\1\u027e\3\0\10\u0249\2\u024c\1\u027f\1\147"+
-+ "\7\u0249\32\u024c\1\u0249\3\u024c\6\u0249\1\u024c\2\u0249\2\u024c"+
-+ "\1\u0249\6\0\1\u02bb\30\0\1\u02bc\1\u02bd\1\u02be\2\0"+
-+ "\1\u02bf\1\0\1\u02c0\1\u02c1\1\0\1\u02c2\2\0\1\u02c3"+
-+ "\1\u02c4\1\u02c5\2\0\1\u02c6\1\u02c7\74\0\1\u02c8\110\0"+
-+ "\1\u02c9\101\0\1\u02ca\70\0\1\u02cb\71\0\11\u0254\2\357"+
-+ "\1\76\13\u0254\1\357\1\u0254\1\u0287\1\u012f\1\u0288\1\u012f"+
-+ "\1\u0254\1\u012f\56\u0254\1\u0286\4\u0254\2\357\1\76\13\u0254"+
-+ "\1\357\1\u01e1\1\u012f\1\357\56\u0254\4\u028b\1\u02cc\4\u028b"+
-+ "\2\357\1\76\13\u028b\1\357\2\u028b\1\u0289\1\u012f\55\u028b"+
-+ "\13\357\1\76\15\357\1\u012e\1\u012f\1\u0255\1\233\1\357"+
-+ "\1\233\52\357\3\u0289\1\u02cd\1\u02ce\1\u0289\1\u02cf\1\u02d0"+
-+ "\1\u0289\2\357\1\76\13\u0289\1\357\1\u0289\1\u012e\1\u028b"+
-+ "\1\u02d1\1\u016f\1\u0289\1\u016f\25\u0289\1\u02cd\1\u0289\1\u02d0"+
-+ "\1\u02cd\21\u0289\4\u012f\1\u016e\4\u012f\2\357\1\76\13\u012f"+
-+ "\1\357\2\u012f\1\357\1\u0254\55\u012f\4\u016d\1\u028c\1\u016d"+
-+ "\1\u028d\2\u016d\2\u01a6\1\u01a7\13\u016d\1\u01a6\1\u01a8\61\u016d"+
-+ "\3\u028e\3\u016d\1\u028e\1\u016d\2\u01a6\1\u01a7\13\u016d\1\u01a6"+
-+ "\1\u01a8\15\u016d\2\u028e\3\u016d\1\u028e\1\u016d\1\u028e\1\u016d"+
-+ "\1\u028e\2\u016d\1\u028e\1\u016d\4\u028e\2\u016d\1\u028e\1\u016d"+
-+ "\1\u028e\15\u016d\3\u02d2\3\u016d\1\u02d2\1\u016d\2\u01a6\1\u01a7"+
-+ "\13\u016d\1\u01a6\1\u01a8\15\u016d\2\u02d2\3\u016d\1\u02d2\1\u016d"+
-+ "\1\u02d2\1\u016d\1\u02d2\2\u016d\1\u02d2\1\u016d\4\u02d2\2\u016d"+
-+ "\1\u02d2\1\u016d\1\u02d2\14\u016d\11\u025a\3\76\13\u025a\1\76"+
-+ "\1\u025a\1\u0290\1\230\1\u0291\1\230\1\u025a\1\230\56\u025a"+
-+ "\1\u028f\4\u025a\3\76\13\u025a\1\76\1\u01e5\1\u012f\1\76"+
-+ "\56\u025a\4\u0294\1\u02d3\4\u0294\3\0\13\u0294\1\0\2\u0294"+
-+ "\1\u0292\1\230\55\u0294\31\76\1\227\1\230\1\u025b\1\0"+
-+ "\1\76\1\0\52\76\3\u0292\1\u02d4\1\u02d5\1\u0292\1\u02d6"+
-+ "\1\u02d7\1\u0292\3\76\13\u0292\1\76\1\u0292\1\227\1\u0294"+
-+ "\1\u02d8\1\235\1\u0292\1\235\25\u0292\1\u02d4\1\u0292\1\u02d7"+
-+ "\1\u02d4\21\u0292\4\230\1\234\4\230\3\0\13\230\1\0"+
-+ "\2\230\1\76\1\u025a\55\230\4\232\1\u0295\1\232\1\u0296"+
-+ "\21\232\1\356\61\232\3\u0297\3\232\1\u0297\20\232\1\356"+
-+ "\15\232\2\u0297\3\232\1\u0297\1\232\1\u0297\1\232\1\u0297"+
-+ "\2\232\1\u0297\1\232\4\u0297\2\232\1\u0297\1\232\1\u0297"+
-+ "\15\232\3\u02d9\3\232\1\u02d9\20\232\1\356\15\232\2\u02d9"+
-+ "\3\232\1\u02d9\1\232\1\u02d9\1\232\1\u02d9\2\232\1\u02d9"+
-+ "\1\232\4\u02d9\2\232\1\u02d9\1\232\1\u02d9\14\232\11\256"+
-+ "\2\125\1\126\13\256\1\125\4\256\1\u02da\54\256\11\u0299"+
-+ "\2\u02db\1\u02dc\13\u0299\1\u02db\61\u0299\11\256\2\125\1\126"+
-+ "\13\256\1\125\15\256\1\u02dd\43\256\2\u02de\1\u02df\2\u02de"+
-+ "\2\u02df\1\u02de\1\u029b\3\0\10\u02de\1\u02df\1\u02de\1\u029b"+
-+ "\1\0\7\u02de\25\u02df\4\u02de\1\u02df\1\u02de\3\u02df\6\u02de"+
-+ "\1\u02df\2\u02de\2\u02df\2\u02de\1\u02e0\1\u02df\1\u02e0\1\u02de"+
-+ "\2\u02df\1\u02e0\1\u029b\3\0\10\u02de\1\u02df\1\u02e0\1\u029c"+
-+ "\1\147\7\u02de\25\u02df\4\u02e0\1\u02df\1\u02de\3\u02df\6\u02de"+
-+ "\1\u02df\2\u02de\2\u02df\1\u02de\1\0\3\147\1\0\3\147"+
-+ "\1\u02e1\13\0\2\147\1\u02e1\1\147\7\0\32\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\11\0\1\u029e\3\0"+
-+ "\2\u029f\10\0\1\u029e\64\0\1\u026a\2\0\2\u026a\1\0"+
-+ "\1\u029f\13\0\1\u026a\1\0\1\u029f\10\0\25\u026a\4\0"+
-+ "\1\u026a\1\0\3\u026a\6\0\1\u026a\2\0\2\u026a\2\0"+
-+ "\3\u01fe\1\0\3\u01fe\1\u02a0\3\0\1\u0235\1\u01fe\1\u01fc"+
-+ "\1\0\1\u02a1\1\u0235\4\u01fe\1\u02a0\1\u01fe\7\0\32\u01fe"+
-+ "\1\0\3\u01fe\6\0\1\u01fe\2\0\2\u01fe\2\0\3\u02e2"+
-+ "\1\0\4\u02e2\3\0\2\u02e2\2\0\1\u02e2\1\u02e3\6\u02e2"+
-+ "\7\0\32\u02e2\1\0\3\u02e2\6\0\1\u02e2\2\0\2\u02e2"+
-+ "\11\0\1\u02a2\3\0\1\u0236\3\0\1\u02a3\5\0\1\u02a2"+
-+ "\63\0\3\u02e4\1\0\4\u02e4\3\0\2\u02e4\2\0\10\u02e4"+
-+ "\7\0\32\u02e4\1\0\3\u02e4\6\0\1\u02e4\2\0\2\u02e4"+
-+ "\1\0\11\u02a4\3\0\13\u02a4\1\0\62\u02a4\3\u02a5\1\u02a4"+
-+ "\3\u02a5\1\u02e5\3\0\2\u026e\6\u02a4\3\u02a5\1\u02e6\7\u02a4"+
-+ "\32\u02a5\1\u02a4\3\u02a5\6\u02a4\1\u02a5\2\u02a4\2\u02a5\2\u02a4"+
-+ "\3\u02a6\1\u02a4\3\u02a6\1\u02a4\3\0\10\u02a4\3\u02a6\1\147"+
-+ "\7\u02a4\32\u02a6\1\u02a4\3\u02a6\6\u02a4\1\u02a6\2\u02a4\2\u02a6"+
-+ "\1\u02a4\43\0\1\u02e7\120\0\1\u02e8\36\0\3\147\1\0"+
-+ "\3\147\14\0\4\147\7\0\4\147\1\u02e9\25\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\2\0\3\147\1\0"+
-+ "\3\147\14\0\4\147\7\0\14\147\1\u02ea\15\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\2\0\3\u02ab\1\0"+
-+ "\3\u02ab\1\u02eb\13\0\4\u02ab\7\0\32\u02ab\1\0\3\u02ab"+
-+ "\6\0\1\u02ab\2\0\2\u02ab\2\0\3\147\1\0\3\147"+
-+ "\1\u02ec\13\0\2\147\1\u02ed\1\147\6\0\1\151\32\147"+
-+ "\1\0\3\147\6\0\1\147\2\0\2\147\1\0\2\u02ee"+
-+ "\1\u02ef\2\u02ee\2\u02ef\1\u02ee\1\u02af\3\0\10\u02ee\1\u02ef"+
-+ "\1\u02ee\1\u02af\1\0\7\u02ee\25\u02ef\4\u02ee\1\u02ef\1\u02ee"+
-+ "\3\u02ef\6\u02ee\1\u02ef\2\u02ee\2\u02ef\2\u02ee\1\u02f0\1\u02ef"+
-+ "\1\u02f0\1\u02ee\2\u02ef\1\u02f0\1\u02af\3\0\10\u02ee\1\u02ef"+
-+ "\1\u02f0\1\u02b0\1\147\7\u02ee\25\u02ef\4\u02f0\1\u02ef\1\u02ee"+
-+ "\3\u02ef\6\u02ee\1\u02ef\2\u02ee\2\u02ef\1\u02ee\10\0\1\u02b1"+
-+ "\3\0\1\u02b2\11\0\1\u02b1\64\0\1\u0279\2\0\2\u0279"+
-+ "\1\0\1\u02b2\13\0\1\u0279\1\0\1\u02b2\10\0\25\u0279"+
-+ "\4\0\1\u0279\1\0\3\u0279\6\0\1\u0279\2\0\2\u0279"+
-+ "\11\0\1\u02b3\3\0\1\u02b4\1\0\1\u02b5\1\0\1\u02b6"+
-+ "\5\0\1\u02b3\64\0\1\u027a\2\0\2\u027a\1\0\1\u02b4"+
-+ "\13\0\1\u027a\1\0\1\u02b4\10\0\25\u027a\4\0\1\u027a"+
-+ "\1\0\3\u027a\6\0\1\u027a\2\0\2\u027a\11\0\1\u02b5"+
-+ "\6\0\1\u02f1\6\0\1\u02b5\63\0\3\u02f2\1\0\4\u02f2"+
-+ "\3\0\2\u02f2\2\0\10\u02f2\7\0\32\u02f2\1\0\3\u02f2"+
-+ "\6\0\1\u02f2\2\0\2\u02f2\2\0\3\u02b8\1\0\4\u02b8"+
-+ "\3\0\2\u02b8\2\0\1\u02b8\1\u02f3\6\u02b8\7\0\32\u02b8"+
-+ "\1\0\3\u02b8\6\0\1\u02b8\2\0\2\u02b8\2\0\3\u027d"+
-+ "\1\0\3\u027d\1\u02ba\3\0\2\u027d\2\0\1\u027d\1\u02ba"+
-+ "\4\u027d\1\u02ba\1\u027d\7\0\32\u027d\1\0\3\u027d\6\0"+
-+ "\1\u027d\2\0\2\u027d\41\0\1\u02f4\20\0\1\u02f5\67\0"+
-+ "\1\u02f6\114\0\1\u02f7\103\0\1\u02f8\112\0\1\u02f9\107\0"+
-+ "\1\u02fa\107\0\1\u02fb\4\0\1\u02fc\103\0\1\u02fd\4\0"+
-+ "\1\u02fe\1\0\1\u02ff\50\0\1\u0300\32\0\1\u0301\17\0"+
-+ "\1\u0302\35\0\1\u0303\35\0\1\u0304\110\0\1\u0305\6\0"+
-+ "\1\u0306\100\0\1\u0307\7\0\1\u0308\103\0\1\u0309\4\0"+
-+ "\1\u030a\142\0\1\u030b\110\0\1\u030c\66\0\1\u030d\25\0"+
-+ "\3\u028b\1\u030e\1\u030f\1\u028b\1\u0310\1\u0311\1\u028b\2\357"+
-+ "\1\76\13\u028b\1\357\34\u028b\1\u030e\1\u028b\1\u0311\1\u030e"+
-+ "\21\u028b\3\357\1\u0289\3\357\1\u0289\3\357\1\76\15\357"+
-+ "\1\u012e\1\u012f\1\u0255\1\233\1\357\1\233\25\357\1\u0289"+
-+ "\1\357\2\u0289\25\357\1\u0312\1\357\1\u0313\4\357\1\76"+
-+ "\15\357\1\u012e\1\u012f\1\u0255\1\233\1\357\1\233\53\357"+
-+ "\3\u0314\3\357\1\u0314\3\357\1\76\15\357\1\u012e\1\u012f"+
-+ "\1\u0255\1\233\1\357\1\233\7\357\2\u0314\3\357\1\u0314"+
-+ "\1\357\1\u0314\1\357\1\u0314\2\357\1\u0314\1\357\4\u0314"+
-+ "\2\357\1\u0314\1\357\1\u0314\17\357\1\u02cd\3\357\1\u02cd"+
-+ "\3\357\1\76\15\357\1\u012e\1\u012f\1\u0255\1\233\1\357"+
-+ "\1\233\25\357\1\u02cd\1\357\2\u02cd\21\357\4\u016f\1\u0170"+
-+ "\4\u016f\2\357\1\76\13\u016f\1\357\3\u016f\1\357\55\u016f"+
-+ "\1\u016d\3\u0315\3\u016d\1\u0315\1\u016d\2\u01a6\1\u01a7\13\u016d"+
-+ "\1\u01a6\1\u01a8\15\u016d\2\u0315\3\u016d\1\u0315\1\u016d\1\u0315"+
-+ "\1\u016d\1\u0315\2\u016d\1\u0315\1\u016d\4\u0315\2\u016d\1\u0315"+
-+ "\1\u016d\1\u0315\14\u016d\3\u0294\1\u0316\1\u0317\1\u0294\1\u0318"+
-+ "\1\u0319\1\u0294\3\0\13\u0294\1\0\34\u0294\1\u0316\1\u0294"+
-+ "\1\u0319\1\u0316\21\u0294\3\76\1\u0292\3\76\1\u0292\21\76"+
-+ "\1\227\1\230\1\u025b\1\0\1\76\1\0\25\76\1\u0292"+
-+ "\1\76\2\u0292\25\76\1\u031a\1\76\1\u031b\22\76\1\227"+
-+ "\1\230\1\u025b\1\0\1\76\1\0\53\76\3\u031c\3\76"+
-+ "\1\u031c\21\76\1\227\1\230\1\u025b\1\0\1\76\1\0"+
-+ "\7\76\2\u031c\3\76\1\u031c\1\76\1\u031c\1\76\1\u031c"+
-+ "\2\76\1\u031c\1\76\4\u031c\2\76\1\u031c\1\76\1\u031c"+
-+ "\17\76\1\u02d4\3\76\1\u02d4\21\76\1\227\1\230\1\u025b"+
-+ "\1\0\1\76\1\0\25\76\1\u02d4\1\76\2\u02d4\21\76"+
-+ "\4\235\1\236\4\235\3\0\13\235\1\0\3\235\1\76"+
-+ "\55\235\1\232\3\u031d\3\232\1\u031d\20\232\1\356\15\232"+
-+ "\2\u031d\3\232\1\u031d\1\232\1\u031d\1\232\1\u031d\2\232"+
-+ "\1\u031d\1\232\4\u031d\2\232\1\u031d\1\232\1\u031d\14\232"+
-+ "\11\u02da\2\u031e\1\u031f\13\u02da\1\u031e\61\u02da\11\256\2\125"+
-+ "\1\126\13\256\1\125\4\256\1\u0320\54\256\11\u02de\3\0"+
-+ "\13\u02de\1\0\62\u02de\3\u02df\1\u02de\3\u02df\1\u0321\3\0"+
-+ "\2\u029b\6\u02de\3\u02df\1\u0322\7\u02de\32\u02df\1\u02de\3\u02df"+
-+ "\6\u02de\1\u02df\2\u02de\2\u02df\2\u02de\3\u02e0\1\u02de\3\u02e0"+
-+ "\1\u02de\3\0\10\u02de\3\u02e0\1\147\7\u02de\32\u02e0\1\u02de"+
-+ "\3\u02e0\6\u02de\1\u02e0\2\u02de\2\u02e0\1\u02de\13\u02e1\1\0"+
-+ "\75\u02e1\1\0\3\u02e2\1\0\4\u02e2\3\0\2\u02e2\2\0"+
-+ "\1\u02e2\1\u0323\6\u02e2\7\0\32\u02e2\1\0\3\u02e2\6\0"+
-+ "\1\u02e2\2\0\2\u02e2\2\0\1\u02e2\1\u0324\1\u02e2\1\0"+
-+ "\2\u0324\1\u02e2\1\u02e3\3\0\2\u02e2\2\0\1\u02e2\1\u0323"+
-+ "\2\u02e2\1\u0324\1\u02e2\1\u02e3\1\u02e2\7\0\25\u0324\4\u02e2"+
-+ "\1\u0324\1\0\3\u0324\6\0\1\u0324\2\0\2\u0324\2\0"+
-+ "\3\u02e4\1\0\4\u02e4\3\0\2\u02e4\2\0\1\u02e4\1\u0325"+
-+ "\6\u02e4\7\0\32\u02e4\1\0\3\u02e4\6\0\1\u02e4\2\0"+
-+ "\2\u02e4\1\0\10\u02a4\1\u02e5\3\0\2\u026e\10\u02a4\1\u02e5"+
-+ "\1\0\61\u02a4\1\0\3\u02e6\1\0\3\u02e6\1\u0326\3\0"+
-+ "\2\u0327\6\0\4\u02e6\7\0\32\u02e6\1\0\3\u02e6\6\0"+
-+ "\1\u02e6\2\0\2\u02e6\7\0\1\u0328\153\0\1\u0329\40\0"+
-+ "\3\147\1\0\1\147\1\u032a\1\147\14\0\4\147\7\0"+
-+ "\32\147\1\0\3\147\6\0\1\147\2\0\2\147\2\0"+
-+ "\3\147\1\0\3\147\14\0\4\147\7\0\12\147\1\u032b"+
-+ "\17\147\1\0\3\147\6\0\1\147\2\0\2\147\11\0"+
-+ "\1\u02eb\15\0\1\u02eb\62\0\2\u032c\1\u032d\2\u032c\2\u032d"+
-+ "\1\u032c\1\u02ec\3\0\10\u032c\1\u032d\1\u032c\1\u02ec\1\0"+
-+ "\7\u032c\25\u032d\4\u032c\1\u032d\1\u032c\3\u032d\6\u032c\1\u032d"+
-+ "\2\u032c\2\u032d\2\u032c\1\u032e\1\u032d\1\u032e\1\u032c\2\u032d"+
-+ "\1\u032e\1\u02ec\3\0\10\u032c\1\u032d\1\u032e\1\u02ed\1\147"+
-+ "\7\u032c\25\u032d\4\u032e\1\u032d\1\u032c\3\u032d\6\u032c\1\u032d"+
-+ "\2\u032c\2\u032d\1\u032c\11\u02ee\3\0\13\u02ee\1\0\62\u02ee"+
-+ "\3\u02ef\1\u02ee\3\u02ef\1\u032f\3\0\1\u02af\7\u02ee\3\u02ef"+
-+ "\1\u0330\7\u02ee\32\u02ef\1\u02ee\3\u02ef\6\u02ee\1\u02ef\2\u02ee"+
-+ "\2\u02ef\2\u02ee\3\u02f0\1\u02ee\3\u02f0\1\u02ee\3\0\10\u02ee"+
-+ "\3\u02f0\1\147\7\u02ee\32\u02f0\1\u02ee\3\u02f0\6\u02ee\1\u02f0"+
-+ "\2\u02ee\2\u02f0\1\u02ee\10\0\1\u0331\5\0\1\u02b5\7\0"+
-+ "\1\u0331\63\0\3\u02f2\1\0\4\u02f2\3\0\2\u02f2\2\0"+
-+ "\1\u02f2\1\u0332\6\u02f2\7\0\32\u02f2\1\0\3\u02f2\6\0"+
-+ "\1\u02f2\2\0\2\u02f2\2\0\1\u02b8\1\u0333\1\u02b8\1\0"+
-+ "\2\u0333\1\u02b8\1\u02f3\3\0\2\u02b8\2\0\1\u02b8\1\u02f3"+
-+ "\2\u02b8\1\u0333\1\u02b8\1\u02f3\1\u02b8\7\0\25\u0333\4\u02b8"+
-+ "\1\u0333\1\0\3\u0333\6\0\1\u0333\2\0\2\u0333\54\0"+
-+ "\1\u0334\116\0\1\u0335\66\0\1\u0336\111\0\1\u0337\111\0"+
-+ "\1\u0338\111\0\1\u0339\123\0\1\u033a\4\0\1\u033b\66\0"+
-+ "\1\u033c\113\0\1\u033d\105\0\1\u033e\115\0\1\u033f\104\0"+
-+ "\1\u0340\112\0\1\u0341\120\0\1\u0342\110\0\1\u0343\100\0"+
-+ "\1\u0344\105\0\1\u0345\15\0\1\u0346\114\0\1\u0347\67\0"+
-+ "\1\u0348\106\0\1\u0349\114\0\1\u034a\122\0\1\u034b\107\0"+
-+ "\1\u034c\53\0\1\u034d\110\0\1\u034e\130\0\1\u034f\51\0"+
-+ "\3\u012f\1\u028b\1\u016e\2\u012f\1\u028b\1\u012f\2\357\1\76"+
-+ "\13\u012f\1\357\2\u012f\1\357\1\u0254\30\u012f\1\u028b\1\u012f"+
-+ "\2\u028b\25\u012f\1\u0350\1\u012f\1\u0351\2\u012f\2\357\1\76"+
-+ "\13\u012f\1\357\2\u012f\1\357\1\u0254\56\u012f\3\u0352\1\u016e"+
-+ "\2\u012f\1\u0352\1\u012f\2\357\1\76\13\u012f\1\357\2\u012f"+
-+ "\1\357\1\u0254\12\u012f\2\u0352\3\u012f\1\u0352\1\u012f\1\u0352"+
-+ "\1\u012f\1\u0352\2\u012f\1\u0352\1\u012f\4\u0352\2\u012f\1\u0352"+
-+ "\1\u012f\1\u0352\17\u012f\1\u030e\1\u016e\2\u012f\1\u030e\1\u012f"+
-+ "\2\357\1\76\13\u012f\1\357\2\u012f\1\357\1\u0254\30\u012f"+
-+ "\1\u030e\1\u012f\2\u030e\21\u012f\4\357\1\u0312\1\357\1\u0313"+
-+ "\4\357\1\76\15\357\1\u012e\1\u012f\1\u0130\1\233\1\357"+
-+ "\1\233\53\357\3\u0314\3\357\1\u0314\3\357\1\76\15\357"+
-+ "\1\u012e\1\u012f\1\u0130\1\233\1\357\1\233\7\357\2\u0314"+
-+ "\3\357\1\u0314\1\357\1\u0314\1\357\1\u0314\2\357\1\u0314"+
-+ "\1\357\4\u0314\2\357\1\u0314\1\357\1\u0314\15\357\3\u0353"+
-+ "\3\357\1\u0353\3\357\1\76\15\357\1\u012e\1\u012f\1\u0130"+
-+ "\1\233\1\357\1\233\7\357\2\u0353\3\357\1\u0353\1\357"+
-+ "\1\u0353\1\357\1\u0353\2\357\1\u0353\1\357\4\u0353\2\357"+
-+ "\1\u0353\1\357\1\u0353\14\357\1\u016d\3\u021d\3\u016d\1\u021d"+
-+ "\1\u016d\2\u01a6\1\u01a7\13\u016d\1\u01a6\1\u01a8\15\u016d\2\u021d"+
-+ "\3\u016d\1\u021d\1\u016d\1\u021d\1\u016d\1\u021d\2\u016d\1\u021d"+
-+ "\1\u016d\4\u021d\2\u016d\1\u021d\1\u016d\1\u021d\14\u016d\3\230"+
-+ "\1\u0294\1\234\2\230\1\u0294\1\230\3\0\13\230\1\0"+
-+ "\2\230\1\76\1\u025a\30\230\1\u0294\1\230\2\u0294\25\230"+
-+ "\1\u0354\1\230\1\u0355\2\230\3\0\13\230\1\0\2\230"+
-+ "\1\76\1\u025a\56\230\3\u0356\1\234\2\230\1\u0356\1\230"+
-+ "\3\0\13\230\1\0\2\230\1\76\1\u025a\12\230\2\u0356"+
-+ "\3\230\1\u0356\1\230\1\u0356\1\230\1\u0356\2\230\1\u0356"+
-+ "\1\230\4\u0356\2\230\1\u0356\1\230\1\u0356\17\230\1\u0316"+
-+ "\1\234\2\230\1\u0316\1\230\3\0\13\230\1\0\2\230"+
-+ "\1\76\1\u025a\30\230\1\u0316\1\230\2\u0316\21\230\4\76"+
-+ "\1\u031a\1\76\1\u031b\22\76\1\227\1\230\1\231\1\0"+
-+ "\1\76\1\0\53\76\3\u031c\3\76\1\u031c\21\76\1\227"+
-+ "\1\230\1\231\1\0\1\76\1\0\7\76\2\u031c\3\76"+
-+ "\1\u031c\1\76\1\u031c\1\76\1\u031c\2\76\1\u031c\1\76"+
-+ "\4\u031c\2\76\1\u031c\1\76\1\u031c\15\76\3\u0357\3\76"+
-+ "\1\u0357\21\76\1\227\1\230\1\231\1\0\1\76\1\0"+
-+ "\7\76\2\u0357\3\76\1\u0357\1\76\1\u0357\1\76\1\u0357"+
-+ "\2\76\1\u0357\1\76\4\u0357\2\76\1\u0357\1\76\1\u0357"+
-+ "\14\76\1\232\3\u0224\3\232\1\u0224\20\232\1\356\15\232"+
-+ "\2\u0224\3\232\1\u0224\1\232\1\u0224\1\232\1\u0224\2\232"+
-+ "\1\u0224\1\232\4\u0224\2\232\1\u0224\1\232\1\u0224\14\232"+
-+ "\11\u0320\2\u0358\1\u0359\13\u0320\1\u0358\61\u0320\10\u02de\1\u0321"+
-+ "\3\0\2\u029b\10\u02de\1\u0321\1\0\61\u02de\1\0\3\u0322"+
-+ "\1\0\3\u0322\1\u035a\3\0\2\u035b\6\0\4\u0322\7\0"+
-+ "\32\u0322\1\0\3\u0322\6\0\1\u0322\2\0\2\u0322\2\0"+
-+ "\1\u02e2\1\u0324\1\u02e2\1\0\2\u0324\1\u02e2\1\u0323\3\0"+
-+ "\2\u02e2\1\u01fc\1\0\1\u02e2\1\u0323\2\u02e2\1\u0324\1\u02e2"+
-+ "\1\u0323\1\u02e2\7\0\25\u0324\4\u02e2\1\u0324\1\0\3\u0324"+
-+ "\6\0\1\u0324\2\0\2\u0324\2\0\3\u0324\1\0\3\u0324"+
-+ "\1\u035c\3\0\1\u02e3\1\u02e2\1\u01fc\1\0\1\u02e2\1\u0323"+
-+ "\2\u02e2\4\u0324\7\0\32\u0324\1\0\3\u0324\6\0\1\u0324"+
-+ "\2\0\2\u0324\2\0\3\u02e4\1\0\3\u02e4\1\u0325\3\0"+
-+ "\2\u02e4\2\0\1\u02e4\1\u0325\4\u02e4\1\u0325\1\u02e4\7\0"+
-+ "\32\u02e4\1\0\3\u02e4\6\0\1\u02e4\2\0\2\u02e4\11\0"+
-+ "\1\u0326\3\0\2\u0327\10\0\1\u0326\64\0\1\u02e6\2\0"+
-+ "\2\u02e6\1\0\1\u0327\13\0\1\u02e6\1\0\1\u0327\10\0"+
-+ "\25\u02e6\4\0\1\u02e6\1\0\3\u02e6\6\0\1\u02e6\2\0"+
-+ "\2\u02e6\47\0\1\u035d\116\0\1\u035e\35\0\3\147\1\0"+
-+ "\3\147\14\0\4\147\7\0\7\147\1\u035f\22\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\2\0\3\147\1\0"+
-+ "\3\147\14\0\4\147\7\0\15\147\1\u0360\14\147\1\0"+
-+ "\3\147\6\0\1\147\2\0\2\147\1\0\11\u032c\3\0"+
-+ "\13\u032c\1\0\62\u032c\3\u032d\1\u032c\3\u032d\1\u0361\3\0"+
-+ "\2\u02ec\6\u032c\3\u032d\1\u0362\7\u032c\32\u032d\1\u032c\3\u032d"+
-+ "\6\u032c\1\u032d\2\u032c\2\u032d\2\u032c\3\u032e\1\u032c\3\u032e"+
-+ "\1\u032c\3\0\10\u032c\3\u032e\1\147\7\u032c\32\u032e\1\u032c"+
-+ "\3\u032e\6\u032c\1\u032e\2\u032c\2\u032e\1\u032c\10\u02ee\1\u032f"+
-+ "\3\0\1\u02af\11\u02ee\1\u032f\1\0\61\u02ee\1\0\3\u0330"+
-+ "\1\0\3\u0330\1\u0363\3\0\1\u0364\7\0\4\u0330\7\0"+
-+ "\32\u0330\1\0\3\u0330\6\0\1\u0330\2\0\2\u0330\2\0"+
-+ "\3\u02f2\1\0\3\u02f2\1\u0365\3\0\2\u02f2\1\u02b5\1\0"+
-+ "\1\u02f2\1\u0332\4\u02f2\1\u0365\1\u02f2\7\0\32\u02f2\1\0"+
-+ "\3\u02f2\6\0\1\u02f2\2\0\2\u02f2\2\0\3\u0333\1\0"+
-+ "\3\u0333\1\u0366\3\0\1\u02f3\1\u02b8\1\u02b5\1\0\1\u0367"+
-+ "\1\u02f3\2\u02b8\2\u0333\1\u0368\1\u0333\7\0\32\u0333\1\0"+
-+ "\3\u0333\6\0\1\u0333\2\0\2\u0333\55\0\1\u0369\102\0"+
-+ "\1\u036a\103\0\1\u036b\155\0\1\u036c\53\0\1\u036d\105\0"+
-+ "\1\u036e\113\0\1\u036f\145\0\1\u0370\55\0\1\u0371\113\0"+
-+ "\1\u0372\100\0\1\u0373\110\0\1\u0374\103\0\1\u0375\112\0"+
-+ "\1\u0376\110\0\1\u0377\122\0\1\u0378\76\0\1\u0379\105\0"+
-+ "\1\u037a\1\u037b\126\0\1\u037c\70\0\1\u037d\113\0\1\u037e"+
-+ "\120\0\1\u037f\111\0\1\u0380\74\0\1\u0381\113\0\1\u0382"+
-+ "\107\0\1\u0383\47\0\4\u012f\1\u0384\1\u012f\1\u0351\2\u012f"+
-+ "\2\357\1\76\13\u012f\1\357\62\u012f\3\u0352\1\u016e\2\u012f"+
-+ "\1\u0352\1\u012f\2\357\1\76\13\u012f\1\357\2\u012f\1\357"+
-+ "\13\u012f\2\u0352\3\u012f\1\u0352\1\u012f\1\u0352\1\u012f\1\u0352"+
-+ "\2\u012f\1\u0352\1\u012f\4\u0352\2\u012f\1\u0352\1\u012f\1\u0352"+
-+ "\15\u012f\3\u0385\1\u016e\2\u012f\1\u0385\1\u012f\2\357\1\76"+
-+ "\13\u012f\1\357\2\u012f\1\357\13\u012f\2\u0385\3\u012f\1\u0385"+
-+ "\1\u012f\1\u0385\1\u012f\1\u0385\2\u012f\1\u0385\1\u012f\4\u0385"+
-+ "\2\u012f\1\u0385\1\u012f\1\u0385\14\u012f\1\357\3\u0386\3\357"+
-+ "\1\u0386\3\357\1\76\15\357\1\u012e\1\u012f\1\u0130\1\233"+
-+ "\1\357\1\233\7\357\2\u0386\3\357\1\u0386\1\357\1\u0386"+
-+ "\1\357\1\u0386\2\357\1\u0386\1\357\4\u0386\2\357\1\u0386"+
-+ "\1\357\1\u0386\14\357\4\230\1\u0387\1\230\1\u0355\2\230"+
-+ "\3\0\13\230\1\0\62\230\3\u0356\1\234\2\230\1\u0356"+
-+ "\1\230\3\0\13\230\1\0\2\230\1\76\13\230\2\u0356"+
-+ "\3\230\1\u0356\1\230\1\u0356\1\230\1\u0356\2\230\1\u0356"+
-+ "\1\230\4\u0356\2\230\1\u0356\1\230\1\u0356\15\230\3\u0388"+
-+ "\1\234\2\230\1\u0388\1\230\3\0\13\230\1\0\2\230"+
-+ "\1\76\13\230\2\u0388\3\230\1\u0388\1\230\1\u0388\1\230"+
-+ "\1\u0388\2\230\1\u0388\1\230\4\u0388\2\230\1\u0388\1\230"+
-+ "\1\u0388\14\230\1\76\3\u0389\3\76\1\u0389\21\76\1\227"+
-+ "\1\230\1\231\1\0\1\76\1\0\7\76\2\u0389\3\76"+
-+ "\1\u0389\1\76\1\u0389\1\76\1\u0389\2\76\1\u0389\1\76"+
-+ "\4\u0389\2\76\1\u0389\1\76\1\u0389\14\76\10\0\1\u035a"+
-+ "\3\0\2\u035b\10\0\1\u035a\64\0\1\u0322\2\0\2\u0322"+
-+ "\1\0\1\u035b\13\0\1\u0322\1\0\1\u035b\10\0\25\u0322"+
-+ "\4\0\1\u0322\1\0\3\u0322\6\0\1\u0322\2\0\2\u0322"+
-+ "\2\0\3\u02e2\1\0\3\u02e2\1\u035c\3\0\1\u02e3\1\u02e2"+
-+ "\1\u01fc\1\0\1\u02e2\1\u0323\4\u02e2\1\u035c\1\u02e2\7\0"+
-+ "\32\u02e2\1\0\3\u02e2\6\0\1\u02e2\2\0\2\u02e2\47\0"+
-+ "\1\u038a\43\0\3\147\1\0\3\147\14\0\4\147\7\0"+
-+ "\7\147\1\u038b\22\147\1\0\3\147\6\0\1\147\2\0"+
-+ "\2\147\1\0\10\u032c\1\u0361\3\0\2\u02ec\10\u032c\1\u0361"+
-+ "\1\0\61\u032c\1\0\3\u0362\1\0\3\u0362\1\u038c\3\0"+
-+ "\2\u038d\6\0\4\u0362\7\0\32\u0362\1\0\3\u0362\6\0"+
-+ "\1\u0362\2\0\2\u0362\11\0\1\u0363\3\0\1\u0364\11\0"+
-+ "\1\u0363\64\0\1\u0330\2\0\2\u0330\1\0\1\u0364\13\0"+
-+ "\1\u0330\1\0\1\u0364\10\0\25\u0330\4\0\1\u0330\1\0"+
-+ "\3\u0330\6\0\1\u0330\2\0\2\u0330\2\0\3\u02b8\1\0"+
-+ "\3\u02b8\1\u0366\3\0\1\u02f3\1\u02b8\1\u02b5\1\0\1\u0367"+
-+ "\1\u02f3\4\u02b8\1\u0366\1\u02b8\7\0\32\u02b8\1\0\3\u02b8"+
-+ "\6\0\1\u02b8\2\0\2\u02b8\2\0\3\u038e\1\0\4\u038e"+
-+ "\3\0\2\u038e\2\0\1\u038e\1\u038f\6\u038e\7\0\32\u038e"+
-+ "\1\0\3\u038e\6\0\1\u038e\2\0\2\u038e\55\0\1\u0390"+
-+ "\77\0\1\u0391\104\0\1\u0392\125\0\1\u0393\102\0\1\u0394"+
-+ "\105\0\1\u0395\111\0\1\u0396\125\0\1\u0397\100\0\1\u0398"+
-+ "\112\0\1\u0399\143\0\1\u039a\45\0\1\u039b\113\0\1\u039c"+
-+ "\106\0\1\u039d\105\0\1\u039e\115\0\1\u039f\110\0\1\u03a0"+
-+ "\110\0\1\u03a1\105\0\1\u03a2\104\0\1\u03a3\120\0\1\u03a4"+
-+ "\147\0\1\u03a5\55\0\1\u03a6\120\0\1\u03a7\103\0\1\u03a8"+
-+ "\140\0\1\u03a9\107\0\1\u03aa\3\0\4\u012f\1\u0350\1\u012f"+
-+ "\1\u0351\2\u012f\2\357\1\76\13\u012f\1\357\2\u012f\1\357"+
-+ "\57\u012f\3\u03ab\1\u016e\2\u012f\1\u03ab\1\u012f\2\357\1\76"+
-+ "\13\u012f\1\357\2\u012f\1\357\13\u012f\2\u03ab\3\u012f\1\u03ab"+
-+ "\1\u012f\1\u03ab\1\u012f\1\u03ab\2\u012f\1\u03ab\1\u012f\4\u03ab"+
-+ "\2\u012f\1\u03ab\1\u012f\1\u03ab\14\u012f\1\357\3\u0289\3\357"+
-+ "\1\u0289\3\357\1\76\15\357\1\u012e\1\u012f\1\u0130\1\233"+
-+ "\1\357\1\233\7\357\2\u0289\3\357\1\u0289\1\357\1\u0289"+
-+ "\1\357\1\u0289\2\357\1\u0289\1\357\4\u0289\2\357\1\u0289"+
-+ "\1\357\1\u0289\14\357\4\230\1\u0354\1\230\1\u0355\2\230"+
-+ "\3\0\13\230\1\0\2\230\1\76\57\230\3\u03ac\1\234"+
-+ "\2\230\1\u03ac\1\230\3\0\13\230\1\0\2\230\1\76"+
-+ "\13\230\2\u03ac\3\230\1\u03ac\1\230\1\u03ac\1\230\1\u03ac"+
-+ "\2\230\1\u03ac\1\230\4\u03ac\2\230\1\u03ac\1\230\1\u03ac"+
-+ "\14\230\1\76\3\u0292\3\76\1\u0292\21\76\1\227\1\230"+
-+ "\1\231\1\0\1\76\1\0\7\76\2\u0292\3\76\1\u0292"+
-+ "\1\76\1\u0292\1\76\1\u0292\2\76\1\u0292\1\76\4\u0292"+
-+ "\2\76\1\u0292\1\76\1\u0292\14\76\10\0\1\u038c\3\0"+
-+ "\2\u038d\10\0\1\u038c\64\0\1\u0362\2\0\2\u0362\1\0"+
-+ "\1\u038d\13\0\1\u0362\1\0\1\u038d\10\0\25\u0362\4\0"+
-+ "\1\u0362\1\0\3\u0362\6\0\1\u0362\2\0\2\u0362\2\0"+
-+ "\3\u038e\1\0\4\u038e\3\0\2\u038e\2\0\1\u038e\1\u03ad"+
-+ "\6\u038e\7\0\32\u038e\1\0\3\u038e\6\0\1\u038e\2\0"+
-+ "\2\u038e\2\0\1\u038e\1\u03ae\1\u038e\1\0\2\u03ae\1\u038e"+
-+ "\1\u038f\3\0\2\u038e\2\0\1\u038e\1\u03ad\2\u038e\1\u03ae"+
-+ "\1\u038e\1\u038f\1\u038e\7\0\25\u03ae\4\u038e\1\u03ae\1\0"+
-+ "\3\u03ae\6\0\1\u03ae\2\0\2\u03ae\40\0\1\u03af\126\0"+
-+ "\1\u03b0\106\0\1\u03b1\116\0\1\u03b2\104\0\1\u03b3\141\0"+
-+ "\1\u03b4\56\0\1\u03b5\42\0\1\u03b6\210\0\1\u03b7\43\0"+
-+ "\1\u03b8\123\0\1\u03b9\111\0\1\u03ba\76\0\1\u03bb\130\0"+
-+ "\1\u03bc\133\0\1\u03bd\110\0\1\u03be\42\0\1\u03bf\125\0"+
-+ "\1\u03c0\77\0\1\u03c1\104\0\1\u03c2\107\0\1\u03c3\125\0"+
-+ "\1\u03c4\75\0\1\u03c5\112\0\1\u03c6\120\0\1\u03c7\116\0"+
-+ "\1\u03c8\46\0\1\u03c9\71\0\1\u012f\3\u028b\1\u016e\2\u012f"+
-+ "\1\u028b\1\u012f\2\357\1\76\13\u012f\1\357\2\u012f\1\357"+
-+ "\13\u012f\2\u028b\3\u012f\1\u028b\1\u012f\1\u028b\1\u012f\1\u028b"+
-+ "\2\u012f\1\u028b\1\u012f\4\u028b\2\u012f\1\u028b\1\u012f\1\u028b"+
-+ "\14\u012f\1\230\3\u0294\1\234\2\230\1\u0294\1\230\3\0"+
-+ "\13\230\1\0\2\230\1\76\13\230\2\u0294\3\230\1\u0294"+
-+ "\1\230\1\u0294\1\230\1\u0294\2\230\1\u0294\1\230\4\u0294"+
-+ "\2\230\1\u0294\1\230\1\u0294\14\230\1\0\1\u038e\1\u03ae"+
-+ "\1\u038e\1\0\2\u03ae\1\u038e\1\u03ca\3\0\2\u038e\1\u02b5"+
-+ "\1\0\1\u038e\1\u03ad\2\u038e\1\u03ae\1\u038e\1\u03ca\1\u038e"+
-+ "\7\0\25\u03ae\4\u038e\1\u03ae\1\0\3\u03ae\6\0\1\u03ae"+
-+ "\2\0\2\u03ae\2\0\3\u03ae\1\0\3\u03ae\1\u03cb\3\0"+
-+ "\1\u038f\1\u038e\1\u02b5\1\0\1\u038e\1\u03ad\2\u038e\2\u03ae"+
-+ "\1\u03cc\1\u03ae\7\0\32\u03ae\1\0\3\u03ae\6\0\1\u03ae"+
-+ "\2\0\2\u03ae\64\0\1\u03cd\100\0\1\u03ce\106\0\1\u03cf"+
-+ "\112\0\1\u03d0\110\0\1\u03d1\75\0\1\u03d2\10\0\1\u03d3"+
-+ "\2\0\1\u03d4\4\0\1\u03d5\66\0\1\u03d6\111\0\1\u03d7"+
-+ "\157\0\1\u03d8\106\0\1\u03d9\51\0\1\u03da\115\0\1\u03db"+
-+ "\143\0\1\u03dc\55\0\1\u03dd\116\0\1\u03de\103\0\1\u03df"+
-+ "\111\0\1\u03e0\74\0\1\u03e1\120\0\1\u03e2\76\0\1\u03e3"+
-+ "\117\0\1\u03e4\112\0\1\u03e5\106\0\1\u03e6\115\0\1\u03e7"+
-+ "\106\0\1\u03e8\45\0\1\u03e9\103\0\3\u038e\1\0\3\u038e"+
-+ "\1\u03cb\3\0\1\u038f\1\u038e\1\u02b5\1\0\1\u038e\1\u03ad"+
-+ "\4\u038e\1\u03cb\1\u038e\7\0\32\u038e\1\0\3\u038e\6\0"+
-+ "\1\u038e\2\0\2\u038e\41\0\1\u03ea\124\0\1\u03eb\142\0"+
-+ "\1\u03ec\57\0\1\u03ed\107\0\1\u03ee\42\0\1\u03ef\150\0"+
-+ "\1\u03f0\112\0\1\u03f1\46\0\1\u03f2\142\0\1\u03f3\125\0"+
-+ "\1\u03f4\41\0\1\u03f5\121\0\1\u03f6\152\0\1\u03f7\103\0"+
-+ "\1\u03f8\74\0\1\u03f9\111\0\1\u03fa\55\0\1\u03fb\150\0"+
-+ "\1\u03fc\112\0\1\u03fd\104\0\1\u03fe\151\0\1\u03ff\43\0"+
-+ "\1\u0400\113\0\1\u0401\123\0\1\u0402\140\0\1\u0403\63\0"+
-+ "\1\u0404\135\0\1\u0405\42\0\1\u0406\116\0\1\u0407\110\0"+
-+ "\1\u0408\151\0\1\u0409\40\0\1\u040a\117\0\1\u040b\120\0"+
-+ "\1\u040c\73\0\1\u040d\125\0\1\u040e\72\0\1\u040f\133\0"+
-+ "\1\u0410\66\0\1\u0411\113\0\1\u0412\117\0\1\u0413\103\0"+
-+ "\1\u0414\50\0\1\u0415\150\0\1\u0416\102\0\1\u0417\131\0"+
-+ "\1\u0418\135\0\1\u0419\45\0\1\u041a\64\0\1\u041b\154\0"+
-+ "\1\u041c\133\0\1\u041d\61\0\1\u041e\37\0\1\u041f\144\0"+
-+ "\1\u0420\130\0\1\u0421\103\0\1\u0422\115\0\1\u0423\134\0"+
-+ "\1\u0424\10\0\1\u0425\142\0\1\u0426\156\0\1\u0427\61\0"+
-+ "\1\u0428\72\0\1\u0429\126\0\1\u042a\106\0\1\u042b\141\0"+
-+ "\1\u042c\10\0\1\u042d\143\0\1\u042e\112\0\1\u042f\153\0"+
-+ "\1\u0430\60\0\1\u0431\137\0\1\u0432\60\0\1\u0433\106\0"+
-+ "\1\u0434\111\0\1\u0435\142\0\1\u0436\110\0\1\u0437\53\0"+
-+ "\1\u0438\2\0\1\u0439\100\0\1\u043a\120\0\1\u043b\142\0"+
-+ "\1\u043c\41\0\1\u043d\112\0\1\u043e\154\0\1\u043f\54\0"+
-+ "\1\u0440\103\0\1\u0441\127\0\1\u0442\76\0\1\u0443\105\0"+
-+ "\1\u0444\110\0\1\u0445\106\0\1\u0446\105\0\1\u0447\125\0"+
-+ "\1\u0448\105\0\1\u0449\103\0\1\u044a\115\0\1\u044b\106\0"+
-+ "\1\u044c\116\0\1\u044d\50\0\1\u044e\132\0\1\u044f\112\0"+
-+ "\1\u0450\115\0\1\u0451\121\0\1\u0452\103\0\1\u0453\102\0"+
-+ "\1\u0454\112\0\1\u0455\111\0\1\u0456\105\0\1\u0457\116\0"+
-+ "\1\u0458\117\0\1\u0459\33\0\1\u045a\121\0\1\u045b\137\0"+
-+ "\1\u045c\103\0\1\u045d\155\0\1\u045e\50\0\1\u045f\105\0"+
-+ "\1\u0460\110\0\1\u0461\116\0\1\u0462\45\0\1\u0463\155\0"+
-+ "\1\u0464\76\0\1\u0465\155\0\1\u0466\43\0\1\u0467\115\0"+
-+ "\1\u0468\110\0\1\u0469\50\0\1\u046a\155\0\1\u046b\113\0"+
-+ "\1\u046c\40\0\1\u046d\163\0\1\u046e\70\0\1\u046f\125\0"+
-+ "\1\u0470\137\0\1\u0471\110\0\1\u0472\51\0\1\u0473\101\0"+
-+ "\1\u0474\124\0\1\u0475\76\0\1\u0476\115\0\1\u0477\120\0"+
-+ "\1\u0478\73\0\1\u0479\154\0\1\u047a\110\0\1\u047b\110\0"+
-+ "\1\u047c\56\0\1\u047d\100\0\1\u047e\104\0\1\u047f\132\0"+
-+ "\1\u0480\73\0\1\u0481\105\0\1\u0482\112\0\1\u0483\120\0"+
-+ "\1\u0484\76\0\1\u0485\126\0\1\u0486\71\0\1\u0487\123\0"+
-+ "\1\u0488\76\0\1\u0489\126\0\1\u048a\50\0\1\u048b\110\0"+
-+ "\1\u048c\152\0\1\u048d\70\0\1\u048e\110\0\1\u048f\110\0"+
-+ "\1\u0490\155\0\1\u0491\55\0\1\u0492\76\0\1\u0493\66\0"+
-+ "\1\u0494\110\0\1\u0495\110\0\1\u0496\132\0\1\u0497\137\0"+
-+ "\1\u0498\64\0\1\u0499\52\0\1\u049a\145\0\1\u049b\106\0"+
-+ "\1\u049c\154\0\1\u049d\44\0\1\u049e\113\0\1\u049f\110\0"+
-+ "\1\u04a0\121\0\1\u04a1\110\0\1\u04a2\101\0\1\u04a3\106\0"+
-+ "\1\u04a4\117\0\1\u04a5\143\0\1\u04a6\41\0\1\u04a7\117\0"+
-+ "\1\u04a8\123\0\1\u04a9\72\0\1\u04aa\113\0\1\u04ab\101\0"+
-+ "\1\u04ac\156\0\1\u04ad\43\0\1\u04ae\110\0\1\u04af\155\0"+
-+ "\1\u04b0\51\0\1\u04b1\61\0\1\u04b2\130\0\1\u04b3\114\0"+
-+ "\1\u04b4\116\0\1\u04b5\100\0\1\u04b6\106\0\1\u04b7\114\0"+
-+ "\1\u04b8\116\0\1\u04b9\102\0\1\u04ba\105\0\1\u04bb\114\0"+
-+ "\1\u04bc\107\0\1\u04bd\53\0\1\u04be\172\0\1\u04bf\63\0"+
-+ "\1\u04c0\111\0\1\u04c1\63\0\1\u04c2\176\0\1\u04c3\60\0"+
-+ "\1\u04c4\52\0\1\u04c5\134\0\1\u04c6\111\0\1\u04c7\151\0"+
-+ "\1\u04c8\110\0\1\u04c9\11\0\1\u04ca\142\0\1\u04cb\155\0"+
-+ "\1\u04cc\110\0\1\u04cd\56\0\1\u04ce\43\0\1\u04cf\142\0"+
-+ "\1\u04d0\155\0\1\u04d1\43\0\1\u04d2\155\0\1\u04d3\110\0"+
-+ "\1\u04d4\43\0\1\u04d5\67\0\1\u04d6\132\0\1\u04d7\154\0"+
-+ "\1\u04d8\43\0\1\u04d9\67\0\1\u04da\110\0\1\u04db\144\0"+
-+ "\1\u04dc\120\0\1\u04dd\44\0\1\u04de\110\0\1\u04df\132\0"+
-+ "\1\u04e0\125\0\1\u04e1\137\0\1\u04e2\22\0\1\u04e3\146\0"+
-+ "\1\u04e4\52\0\1\u04e5\110\0\1\u04e6\176\0\1\u04e7\11\0"+
-+ "\1\u04e8\121\0\1\u04e9\176\0\1\u04ea\44\0\1\u04eb\155\0"+
-+ "\1\u04ec\46\0\1\u04ed\123\0\1\u04ee\50\0\1\u04ef\132\0"+
-+ "\1\u04f0\66\0\1\u04f1\144\0\1\u04f2\54\0\1\u04f3\130\0"+
-+ "\1\u04f4\127\0\1\u04f5\75\0\1\u04f6\113\0\1\u04f7\50\0"+
-+ "\1\u04f8\143\0\1\u04f9\113\0\1\u04fa\117\0\1\u04fb\142\0"+
-+ "\1\u04fc\46\0\1\u04fd\120\0\1\u04fe\74\0\1\u04ff\111\0"+
-+ "\1\u0500\113\0\1\u0501\64\0\1\u0502\176\0\1\u0503\44\0"+
-+ "\1\u0504\113\0\1\u0505\151\0\1\u0506\73\0\1\u0507\37\0"+
-+ "\1\u0508\130\0\1\u0509\111\0\1\u050a\67\0\1\u050b\176\0"+
-+ "\1\u050c\47\0\1\u050d\151\0\1\u050e\22\0\1\u050f\131\0"+
-+ "\1\u0510\67\0\1\u0511\176\0\1\u0512\22\0\1\u0513\71\0";
-
- private static int [] zzUnpackTrans() {
-- int [] result = new int[48777];
-+ int [] result = new int[82490];
- int offset = 0;
- offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
- return result;
-@@ -1518,28 +1783,34 @@
- "\3\0\6\1\1\0\1\11\1\0\1\1\6\0\2\11"+
- "\1\0\1\1\4\0\1\11\1\0\1\1\1\11\1\1"+
- "\1\11\3\0\42\1\3\0\2\1\1\0\1\11\1\1"+
-- "\14\0\1\11\1\1\3\0\46\1\2\11\1\0\2\1"+
-- "\1\0\1\1\13\0\1\1\5\0\11\1\1\0\31\1"+
-- "\1\11\2\1\7\0\2\1\10\0\1\1\1\11\3\0"+
-- "\12\1\1\0\17\1\1\0\7\1\6\0\2\1\3\0"+
-+ "\15\0\1\11\1\1\3\0\46\1\2\11\1\0\2\1"+
-+ "\1\0\1\1\14\0\1\1\5\0\11\1\1\0\31\1"+
-+ "\1\11\2\1\10\0\2\1\10\0\1\1\1\11\3\0"+
-+ "\12\1\1\0\17\1\1\0\7\1\7\0\2\1\3\0"+
- "\1\1\6\0\1\1\1\11\4\0\13\1\4\0\22\1"+
-- "\1\11\6\0\1\1\6\0\1\1\13\0\10\1\3\0"+
-- "\15\1\1\0\2\1\1\0\5\1\4\0\2\11\2\1"+
-+ "\1\11\7\0\1\1\6\0\1\1\13\0\10\1\3\0"+
-+ "\15\1\1\0\2\1\1\0\5\1\5\0\2\11\2\1"+
- "\4\0\2\1\7\0\1\1\1\11\1\0\12\1\1\0"+
-- "\1\1\1\0\7\1\2\0\1\1\1\0\2\1\2\0"+
-+ "\1\1\1\0\7\1\2\0\1\1\1\0\2\1\3\0"+
- "\1\11\2\0\1\1\2\0\2\1\4\0\1\1\2\0"+
- "\2\1\7\0\4\1\1\0\1\1\1\0\1\1\1\0"+
- "\3\1\2\0\11\1\1\0\1\1\3\0\1\1\1\0"+
-- "\2\1\3\0\1\11\1\0\4\1\3\0\4\1\3\0"+
-+ "\2\1\20\0\1\11\1\0\4\1\3\0\4\1\3\0"+
- "\1\1\1\11\1\0\4\1\3\0\2\1\2\0\10\1"+
-- "\12\0\3\1\5\0\3\1\1\0\1\1\1\11\1\0"+
-- "\6\1\3\0\10\1\2\0\2\11\4\0\1\1\3\0"+
-+ "\41\0\3\1\5\0\3\1\1\0\1\1\1\11\1\0"+
-+ "\6\1\3\0\10\1\33\0\2\11\4\0\1\1\3\0"+
- "\2\1\1\11\1\1\1\0\1\1\1\11\1\0\5\1"+
-- "\1\0\2\1\1\0\1\1\3\0\1\1\2\0\1\1"+
-- "\1\11\2\1\10\0\1\11\3\1";
-+ "\1\0\2\1\1\0\1\1\35\0\1\1\2\0\1\1"+
-+ "\1\11\2\1\74\0\1\11\3\1\51\0\1\11\44\0"+
-+ "\1\11\62\0\1\11\14\0\1\11\57\0\2\11\7\0"+
-+ "\3\11\33\0\1\11\17\0\1\11\2\0\1\11\20\0"+
-+ "\1\11\3\0\2\11\2\0\2\11\3\0\1\11\1\0"+
-+ "\2\11\2\0\1\11\5\0\1\11\1\0\1\11\1\0"+
-+ "\1\11\16\0\1\11\5\0\1\11\2\0\1\11\3\0"+
-+ "\1\11\1\0\1\11\1\0\1\11";
-
- private static int [] zzUnpackAttribute() {
-- int [] result = new int[826];
-+ int [] result = new int[1299];
- int offset = 0;
- offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
- return result;
-@@ -1603,6 +1874,8 @@
- /** zzAtEOF == true <=> the scanner is at the EOF */
- private boolean zzAtEOF;
-
-+ /** denotes if the user-EOF-code has already been executed */
-+ private boolean zzEOFDone;
-
- /** the stack of open (nested) input streams to read from */
- private java.util.Stack zzStreams = new java.util.Stack();
-@@ -1621,6 +1894,7 @@
- int yycolumn;
- char [] zzBuffer;
- boolean zzAtEOF;
-+ boolean zzEOFDone;
-
- /** sets all values stored in this class */
- ZzFlexStreamInfo(java.io.Reader zzReader, int zzEndRead, int zzStartRead,
-@@ -1633,14 +1907,12 @@
- this.zzMarkedPos = zzMarkedPos;
- this.zzBuffer = zzBuffer;
- this.zzAtEOF = zzAtEOF;
-+ this.zzEOFDone = zzEOFDone;
- this.yyline = yyline;
- this.yycolumn = yycolumn;
- }
- }
-
-- /** denotes if the user-EOF-code has already been executed */
-- private boolean zzEOFDone;
--
- /* user code: */
- int balance = 0;
- int commentbalance = 0;
-@@ -1924,6 +2196,7 @@
- zzCurrentPos = s.zzCurrentPos;
- zzMarkedPos = s.zzMarkedPos ;
- zzAtEOF = s.zzAtEOF;
-+ zzEOFDone = s.zzEOFDone;
- yyline = s.yyline;
- yycolumn = s.yycolumn;
- }
-@@ -1955,6 +2228,7 @@
- zzReader = reader;
- zzAtBOL = true;
- zzAtEOF = false;
-+ zzEOFDone = false;
- zzEndRead = zzStartRead = 0;
- zzCurrentPos = zzMarkedPos = 0;
- yyline = yychar = yycolumn = 0;
-@@ -2229,11 +2503,19 @@
- case 118:
- { cupDebug = true;
- }
-- case 147: break;
-+ case 177: break;
-+ case 175:
-+ { return symbol(UNICODE_FINAL_QUOTE_PUNCTUATION);
-+ }
-+ case 178: break;
-+ case 168:
-+ { return symbol(UNICODE_DASH_PUNCTUATION);
-+ }
-+ case 179: break;
- case 122:
- { actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1; return symbol(EOFRULE);
- }
-- case 148: break;
-+ case 180: break;
- case 113:
- { File f = new File(yytext().substring(9).trim());
- if ( !f.canRead() )
-@@ -2251,146 +2533,166 @@
- throw new ScannerException(file,ErrorMessages.NOT_READABLE, yyline);
- }
- }
-- case 149: break;
-+ case 181: break;
- case 88:
- { return symbol(FULL);
- }
-- case 150: break;
-+ case 182: break;
-+ case 158:
-+ { return symbol(UNICODE_LINE_SEPARATOR);
-+ }
-+ case 183: break;
- case 92:
- { return symbol(ASCII);
- }
-- case 151: break;
-+ case 184: break;
- case 21:
- { string.setLength(0); nextState = REGEXP; yybegin(STRING_CONTENT);
- }
-- case 152: break;
-+ case 185: break;
- case 142:
- { return symbol(UPPERCLASS);
- }
-- case 153: break;
-+ case 186: break;
- case 34:
- { return symbol(COMMA);
- }
-- case 154: break;
-+ case 187: break;
- case 61:
- { return symbol(CHAR,new Character('\f'));
- }
-- case 155: break;
-+ case 188: break;
- case 111:
- { throw new ScannerException(file,ErrorMessages.NO_BUFFER_SIZE, yyline);
- }
-- case 156: break;
-+ case 189: break;
-+ case 153:
-+ { return symbol(UNICODE_OTHER_NUMBER);
-+ }
-+ case 190: break;
- case 104:
- { throw new ScannerException(file,ErrorMessages.EOF_WO_ACTION);
- }
-- case 157: break;
-+ case 191: break;
- case 143:
- { return symbol(LOWERCLASS);
- }
-- case 158: break;
-+ case 192: break;
-+ case 176:
-+ { return symbol(UNICODE_INITIAL_QUOTE_PUNCTUATION);
-+ }
-+ case 193: break;
- case 72:
- { string.append('\r');
- }
-- case 159: break;
-+ case 194: break;
- case 43:
- { return symbol(HAT);
- }
-- case 160: break;
-+ case 195: break;
- case 48:
- { yybegin(MACROS); ctorArgs.add(yytext().trim());
- }
-- case 161: break;
-+ case 196: break;
- case 1:
- { return symbol(EOF);
- }
-- case 162: break;
-+ case 197: break;
- case 59:
- { return symbol(CHAR,new Character('\t'));
- }
-- case 163: break;
-+ case 198: break;
- case 145:
- { eofclose = false;
- }
-- case 164: break;
-+ case 199: break;
- case 103:
- { isPublic = true;
- }
-- case 165: break;
-+ case 200: break;
-+ case 164:
-+ { return symbol(UNICODE_UPPERCASE_LETTER);
-+ }
-+ case 201: break;
- case 112:
- { actionText.setLength(0); yybegin(JAVA_CODE);
- Symbol s = symbol_countUpdate(EOFRULE, null);
- action_line = s.left+1;
- return s;
- }
-- case 166: break;
-+ case 202: break;
- case 40:
- { balance++; return symbol(OPENCLASS);
- }
-- case 167: break;
-+ case 203: break;
-+ case 147:
-+ { return symbol(UNICODE_FORMAT);
-+ }
-+ case 204: break;
- case 11:
- { yybegin(REGEXP);
- }
-- case 168: break;
-+ case 205: break;
- case 12:
- { yybegin(STATES); return symbol_countUpdate(LESSTHAN, null);
- }
-- case 169: break;
-+ case 206: break;
- case 68:
- { string.append( (char) Integer.parseInt(yytext().substring(1,yytext().length()), 8));
- }
-- case 170: break;
-+ case 207: break;
- case 62:
- { return symbol(CHAR,new Character('\b'));
- }
-- case 171: break;
-+ case 208: break;
- case 39:
- { throw new ScannerException(file,ErrorMessages.EOL_IN_CHARCLASS,yyline,yycolumn);
- }
-- case 172: break;
-+ case 209: break;
- case 5:
- { states.insert(yytext(),inclusive_states);
- }
-- case 173: break;
-+ case 210: break;
- case 70:
- { string.append('\n');
- }
-- case 174: break;
-+ case 211: break;
- case 10:
- { yybegin(REGEXP); return symbol(EQUALS);
- }
-- case 175: break;
-+ case 212: break;
- case 146:
- { return symbol(JLETTERDIGITCLASS);
- }
-- case 176: break;
-+ case 213: break;
- case 19:
- { return symbol(STAR);
- }
-- case 177: break;
-+ case 214: break;
- case 42:
- { string.setLength(0); nextState = CHARCLASS; yybegin(STRING_CONTENT);
- }
-- case 178: break;
-+ case 215: break;
- case 116:
- { isAbstract = true;
- }
-- case 179: break;
-+ case 216: break;
- case 75:
- { yypushback(1); yycolumn--; return symbol(CHAR, new Character(yytext().charAt(0)));
- }
-- case 180: break;
-+ case 217: break;
- case 114:
- { lexThrow = concExc(lexThrow,yytext().substring(8).trim());
- }
-- case 181: break;
-+ case 218: break;
- case 109:
- { throw new ScannerException(file,ErrorMessages.QUIL_CUPSYM, yyline);
- }
-- case 182: break;
-+ case 219: break;
- case 93:
- { packed = false; useRowMap = true;
- }
-- case 183: break;
-+ case 220: break;
- case 87:
- { cupCompatible = true;
- isImplementing = concExc(isImplementing, "java_cup.runtime.Scanner");
-@@ -2402,250 +2704,298 @@
- eofVal = "return new java_cup.runtime.Symbol("+cupSymbol+".EOF);";
- if (!Options.jlex) eofclose = true;
- }
-- case 184: break;
-+ case 221: break;
-+ case 171:
-+ { return symbol(UNICODE_PARAGRAPH_SEPARATOR);
-+ }
-+ case 222: break;
- case 30:
- { bolUsed = true; return symbol(HAT);
- }
-- case 185: break;
-+ case 223: break;
- case 4:
- { throw new ScannerException(file,ErrorMessages.UNEXPECTED_CHAR, yyline, yycolumn);
- }
-- case 186: break;
-+ case 224: break;
- case 35:
- { yybegin(REGEXP); return symbol(MORETHAN);
- }
-- case 187: break;
-+ case 225: break;
- case 100:
- { packed = false; useRowMap = false;
- }
-- case 188: break;
-+ case 226: break;
- case 119:
- { caseless = true;
- }
-- case 189: break;
-+ case 227: break;
- case 38:
- { yybegin(nextState); return symbol(STRING, string.toString());
- }
-- case 190: break;
-+ case 228: break;
- case 76:
- { return symbol(REPEAT, new Integer(yytext().substring(1).trim()));
- }
-- case 191: break;
-+ case 229: break;
- case 13:
- { return symbol_countUpdate(RBRACE, null);
- }
-- case 192: break;
-+ case 230: break;
- case 139:
- { scanErrorException = yytext().substring(11).trim();
- }
-- case 193: break;
-+ case 231: break;
- case 141:
- { lexThrow = concExc(lexThrow,yytext().substring(12).trim());
- }
-- case 194: break;
-+ case 232: break;
- case 84:
- { return symbol(MACROUSE, yytext().substring(1,yytext().length()-1));
- }
-- case 195: break;
-+ case 233: break;
- case 2:
- { /* ignore */
- }
-- case 196: break;
-+ case 234: break;
-+ case 150:
-+ { return symbol(UNICODE_UNASSIGNED);
-+ }
-+ case 235: break;
-+ case 156:
-+ { return symbol(UNICODE_LETTER_NUMBER);
-+ }
-+ case 236: break;
- case 127:
- { throw new ScannerException(file,ErrorMessages.QUIL_INITTHROW, yyline);
- }
-- case 197: break;
-+ case 237: break;
- case 47:
- { throw new ScannerException(file,ErrorMessages.CTOR_ARG,yyline,yycolumn);
- }
-- case 198: break;
-+ case 238: break;
-+ case 161:
-+ { return symbol(UNICODE_CURRENCY_SYMBOL);
-+ }
-+ case 239: break;
- case 108:
- { throw new ScannerException(file,ErrorMessages.QUIL_THROW, yyline);
- }
-- case 199: break;
-+ case 240: break;
- case 31:
- { actionText.append(yytext());
- }
-- case 200: break;
-+ case 241: break;
- case 83:
- { string.append( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16));
- }
-- case 201: break;
-+ case 242: break;
-+ case 174:
-+ { return symbol(UNICODE_COMBINING_SPACING_MARK);
-+ }
-+ case 243: break;
- case 107:
- { notUnix = true;
- }
-- case 202: break;
-+ case 244: break;
- case 89:
- { lineCount = true;
- }
-- case 203: break;
-+ case 245: break;
- case 136:
- { initThrow = concExc(initThrow,yytext().substring(11).trim());
- }
-- case 204: break;
-+ case 246: break;
- case 131:
- { standalone = true; isInteger = true;
- }
-- case 205: break;
-+ case 247: break;
- case 52:
- { nextState = MACROS; yybegin(COMMENT);
- }
-- case 206: break;
-+ case 248: break;
- case 25:
- { return symbol(TILDE);
- }
-- case 207: break;
-+ case 249: break;
- case 37:
- { throw new ScannerException(file,ErrorMessages.UNTERMINATED_STR, yyline, yycolumn);
- }
-- case 208: break;
-+ case 250: break;
- case 110:
- { className = yytext().substring(7).trim();
- }
-- case 209: break;
-+ case 251: break;
- case 9:
- { throw new ScannerException(file,ErrorMessages.UNKNOWN_OPTION, yyline, yycolumn);
- }
-- case 210: break;
-+ case 252: break;
-+ case 162:
-+ { return symbol(UNICODE_MODIFIER_LETTER);
-+ }
-+ case 253: break;
- case 55:
- { nextState = REGEXPSTART; yybegin(COMMENT);
- }
-- case 211: break;
-+ case 254: break;
-+ case 173:
-+ { return symbol(UNICODE_CONNECTOR_PUNCTUATION);
-+ }
-+ case 255: break;
- case 16:
- { return symbol(POINT);
- }
-- case 212: break;
-+ case 256: break;
- case 73:
- { string.append('\f');
- }
-- case 213: break;
-+ case 257: break;
- case 65:
- { yybegin(REPEATEXP); return symbol(REPEAT, new Integer(yytext().trim().substring(1).trim()));
- }
-- case 214: break;
-+ case 258: break;
- case 80:
- { return symbol(CHAR, new Character( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16)));
- }
-- case 215: break;
-+ case 259: break;
- case 140:
- { initThrow = concExc(initThrow,string); yybegin(MACROS);
- }
-- case 216: break;
-+ case 260: break;
- case 135:
- { eofThrow = concExc(eofThrow,string); yybegin(MACROS);
- }
-- case 217: break;
-+ case 261: break;
- case 71:
- { string.append('\t');
- }
-- case 218: break;
-+ case 262: break;
- case 67:
- { string.append(yytext().charAt(1));
- }
-- case 219: break;
-+ case 263: break;
- case 7:
- { yybegin(MACROS);
- }
-- case 220: break;
-+ case 264: break;
- case 98:
- { eofCode = conc(eofCode,string); yybegin(MACROS);
- }
-- case 221: break;
-+ case 265: break;
- case 56:
- { return symbol(CHAR, new Character(yytext().charAt(1)));
- }
-- case 222: break;
-+ case 266: break;
-+ case 154:
-+ { return symbol(UNICODE_OTHER_LETTER);
-+ }
-+ case 267: break;
- case 28:
- { return symbol(PLUS);
- }
-- case 223: break;
-+ case 268: break;
- case 101:
- { columnCount = true;
- }
-- case 224: break;
-+ case 269: break;
- case 124:
- { isExtending = yytext().substring(9).trim();
- }
-- case 225: break;
-+ case 270: break;
- case 123:
- { eofVal = string.toString(); yybegin(MACROS);
- }
-- case 226: break;
-+ case 271: break;
- case 36:
- { string.append(yytext());
- }
-- case 227: break;
-+ case 272: break;
- case 97:
- { return symbol(UNICODE);
- }
-- case 228: break;
-+ case 273: break;
-+ case 152:
-+ { return symbol(UNICODE_PRIVATE_USE);
-+ }
-+ case 274: break;
-+ case 163:
-+ { return symbol(UNICODE_MODIFIER_SYMBOL);
-+ }
-+ case 275: break;
- case 74:
- { string.append('\b');
- }
-- case 229: break;
-+ case 276: break;
- case 24:
- { return symbol(BANG);
- }
-- case 230: break;
-+ case 277: break;
- case 132:
- { throw new ScannerException(file,ErrorMessages.QUIL_SCANERROR, yyline);
- }
-- case 231: break;
-+ case 278: break;
- case 91:
- { packed = true; useRowMap = true;
- }
-- case 232: break;
-+ case 279: break;
- case 26:
- { return symbol(OPENBRACKET);
- }
-- case 233: break;
-+ case 280: break;
-+ case 155:
-+ { return symbol(UNICODE_OTHER_SYMBOL);
-+ }
-+ case 281: break;
- case 60:
- { return symbol(CHAR,new Character('\r'));
- }
-- case 234: break;
-+ case 282: break;
- case 94:
- { isFinal = true;
- }
-- case 235: break;
-+ case 283: break;
- case 27:
- { return symbol(CLOSEBRACKET);
- }
-- case 236: break;
-+ case 284: break;
- case 86:
- { isInteger = true;
- }
-- case 237: break;
-+ case 285: break;
-+ case 166:
-+ { return symbol(UNICODE_TITLECASE_LETTER);
-+ }
-+ case 286: break;
- case 20:
- { return symbol(LOOKAHEAD);
- }
-- case 238: break;
-+ case 287: break;
- case 51:
- { commentbalance++;
- }
-- case 239: break;
-+ case 288: break;
- case 49:
- { t.start();
- yybegin(MACROS);
- macroDefinition = true;
- return symbol(USERCODE,userCode);
- }
-- case 240: break;
-+ case 289: break;
- case 44:
- { return symbol(DASH);
- }
-- case 241: break;
-+ case 290: break;
- case 138:
- { throw new ScannerException(file,ErrorMessages.QUIL_YYLEXTHROW, yyline);
- }
-- case 242: break;
-+ case 291: break;
- case 96:
- { debugOption = true;
- }
-- case 243: break;
-+ case 292: break;
- case 64:
- { nextState = REGEXP; yybegin(COMMENT);
- }
-- case 244: break;
-+ case 293: break;
- case 32:
- { if (balance > 0) {
- balance--;
-@@ -2658,135 +3008,171 @@
- return symbol(ACTION, a);
- }
- }
-- case 245: break;
-+ case 294: break;
-+ case 157:
-+ { return symbol(UNICODE_ENCLOSING_MARK);
-+ }
-+ case 295: break;
- case 29:
- { return symbol(DOLLAR);
- }
-- case 246: break;
-+ case 296: break;
-+ case 169:
-+ { return symbol(UNICODE_OTHER_PUNCTUATION);
-+ }
-+ case 297: break;
- case 17:
- { yybegin(CHARCLASS); return symbol(OPENCLASS);
- }
-- case 247: break;
-+ case 298: break;
- case 105:
- { initCode = conc(initCode,string); yybegin(MACROS);
- }
-- case 248: break;
-+ case 299: break;
- case 69:
- { string.append('\"');
- }
-- case 249: break;
-+ case 300: break;
- case 137:
- { isImplementing = concExc(isImplementing, yytext().substring(12).trim());
- }
-- case 250: break;
-+ case 301: break;
- case 126:
- { return symbol(LETTERCLASS);
- }
-- case 251: break;
-+ case 302: break;
-+ case 151:
-+ { return symbol(UNICODE_MATH_SYMBOL);
-+ }
-+ case 303: break;
- case 102:
- { isInteger = true;
- if (eofVal == null)
- eofVal = "return 0;";
- eofclose = true;
- }
-- case 252: break;
-+ case 304: break;
- case 41:
- { if (balance > 0) balance--; else yybegin(REGEXP); return symbol(CLOSECLASS);
- }
-- case 253: break;
-+ case 305: break;
- case 77:
- { string.setLength(0); yybegin(COPY);
- }
-- case 254: break;
-+ case 306: break;
- case 8:
- { return symbol(IDENT, yytext());
- }
-- case 255: break;
-+ case 307: break;
- case 121:
- { return symbol(DIGITCLASS);
- }
-- case 256: break;
-+ case 308: break;
- case 144:
- { lexThrow = concExc(lexThrow,string); yybegin(MACROS);
- }
-- case 257: break;
-+ case 309: break;
- case 53:
- { Out.warning(ErrorMessages.NOT_AT_BOL, yyline); yypushback(1);
- }
-- case 258: break;
-+ case 310: break;
- case 23:
- { return symbol(BAR);
- }
-- case 259: break;
-+ case 311: break;
-+ case 148:
-+ { return symbol(UNICODE_CONTROL);
-+ }
-+ case 312: break;
- case 45:
- { throw new ScannerException(file,ErrorMessages.UNEXPECTED_NL, yyline, yycolumn);
- }
-- case 260: break;
-+ case 313: break;
- case 117:
- { cupSymbol = yytext().substring(8).trim();
- if (cupCompatible) Out.warning(ErrorMessages.CUPSYM_AFTER_CUP, yyline);
- }
-- case 261: break;
-+ case 314: break;
- case 58:
- { return symbol(CHAR,new Character('\n'));
- }
-- case 262: break;
-+ case 315: break;
- case 95:
- { isYYEOF = true;
- }
-- case 263: break;
-+ case 316: break;
- case 14:
- { return symbol(CHAR, new Character(yytext().charAt(0)));
- }
-- case 264: break;
-+ case 317: break;
- case 99:
- { tokenType = yytext().substring(6).trim();
- }
-- case 265: break;
-+ case 318: break;
-+ case 160:
-+ { return symbol(UNICODE_SPACE_SEPARATOR);
-+ }
-+ case 319: break;
- case 33:
- { balance++; actionText.append('{');
- }
-- case 266: break;
-+ case 320: break;
- case 128:
- { eofThrow = concExc(eofThrow,yytext().substring(10).trim());
- }
-- case 267: break;
-+ case 321: break;
- case 63:
- { actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1; return symbol(REGEXPEND);
- }
-- case 268: break;
-+ case 322: break;
- case 81:
- { return symbol_countUpdate(MACROUSE, makeMacroIdent());
- }
-- case 269: break;
-+ case 323: break;
-+ case 170:
-+ { return symbol(UNICODE_START_PUNCTUATION);
-+ }
-+ case 324: break;
-+ case 149:
-+ { return symbol(UNICODE_SURROGATE);
-+ }
-+ case 325: break;
- case 15:
- { if (macroDefinition) { yybegin(MACROS); } return symbol(REGEXPEND);
- }
-- case 270: break;
-+ case 326: break;
- case 125:
- { throw new ScannerException(file,ErrorMessages.QUIL_EOFTHROW, yyline);
- }
-- case 271: break;
-+ case 327: break;
-+ case 167:
-+ { return symbol(UNICODE_LOWERCASE_LETTER);
-+ }
-+ case 328: break;
- case 90:
- { charCount = true;
- }
-- case 272: break;
-+ case 329: break;
-+ case 165:
-+ { return symbol(UNICODE_NON_SPACING_MARK);
-+ }
-+ case 330: break;
- case 130:
- { visibility = "private"; Skeleton.makePrivate();
- }
-- case 273: break;
-+ case 331: break;
- case 134:
- { return symbol(JLETTERCLASS);
- }
-- case 274: break;
-+ case 332: break;
- case 22:
- { yybegin(REGEXPSTART); return symbol(LBRACE);
- }
-- case 275: break;
-+ case 333: break;
- case 115:
- { eofclose = true;
- }
-- case 276: break;
-+ case 334: break;
- case 66:
- // lookahead expression with fixed lookahead length
- yypushback(1);
-@@ -2799,7 +3185,7 @@
- return symbol(NOACTION);
- }
- }
-- case 277: break;
-+ case 335: break;
- case 82:
- // lookahead expression with fixed lookahead length
- yypushback(2);
-@@ -2812,66 +3198,74 @@
- return symbol(NOACTION);
- }
- }
-- case 278: break;
-+ case 336: break;
- case 46:
- { yybegin(REGEXP); return symbol(RBRACE);
- }
-- case 279: break;
-+ case 337: break;
- case 78:
- { inclusive_states = false; yybegin(STATELIST);
- }
-- case 280: break;
-+ case 338: break;
- case 120:
- { bufferSize = Integer.parseInt(yytext().substring(8).trim());
- }
-- case 281: break;
-+ case 339: break;
- case 106:
- { isIntWrap = true;
- }
-- case 282: break;
-+ case 340: break;
- case 133:
- { yybegin(CTOR_ARG); ctorTypes.add(yytext().substring(8).trim());
- }
-- case 283: break;
-+ case 341: break;
- case 3:
- { userCode.append(yytext());
- }
-- case 284: break;
-+ case 342: break;
-+ case 159:
-+ { return symbol(UNICODE_END_PUNCTUATION);
-+ }
-+ case 343: break;
- case 54:
- { macroDefinition = false; yybegin(REGEXPSTART); return symbol(DELIMITER);
- }
-- case 285: break;
-+ case 344: break;
- case 129:
- { functionName = yytext().substring(10).trim();
- }
-- case 286: break;
-+ case 345: break;
- case 85:
- { classCode = conc(classCode,string); yybegin(MACROS);
- }
-- case 287: break;
-+ case 346: break;
- case 18:
- { return symbol(QUESTION);
- }
-- case 288: break;
-+ case 347: break;
- case 50:
- { if (commentbalance > 0)
- commentbalance--;
- else
- yybegin(nextState);
- }
-- case 289: break;
-+ case 348: break;
- case 79:
- { inclusive_states = true; yybegin(STATELIST);
- }
-- case 290: break;
-+ case 349: break;
- case 57:
- { return symbol(CHAR, new Character( (char) Integer.parseInt(yytext().substring(1,yytext().length()), 8)));
- }
-- case 291: break;
-+ case 350: break;
-+ case 172:
-+ { return symbol(UNICODE_DECIMAL_DIGIT_NUMBER);
-+ }
-+ case 351: break;
- case 6:
- {
- }
-- case 292: break;
-+ case 352: break;
- default:
- if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
- zzAtEOF = true;
-@@ -2880,7 +3274,7 @@
- case STRING_CONTENT: {
- throw new ScannerException(file,ErrorMessages.EOF_IN_STRING);
- }
-- case 827: break;
-+ case 1300: break;
- case MACROS: {
- if ( yymoreStreams() ) {
- file = (File) files.pop();
-@@ -2889,35 +3283,35 @@
- else
- throw new ScannerException(file,ErrorMessages.EOF_IN_MACROS);
- }
-- case 828: break;
-+ case 1301: break;
- case STATELIST: {
- throw new ScannerException(file,ErrorMessages.EOF_IN_MACROS);
- }
-- case 829: break;
-+ case 1302: break;
- case CHARCLASS: {
- throw new ScannerException(file,ErrorMessages.EOF_IN_REGEXP);
- }
-- case 830: break;
-+ case 1303: break;
- case JAVA_CODE: {
- throw new ScannerException(file,ErrorMessages.EOF_IN_ACTION, action_line-1);
- }
-- case 831: break;
-+ case 1304: break;
- case REPEATEXP: {
- throw new ScannerException(file,ErrorMessages.EOF_IN_REGEXP);
- }
-- case 832: break;
-+ case 1305: break;
- case COMMENT: {
- throw new ScannerException(file,ErrorMessages.EOF_IN_COMMENT);
- }
-- case 833: break;
-+ case 1306: break;
- case STATES: {
- throw new ScannerException(file,ErrorMessages.EOF_IN_STATES);
- }
-- case 834: break;
-+ case 1307: break;
- case COPY: {
- throw new ScannerException(file,ErrorMessages.EOF_IN_MACROS);
- }
-- case 835: break;
-+ case 1308: break;
- default:
- {
- if ( yymoreStreams() ) {
-Index: jflex/src/JFlex/LexScan.flex
-===================================================================
---- jflex/src/JFlex/LexScan.flex (revision 433)
-+++ jflex/src/JFlex/LexScan.flex Tue Dec 01 08:06:38 EST 2009
-@@ -463,6 +463,36 @@
- {WSPNL}*"[:digit:]" { return symbol(DIGITCLASS); }
- {WSPNL}*"[:uppercase:]" { return symbol(UPPERCLASS); }
- {WSPNL}*"[:lowercase:]" { return symbol(LOWERCLASS); }
-+ {WSPNL}*"[:unicode_unassigned:]" { return symbol(UNICODE_UNASSIGNED); }
-+ {WSPNL}*"[:unicode_uppercase_letter:]" { return symbol(UNICODE_UPPERCASE_LETTER); }
-+ {WSPNL}*"[:unicode_lowercase_letter:]" { return symbol(UNICODE_LOWERCASE_LETTER); }
-+ {WSPNL}*"[:unicode_titlecase_letter:]" { return symbol(UNICODE_TITLECASE_LETTER); }
-+ {WSPNL}*"[:unicode_modifier_letter:]" { return symbol(UNICODE_MODIFIER_LETTER); }
-+ {WSPNL}*"[:unicode_other_letter:]" { return symbol(UNICODE_OTHER_LETTER); }
-+ {WSPNL}*"[:unicode_non_spacing_mark:]" { return symbol(UNICODE_NON_SPACING_MARK); }
-+ {WSPNL}*"[:unicode_enclosing_mark:]" { return symbol(UNICODE_ENCLOSING_MARK); }
-+ {WSPNL}*"[:unicode_combining_spacing_mark:]" { return symbol(UNICODE_COMBINING_SPACING_MARK); }
-+ {WSPNL}*"[:unicode_decimal_digit_number:]" { return symbol(UNICODE_DECIMAL_DIGIT_NUMBER); }
-+ {WSPNL}*"[:unicode_letter_number:]" { return symbol(UNICODE_LETTER_NUMBER); }
-+ {WSPNL}*"[:unicode_other_number:]" { return symbol(UNICODE_OTHER_NUMBER); }
-+ {WSPNL}*"[:unicode_space_separator:]" { return symbol(UNICODE_SPACE_SEPARATOR); }
-+ {WSPNL}*"[:unicode_line_separator:]" { return symbol(UNICODE_LINE_SEPARATOR); }
-+ {WSPNL}*"[:unicode_paragraph_separator:]" { return symbol(UNICODE_PARAGRAPH_SEPARATOR); }
-+ {WSPNL}*"[:unicode_control:]" { return symbol(UNICODE_CONTROL); }
-+ {WSPNL}*"[:unicode_format:]" { return symbol(UNICODE_FORMAT); }
-+ {WSPNL}*"[:unicode_private_use:]" { return symbol(UNICODE_PRIVATE_USE); }
-+ {WSPNL}*"[:unicode_surrogate:]" { return symbol(UNICODE_SURROGATE); }
-+ {WSPNL}*"[:unicode_dash_punctuation:]" { return symbol(UNICODE_DASH_PUNCTUATION); }
-+ {WSPNL}*"[:unicode_start_punctuation:]" { return symbol(UNICODE_START_PUNCTUATION); }
-+ {WSPNL}*"[:unicode_end_punctuation:]" { return symbol(UNICODE_END_PUNCTUATION); }
-+ {WSPNL}*"[:unicode_connector_punctuation:]" { return symbol(UNICODE_CONNECTOR_PUNCTUATION); }
-+ {WSPNL}*"[:unicode_other_punctuation:]" { return symbol(UNICODE_OTHER_PUNCTUATION); }
-+ {WSPNL}*"[:unicode_math_symbol:]" { return symbol(UNICODE_MATH_SYMBOL); }
-+ {WSPNL}*"[:unicode_currency_symbol:]" { return symbol(UNICODE_CURRENCY_SYMBOL); }
-+ {WSPNL}*"[:unicode_modifier_symbol:]" { return symbol(UNICODE_MODIFIER_SYMBOL); }
-+ {WSPNL}*"[:unicode_other_symbol:]" { return symbol(UNICODE_OTHER_SYMBOL); }
-+ {WSPNL}*"[:unicode_initial_quote_punctuation:]" { return symbol(UNICODE_INITIAL_QUOTE_PUNCTUATION); }
-+ {WSPNL}*"[:unicode_final_quote_punctuation:]" { return symbol(UNICODE_FINAL_QUOTE_PUNCTUATION); }
- }
-
- . { return symbol(CHAR, new Character(yytext().charAt(0))); }
-Index: jflex/src/JFlex/LexParse.cup
-===================================================================
---- jflex/src/JFlex/LexParse.cup (revision 433)
-+++ jflex/src/JFlex/LexParse.cup Tue Dec 01 08:13:35 EST 2009
-@@ -77,6 +77,96 @@
- case sym.LOWERCLASS:
- return Character.isLowerCase(c);
-
-+ case sym.UNICODE_UNASSIGNED:
-+ return Character.getType(c) == Character.UNASSIGNED;
-+
-+ case sym.UNICODE_UPPERCASE_LETTER:
-+ return Character.getType(c) == Character.UPPERCASE_LETTER;
-+
-+ case sym.UNICODE_LOWERCASE_LETTER:
-+ return Character.getType(c) == Character.LOWERCASE_LETTER;
-+
-+ case sym.UNICODE_TITLECASE_LETTER:
-+ return Character.getType(c) == Character.TITLECASE_LETTER;
-+
-+ case sym.UNICODE_MODIFIER_LETTER:
-+ return Character.getType(c) == Character.MODIFIER_LETTER;
-+
-+ case sym.UNICODE_OTHER_LETTER:
-+ return Character.getType(c) == Character.OTHER_LETTER;
-+
-+ case sym.UNICODE_NON_SPACING_MARK:
-+ return Character.getType(c) == Character.NON_SPACING_MARK;
-+
-+ case sym.UNICODE_ENCLOSING_MARK:
-+ return Character.getType(c) == Character.ENCLOSING_MARK;
-+
-+ case sym.UNICODE_COMBINING_SPACING_MARK:
-+ return Character.getType(c) == Character.COMBINING_SPACING_MARK;
-+
-+ case sym.UNICODE_DECIMAL_DIGIT_NUMBER:
-+ return Character.getType(c) == Character.DECIMAL_DIGIT_NUMBER;
-+
-+ case sym.UNICODE_LETTER_NUMBER:
-+ return Character.getType(c) == Character.LETTER_NUMBER;
-+
-+ case sym.UNICODE_OTHER_NUMBER:
-+ return Character.getType(c) == Character.OTHER_NUMBER;
-+
-+ case sym.UNICODE_SPACE_SEPARATOR:
-+ return Character.getType(c) == Character.SPACE_SEPARATOR;
-+
-+ case sym.UNICODE_LINE_SEPARATOR:
-+ return Character.getType(c) == Character.LINE_SEPARATOR;
-+
-+ case sym.UNICODE_PARAGRAPH_SEPARATOR:
-+ return Character.getType(c) == Character.PARAGRAPH_SEPARATOR;
-+
-+ case sym.UNICODE_CONTROL:
-+ return Character.getType(c) == Character.CONTROL;
-+
-+ case sym.UNICODE_FORMAT:
-+ return Character.getType(c) == Character.FORMAT;
-+
-+ case sym.UNICODE_PRIVATE_USE:
-+ return Character.getType(c) == Character.PRIVATE_USE;
-+
-+ case sym.UNICODE_SURROGATE:
-+ return Character.getType(c) == Character.SURROGATE;
-+
-+ case sym.UNICODE_DASH_PUNCTUATION:
-+ return Character.getType(c) == Character.DASH_PUNCTUATION;
-+
-+ case sym.UNICODE_START_PUNCTUATION:
-+ return Character.getType(c) == Character.START_PUNCTUATION;
-+
-+ case sym.UNICODE_END_PUNCTUATION:
-+ return Character.getType(c) == Character.END_PUNCTUATION;
-+
-+ case sym.UNICODE_CONNECTOR_PUNCTUATION:
-+ return Character.getType(c) == Character.CONNECTOR_PUNCTUATION;
-+
-+ case sym.UNICODE_OTHER_PUNCTUATION:
-+ return Character.getType(c) == Character.OTHER_PUNCTUATION;
-+
-+ case sym.UNICODE_MATH_SYMBOL:
-+ return Character.getType(c) == Character.MATH_SYMBOL;
-+
-+ case sym.UNICODE_CURRENCY_SYMBOL:
-+ return Character.getType(c) == Character.CURRENCY_SYMBOL;
-+
-+ case sym.UNICODE_MODIFIER_SYMBOL:
-+ return Character.getType(c) == Character.MODIFIER_SYMBOL;
-+
-+ case sym.UNICODE_OTHER_SYMBOL:
-+ return Character.getType(c) == Character.OTHER_SYMBOL;
-+
-+ case sym.UNICODE_INITIAL_QUOTE_PUNCTUATION:
-+ return Character.getType(c) == Character.INITIAL_QUOTE_PUNCTUATION;
-+
-+ case sym.UNICODE_FINAL_QUOTE_PUNCTUATION:
-+ return Character.getType(c) == Character.FINAL_QUOTE_PUNCTUATION;
-+
- default: return false;
- }
- }
-@@ -222,8 +312,17 @@
- MORETHAN, LBRACE, RBRACE, ASCII, FULL, UNICODE, REGEXPEND;
-
- terminal JLETTERCLASS, JLETTERDIGITCLASS, LETTERCLASS, DIGITCLASS,
-- UPPERCLASS, LOWERCLASS, EOFRULE, NOACTION, LOOKAHEAD;
-+ UPPERCLASS, LOWERCLASS, EOFRULE, NOACTION, LOOKAHEAD,
--
-+
-+ UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, UNICODE_TITLECASE_LETTER,
-+ UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, UNICODE_ENCLOSING_MARK,
-+ UNICODE_COMBINING_SPACING_MARK, UNICODE_DECIMAL_DIGIT_NUMBER, UNICODE_LETTER_NUMBER, UNICODE_OTHER_NUMBER,
-+ UNICODE_SPACE_SEPARATOR, UNICODE_LINE_SEPARATOR, UNICODE_PARAGRAPH_SEPARATOR, UNICODE_CONTROL, UNICODE_FORMAT,
-+ UNICODE_PRIVATE_USE, UNICODE_SURROGATE, UNICODE_DASH_PUNCTUATION, UNICODE_START_PUNCTUATION,
-+ UNICODE_END_PUNCTUATION, UNICODE_CONNECTOR_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, UNICODE_MATH_SYMBOL,
-+ UNICODE_CURRENCY_SYMBOL, UNICODE_MODIFIER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_INITIAL_QUOTE_PUNCTUATION,
-+ UNICODE_FINAL_QUOTE_PUNCTUATION;
-+
- terminal Action ACTION;
- terminal String IDENT, USERCODE;
- terminal Integer REPEAT;
-@@ -645,4 +744,64 @@
- {: RESULT = makePreClass(sym.UPPERCLASS); :}
- | LOWERCLASS
- {: RESULT = makePreClass(sym.LOWERCLASS); :}
-+ | UNICODE_UNASSIGNED
-+ {: RESULT = makePreClass(sym.UNICODE_UNASSIGNED); :}
-+ | UNICODE_UPPERCASE_LETTER
-+ {: RESULT = makePreClass(sym.UNICODE_UPPERCASE_LETTER); :}
-+ | UNICODE_LOWERCASE_LETTER
-+ {: RESULT = makePreClass(sym.UNICODE_LOWERCASE_LETTER); :}
-+ | UNICODE_TITLECASE_LETTER
-+ {: RESULT = makePreClass(sym.UNICODE_TITLECASE_LETTER); :}
-+ | UNICODE_MODIFIER_LETTER
-+ {: RESULT = makePreClass(sym.UNICODE_MODIFIER_LETTER); :}
-+ | UNICODE_OTHER_LETTER
-+ {: RESULT = makePreClass(sym.UNICODE_OTHER_LETTER); :}
-+ | UNICODE_NON_SPACING_MARK
-+ {: RESULT = makePreClass(sym.UNICODE_NON_SPACING_MARK); :}
-+ | UNICODE_ENCLOSING_MARK
-+ {: RESULT = makePreClass(sym.UNICODE_ENCLOSING_MARK); :}
-+ | UNICODE_COMBINING_SPACING_MARK
-+ {: RESULT = makePreClass(sym.UNICODE_COMBINING_SPACING_MARK); :}
-+ | UNICODE_DECIMAL_DIGIT_NUMBER
-+ {: RESULT = makePreClass(sym.UNICODE_DECIMAL_DIGIT_NUMBER); :}
-+ | UNICODE_LETTER_NUMBER
-+ {: RESULT = makePreClass(sym.UNICODE_LETTER_NUMBER); :}
-+ | UNICODE_OTHER_NUMBER
-+ {: RESULT = makePreClass(sym.UNICODE_OTHER_NUMBER); :}
-+ | UNICODE_SPACE_SEPARATOR
-+ {: RESULT = makePreClass(sym.UNICODE_SPACE_SEPARATOR); :}
-+ | UNICODE_LINE_SEPARATOR
-+ {: RESULT = makePreClass(sym.UNICODE_LINE_SEPARATOR); :}
-+ | UNICODE_PARAGRAPH_SEPARATOR
-+ {: RESULT = makePreClass(sym.UNICODE_PARAGRAPH_SEPARATOR); :}
-+ | UNICODE_CONTROL
-+ {: RESULT = makePreClass(sym.UNICODE_CONTROL); :}
-+ | UNICODE_FORMAT
-+ {: RESULT = makePreClass(sym.UNICODE_FORMAT); :}
-+ | UNICODE_PRIVATE_USE
-+ {: RESULT = makePreClass(sym.UNICODE_PRIVATE_USE); :}
-+ | UNICODE_SURROGATE
-+ {: RESULT = makePreClass(sym.UNICODE_SURROGATE); :}
-+ | UNICODE_DASH_PUNCTUATION
-+ {: RESULT = makePreClass(sym.UNICODE_DASH_PUNCTUATION); :}
-+ | UNICODE_START_PUNCTUATION
-+ {: RESULT = makePreClass(sym.UNICODE_START_PUNCTUATION); :}
-+ | UNICODE_END_PUNCTUATION
-+ {: RESULT = makePreClass(sym.UNICODE_END_PUNCTUATION); :}
-+ | UNICODE_CONNECTOR_PUNCTUATION
-+ {: RESULT = makePreClass(sym.UNICODE_CONNECTOR_PUNCTUATION); :}
-+ | UNICODE_OTHER_PUNCTUATION
-+ {: RESULT = makePreClass(sym.UNICODE_OTHER_PUNCTUATION); :}
-+ | UNICODE_MATH_SYMBOL
-+ {: RESULT = makePreClass(sym.UNICODE_MATH_SYMBOL); :}
-+ | UNICODE_CURRENCY_SYMBOL
-+ {: RESULT = makePreClass(sym.UNICODE_CURRENCY_SYMBOL); :}
-+ | UNICODE_MODIFIER_SYMBOL
-+ {: RESULT = makePreClass(sym.UNICODE_MODIFIER_SYMBOL); :}
-+ | UNICODE_OTHER_SYMBOL
-+ {: RESULT = makePreClass(sym.UNICODE_OTHER_SYMBOL); :}
-+ | UNICODE_INITIAL_QUOTE_PUNCTUATION
-+ {: RESULT = makePreClass(sym.UNICODE_INITIAL_QUOTE_PUNCTUATION); :}
-+ | UNICODE_FINAL_QUOTE_PUNCTUATION
-+ {: RESULT = makePreClass(sym.UNICODE_FINAL_QUOTE_PUNCTUATION); :}
- ;
-Index: jflex/src/JFlex/sym.java
-===================================================================
---- jflex/src/JFlex/sym.java (revision 370)
-+++ jflex/src/JFlex/sym.java Tue Dec 01 08:13:39 EST 2009
-@@ -1,7 +1,7 @@
-
- //----------------------------------------------------
--// The following code was generated by CUP v0.10k
--// Tue May 27 20:22:19 EST 2008
-+// The following code was generated by CUP v0.11a beta 20060608
-+// Tue Dec 01 08:13:38 EST 2009
- //----------------------------------------------------
-
- package JFlex;
-@@ -10,52 +10,82 @@
- public interface sym {
- /* terminals */
- public static final int DELIMITER = 9;
-- public static final int EOFRULE = 26;
-- public static final int STRING_I = 46;
-- public static final int CHAR = 40;
-- public static final int CONCAT = 45;
-- public static final int MACROUSE = 42;
-- public static final int LOWERCLASS = 25;
-- public static final int EQUALS = 10;
-- public static final int CCLASSNOT = 44;
-- public static final int REPEAT = 32;
-- public static final int TILDE = 39;
-- public static final int CHAR_I = 47;
-- public static final int STAR = 33;
-- public static final int BAR = 35;
-+ public static final int UNICODE_SPACE_SEPARATOR = 41;
-+ public static final int UNICODE_OTHER_LETTER = 34;
-+ public static final int USERCODE = 61;
-+ public static final int UNICODE_ENCLOSING_MARK = 36;
-+ public static final int REGEXPEND = 19;
-+ public static final int CCLASSNOT = 74;
-+ public static final int UNICODE = 18;
-+ public static final int UNICODE_CURRENCY_SYMBOL = 54;
-+ public static final int UNICODE_LETTER_NUMBER = 39;
-+ public static final int UNICODE_START_PUNCTUATION = 49;
-+ public static final int UNICODE_OTHER_SYMBOL = 56;
-+ public static final int UNICODE_COMBINING_SPACING_MARK = 37;
-+ public static final int UNICODE_FINAL_QUOTE_PUNCTUATION = 58;
-+ public static final int UNICODE_UNASSIGNED = 29;
-+ public static final int COMMA = 11;
-+ public static final int RBRACE = 15;
-+ public static final int UNICODE_UPPERCASE_LETTER = 30;
-+ public static final int UNICODE_INITIAL_QUOTE_PUNCTUATION = 57;
-+ public static final int LBRACE = 14;
-+ public static final int UNICODE_SURROGATE = 47;
-+ public static final int ACTION = 59;
-+ public static final int CHAR_I = 77;
-+ public static final int UNICODE_DECIMAL_DIGIT_NUMBER = 38;
-+ public static final int CLOSECLASS = 7;
-+ public static final int TILDE = 69;
-+ public static final int UNICODE_NON_SPACING_MARK = 35;
-+ public static final int DOLLAR = 5;
-+ public static final int UNICODE_END_PUNCTUATION = 50;
- public static final int FULL = 17;
-- public static final int LOOKAHEAD = 28;
- public static final int LESSTHAN = 12;
-- public static final int BANG = 38;
-- public static final int COMMA = 11;
-+ public static final int UNICODE_DASH_PUNCTUATION = 48;
-+ public static final int CLOSEBRACKET = 3;
-+ public static final int PLUS = 64;
-+ public static final int QUESTION = 66;
-+ public static final int CHAR = 70;
-+ public static final int NOACTION = 27;
-+ public static final int STAR = 63;
-+ public static final int UNICODE_CONNECTOR_PUNCTUATION = 51;
-+ public static final int CONCAT = 75;
-+ public static final int ASCII = 16;
-+ public static final int MORETHAN = 13;
-+ public static final int OPENCLASS = 6;
-+ public static final int POINT = 67;
- public static final int JLETTERDIGITCLASS = 21;
-- public static final int PLUS = 34;
-- public static final int USERCODE = 31;
-+ public static final int EOFRULE = 26;
- public static final int EOF = 0;
-- public static final int error = 1;
-- public static final int DASH = 8;
-- public static final int CLOSEBRACKET = 3;
-- public static final int HAT = 4;
-+ public static final int UNICODE_MODIFIER_LETTER = 33;
-+ public static final int BANG = 68;
-+ public static final int UPPERCLASS = 24;
- public static final int JLETTERCLASS = 20;
-- public static final int IDENT = 30;
-- public static final int ACTION = 29;
-- public static final int CLOSECLASS = 7;
-- public static final int DIGITCLASS = 23;
-- public static final int LBRACE = 14;
-- public static final int REGEXPEND = 19;
-- public static final int OPENCLASS = 6;
-+ public static final int REPEAT = 62;
-+ public static final int LOOKAHEAD = 28;
-+ public static final int UNICODE_OTHER_NUMBER = 40;
-+ public static final int UNICODE_PRIVATE_USE = 46;
-+ public static final int UNICODE_MATH_SYMBOL = 53;
- public static final int OPENBRACKET = 2;
-- public static final int POINT = 37;
-+ public static final int HAT = 4;
-+ public static final int IDENT = 60;
-+ public static final int error = 1;
-+ public static final int UNICODE_PARAGRAPH_SEPARATOR = 43;
-+ public static final int LOWERCLASS = 25;
-+ public static final int STRING_I = 76;
-+ public static final int UNICODE_MODIFIER_SYMBOL = 55;
-+ public static final int UNICODE_CONTROL = 44;
-+ public static final int UNICODE_OTHER_PUNCTUATION = 52;
-+ public static final int DIGITCLASS = 23;
-+ public static final int UNICODE_FORMAT = 45;
-+ public static final int UNICODE_TITLECASE_LETTER = 32;
-+ public static final int DASH = 8;
-+ public static final int MACROUSE = 72;
-+ public static final int STRING = 71;
-+ public static final int CCLASS = 73;
-+ public static final int UNICODE_LOWERCASE_LETTER = 31;
- public static final int LETTERCLASS = 22;
-- public static final int MORETHAN = 13;
-- public static final int DOLLAR = 5;
-- public static final int RBRACE = 15;
-- public static final int STRING = 41;
-- public static final int QUESTION = 36;
-- public static final int UPPERCLASS = 24;
-- public static final int NOACTION = 27;
-- public static final int CCLASS = 43;
-- public static final int ASCII = 16;
-- public static final int UNICODE = 18;
-+ public static final int BAR = 65;
-+ public static final int UNICODE_LINE_SEPARATOR = 42;
-+ public static final int EQUALS = 10;
- }
-
-Index: tex/manual.tex
-===================================================================
---- tex/manual.tex (revision 431)
-+++ tex/manual.tex Tue Dec 01 08:11:42 EST 2009
-@@ -1318,7 +1318,37 @@
- | '[:letter:]'
- | '[:digit:]'
- | '[:uppercase:]'
-- | '[:lowercase:]'
-+ | '[:lowercase:]'
-+ | '[:unicode_unassigned:]'
-+ | '[:unicode_uppercase_letter:]'
-+ | '[:unicode_lowercase_letter:]'
-+ | '[:unicode_titlecase_letter:]'
-+ | '[:unicode_modifier_letter:]'
-+ | '[:unicode_other_letter:]'
-+ | '[:unicode_non_spacing_mark:]'
-+ | '[:unicode_enclosing_mark:]'
-+ | '[:unicode_combining_spacing_mark:]'
-+ | '[:unicode_decimal_digit_number:]'
-+ | '[:unicode_letter_number:]'
-+ | '[:unicode_other_number:]'
-+ | '[:unicode_space_separator:]'
-+ | '[:unicode_line_separator:]'
-+ | '[:unicode_paragraph_separator:]'
-+ | '[:unicode_control:]'
-+ | '[:unicode_format:]'
-+ | '[:unicode_private_use:]'
-+ | '[:unicode_surrogate:]'
-+ | '[:unicode_dash_punctuation:]'
-+ | '[:unicode_start_punctuation:]'
-+ | '[:unicode_end_punctuation:]'
-+ | '[:unicode_connector_punctuation:]'
-+ | '[:unicode_other_punctuation:]'
-+ | '[:unicode_math_symbol:]'
-+ | '[:unicode_currency_symbol:]'
-+ | '[:unicode_modifier_symbol:]'
-+ | '[:unicode_other_symbol:]'
-+ | '[:unicode_initial_quote_punctuation:]'
-+ | '[:unicode_final_quote_punctuation:]'
- | '.'
- \end{verbatim}
- %$
-@@ -1467,6 +1497,7 @@
- [:digit:] isDigit()
- [:uppercase:] isUpperCase()
- [:lowercase:] isLowerCase()
-+[:unicode_math_symbol:] getType() == Character.MATH_SYMBOL
- \end{verbatim}
-
- They are especially useful when working with the unicode character set.
diff --git a/tools/lexer/jflex-1.4/lib/JFlex.jar b/tools/lexer/jflex-1.4/lib/JFlex.jar
deleted file mode 100644
index e83294a7b6f0..000000000000
Binary files a/tools/lexer/jflex-1.4/lib/JFlex.jar and /dev/null differ
diff --git a/tools/lexer/jflex-1.4/lib/jflex-mode.el b/tools/lexer/jflex-1.4/lib/jflex-mode.el
deleted file mode 100644
index 2af59477d38b..000000000000
--- a/tools/lexer/jflex-1.4/lib/jflex-mode.el
+++ /dev/null
@@ -1,114 +0,0 @@
-; -*- Mode: Emacs-Lisp; -*-
-
-;;; jflex-mode
-
-;;; author: Gerwin Klein a/b with fixed length a, fixed length b, etc)
- */
- private int kind = NORMAL;
-
- /** The length of the lookahead (if fixed) */
- private int len;
-
- /** The entry state of the corresponding forward DFA (if general lookahead) */
- private int entryState;
-
- /**
- * Creates a new Action object with specified content and line number.
- *
- * @param content java code
- * @param priority line number
- */
- public Action(String content, int priority) {
- this.content = content.trim();
- this.priority = priority;
- }
-
- /**
- * Creates a new Action object of the specified kind. Only
- * accepts FORWARD_ACTION or BACKWARD_ACTION.
- *
- * @param kind the kind of action
- *
- * @see #FORWARD_ACTION
- * @see #BACKWARD_ACTION
- */
- public Action(int kind) {
- if (kind != FORWARD_ACTION && kind != BACKWARD_ACTION)
- throw new GeneratorException();
- this.content = "";
- this.priority = Integer.MAX_VALUE;
- this.kind = kind;
- }
-
- /**
- * Compares the priority value of this Action with the specified action.
- *
- * @param other the other Action to compare this Action with.
- *
- * @return this Action if it has higher priority - the specified one, if not.
- */
- public Action getHigherPriority(Action other) {
- if (other == null) return this;
-
- // the smaller the number the higher the priority
- if (other.priority > this.priority)
- return this;
- else
- return other;
- }
-
-
- /**
- * Returns the String representation of this object.
- *
- * @return string representation of the action
- */
- public String toString() {
- return "Action (priority "+priority+", lookahead "+kind+") :" +
- Out.NL+content; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
-
- /**
- * Returns true iff the parameter is an
- * Action with the same content as this one.
- *
- * @param a the object to compare this Action with
- * @return true if the action strings are equal
- */
- public boolean isEquiv(Action a) {
- return this == a ||
- (this.content.equals(a.content) &&
- this.kind == a.kind &&
- this.len == a.len &&
- this.entryState == a.entryState);
- }
-
-
- /**
- * Calculate hash value.
- *
- * @return a hash value for this Action
- */
- public int hashCode() {
- return content.hashCode();
- }
-
-
- /**
- * Test for equality to another object.
- *
- * This action equals another object if the other
- * object is an equivalent action.
- *
- * @param o the other object.
- *
- * @see Action#isEquiv(Action)
- */
- public boolean equals(Object o) {
- if (o instanceof Action)
- return isEquiv((Action) o);
- else
- return false;
- }
-
- /**
- * Return true iff this is action belongs to a general lookahead rule.
- *
- * @return true if this actions belongs to a general lookahead rule.
- */
- public boolean isGenLookAction() {
- return kind == GENERAL_LOOK;
- }
-
- /**
- * Return true if code for this is action should be emitted, false
- * if it is a BACK/FORWARD lookahead action.
- *
- * @return true if code should be emitted for this action.
- */
- public boolean isEmittable() {
- return kind != BACKWARD_ACTION && kind != FORWARD_ACTION;
- }
-
- /**
- * Return kind of lookahead.
- */
- public int lookAhead() {
- return kind;
- }
-
- /**
- * Sets the lookahead kind and data for this action
- *
- * @param kind which kind of lookahead it is
- * @param data the length for fixed length look aheads.
- *
- */
- public void setLookAction(int kind, int data) {
- this.kind = kind;
- this.len = data;
- }
-
- /**
- * The length of the lookahead or base if this is a fixed length
- * lookahead action.
- */
- public int getLookLength() {
- return len;
- }
-
- /**
- * Return the corresponding entry state for the forward DFA (if this
- * is a general lookahead expression)
- *
- * @return the forward DFA entry state (+1 is the backward DFA)
- */
- public int getEntryState() {
- return entryState;
- }
-
- /**
- * Set the corresponding entry state for the forward DFA of this action
- * (if this is a general lookahead expression)
- *
- * @param the entry state for the forward DFA of this action
- */
- public void setEntryState(int entryState) {
- this.entryState = entryState;
- }
-
- public Action copyChoice(int length) {
- Action a = new Action(this.content, this.priority);
- a.setLookAction(FINITE_CHOICE, length);
- return a;
- }
-
- /**
- * String representation of the lookahead kind of this action.
- *
- * @return the string representation
- */
- public String lookString() {
- switch (kind) {
- case NORMAL: return "";
- case BACKWARD_ACTION: return "LOOK_BACK";
- case FIXED_BASE: return "FIXED_BASE";
- case FIXED_LOOK: return "FIXED_LOOK";
- case FINITE_CHOICE: return "FINITE_CHOICE";
- case FORWARD_ACTION: return "LOOK_FORWARD";
- case GENERAL_LOOK: return "LOOK_ACTION";
- default: return "unknown lookahead type";
- }
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/CharClassException.java b/tools/lexer/jflex-1.4/src/JFlex/CharClassException.java
deleted file mode 100644
index 2c2a19b67ea0..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/CharClassException.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein start and smaller than or euqal to the Unicode
- * value of end.
- *
- * All characters of the interval must belong to the same character class.
- *
- * @author Gerwin Klein
- * @version $Revision: 1.4.3 $, $Date: 2009/12/21 15:58:48 $
- */
-public class CharClassInterval {
-
- /**
- * The first character of the interval
- */
- int start;
-
- /**
- * The last character of the interval
- */
- int end;
-
- /**
- * The code of the class all characters of this interval belong to.
- */
- int charClass;
-
-
- /**
- * Creates a new CharClassInterval from start to end
- * that belongs to character class charClass.
- *
- * @param start The first character of the interval
- * @param end The last character of the interval
- * @param charClass The code of the class all characters of this interval belong to.
- */
- public CharClassInterval(int start, int end, int charClass) {
- this.start = start;
- this.end = end;
- this.charClass = charClass;
- }
-
- /**
- * returns string representation of this class interval
- */
- public String toString() {
- return "["+start+"-"+end+"="+charClass+"]";
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/CharClasses.java b/tools/lexer/jflex-1.4/src/JFlex/CharClasses.java
deleted file mode 100644
index fcda11bfe804..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/CharClasses.java
+++ /dev/null
@@ -1,388 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein set are not in the same
- * equivalence class with characters that are not elements of set.
- *
- * @param set the set of characters to distinguish from the rest
- * @param caseless if true upper/lower/title case are considered equivalent
- */
- public void makeClass(IntCharSet set, boolean caseless) {
- if (caseless) set = set.getCaseless();
-
- if ( DEBUG ) {
- Out.dump("makeClass("+set+")");
- dump();
- }
-
- int oldSize = classes.size();
- for (int i = 0; i < oldSize; i++) {
- IntCharSet x = (IntCharSet) classes.elementAt(i);
-
- if (x.equals(set)) return;
-
- IntCharSet and = x.and(set);
-
- if ( and.containsElements() ) {
- if ( x.equals(and) ) {
- set.sub(and);
- continue;
- }
- else if ( set.equals(and) ) {
- x.sub(and);
- classes.addElement(and);
- if (DEBUG) {
- Out.dump("makeClass(..) finished");
- dump();
- }
- return;
- }
-
- set.sub(and);
- x.sub(and);
- classes.addElement(and);
- }
- }
-
- if (DEBUG) {
- Out.dump("makeClass(..) finished");
- dump();
- }
- }
-
-
- /**
- * Returns the code of the character class the specified character belongs to.
- */
- public int getClassCode(char letter) {
- int i = -1;
- while (true) {
- IntCharSet x = (IntCharSet) classes.elementAt(++i);
- if ( x.contains(letter) ) return i;
- }
- }
-
- /**
- * Dump charclasses to the dump output stream
- */
- public void dump() {
- Out.dump(toString());
- }
-
-
- /**
- * Return a string representation of one char class
- *
- * @param theClass the index of the class to
- */
- public String toString(int theClass) {
- return classes.elementAt(theClass).toString();
- }
-
-
- /**
- * Return a string representation of the char classes
- * stored in this class.
- *
- * Enumerates the classes by index.
- */
- public String toString() {
- StringBuffer result = new StringBuffer("CharClasses:");
-
- result.append(Out.NL);
-
- for (int i = 0; i < classes.size(); i++)
- result.append("class "+i+":"+Out.NL+classes.elementAt(i)+Out.NL);
-
- return result.toString();
- }
-
-
- /**
- * Creates a new character class for the single character singleChar.
- *
- * @param caseless if true upper/lower/title case are considered equivalent
- */
- public void makeClass(char singleChar, boolean caseless) {
- makeClass(new IntCharSet(singleChar), caseless);
- }
-
-
- /**
- * Creates a new character class for each character of the specified String.
- *
- * @param caseless if true upper/lower/title case are considered equivalent
- */
- public void makeClass(String str, boolean caseless) {
- for (int i = 0; i < str.length(); i++) makeClass(str.charAt(i), caseless);
- }
-
-
- /**
- * Updates the current partition, so that the specified set of characters
- * gets a new character class.
- *
- * Characters that are elements of the set v are not in the same
- * equivalence class with characters that are not elements of the set v.
- *
- * @param v a Vector of Interval objects.
- * This Vector represents a set of characters. The set of characters is
- * the union of all intervals in the Vector.
- *
- * @param caseless if true upper/lower/title case are considered equivalent
- */
- public void makeClass(Vector /* Interval */ v, boolean caseless) {
- makeClass(new IntCharSet(v), caseless);
- }
-
-
- /**
- * Updates the current partition, so that the set of all characters not contained in the specified
- * set of characters gets a new character class.
- *
- * Characters that are elements of the set v are not in the same
- * equivalence class with characters that are not elements of the set v.
- *
- * This method is equivalent to makeClass(v)
- *
- * @param v a Vector of Interval objects.
- * This Vector represents a set of characters. The set of characters is
- * the union of all intervals in the Vector.
- *
- * @param caseless if true upper/lower/title case are considered equivalent
- */
- public void makeClassNot(Vector v, boolean caseless) {
- makeClass(new IntCharSet(v), caseless);
- }
-
-
- /**
- * Returns an array that contains the character class codes of all characters
- * in the specified set of input characters.
- */
- private int [] getClassCodes(IntCharSet set, boolean negate) {
-
- if (DEBUG) {
- Out.dump("getting class codes for "+set);
- if (negate)
- Out.dump("[negated]");
- }
-
- int size = classes.size();
-
- // [fixme: optimize]
- int temp [] = new int [size];
- int length = 0;
-
- for (int i = 0; i < size; i++) {
- IntCharSet x = (IntCharSet) classes.elementAt(i);
- if ( negate ) {
- if ( !set.and(x).containsElements() ) {
- temp[length++] = i;
- if (DEBUG) Out.dump("code "+i);
- }
- }
- else {
- if ( set.and(x).containsElements() ) {
- temp[length++] = i;
- if (DEBUG) Out.dump("code "+i);
- }
- }
- }
-
- int result [] = new int [length];
- System.arraycopy(temp, 0, result, 0, length);
-
- return result;
- }
-
-
- /**
- * Returns an array that contains the character class codes of all characters
- * in the specified set of input characters.
- *
- * @param intervallVec a Vector of Intervals, the set of characters to get
- * the class codes for
- *
- * @return an array with the class codes for intervallVec
- */
- public int [] getClassCodes(Vector /* Interval */ intervallVec) {
- return getClassCodes(new IntCharSet(intervallVec), false);
- }
-
-
- /**
- * Returns an array that contains the character class codes of all characters
- * that are not in the specified set of input characters.
- *
- * @param intervallVec a Vector of Intervals, the complement of the
- * set of characters to get the class codes for
- *
- * @return an array with the class codes for the complement of intervallVec
- */
- public int [] getNotClassCodes(Vector /* Interval */ intervallVec) {
- return getClassCodes(new IntCharSet(intervallVec), true);
- }
-
-
- /**
- * Check consistency of the stored classes [debug].
- *
- * all classes must be disjoint, checks if all characters
- * have a class assigned.
- */
- public void check() {
- for (int i = 0; i < classes.size(); i++)
- for (int j = i+1; j < classes.size(); j++) {
- IntCharSet x = (IntCharSet) classes.elementAt(i);
- IntCharSet y = (IntCharSet) classes.elementAt(j);
- if ( x.and(y).containsElements() ) {
- System.out.println("Error: non disjoint char classes "+i+" and "+j);
- System.out.println("class "+i+": "+x);
- System.out.println("class "+j+": "+y);
- }
- }
-
- // check if each character has a classcode
- // (= if getClassCode terminates)
- for (char c = 0; c < maxChar; c++) {
- getClassCode(c);
- if (c % 100 == 0) System.out.print(".");
- }
-
- getClassCode(maxChar);
- }
-
-
- /**
- * Returns an array of all CharClassIntervalls in this
- * char class collection.
- *
- * The array is ordered by char code, i.e.
- * result[i+1].start = result[i].end+1
- *
- * Each CharClassInterval contains the number of the
- * char class it belongs to.
- */
- public CharClassInterval [] getIntervals() {
- int i, c;
- int size = classes.size();
- int numIntervalls = 0;
-
- for (i = 0; i < size; i++)
- numIntervalls+= ((IntCharSet) classes.elementAt(i)).numIntervalls();
-
- CharClassInterval [] result = new CharClassInterval[numIntervalls];
-
- i = 0;
- c = 0;
- while (i < numIntervalls) {
- int code = getClassCode((char) c);
- IntCharSet set = (IntCharSet) classes.elementAt(code);
- Interval iv = set.getNext();
-
- result[i++] = new CharClassInterval(iv.start, iv.end, code);
- c = iv.end+1;
- }
-
- return result;
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/CharSet.java b/tools/lexer/jflex-1.4/src/JFlex/CharSet.java
deleted file mode 100644
index f79102fe016e..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/CharSet.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein i = 1 allows values in [-1, 0xFFFE].
- */
- public void setValTranslation(int i) {
- this.translate = i;
- }
-
- /**
- * Emit one count/value pair.
- *
- * Automatically translates value by the translate value.
- *
- * @param count
- * @param value
- *
- * @see CountEmitter#setValTranslation(int)
- */
- public void emit(int count, int value) {
- numEntries+= count;
- breaks();
- emitUC(count);
- emitUC(value+translate);
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/DFA.java b/tools/lexer/jflex-1.4/src/JFlex/DFA.java
deleted file mode 100644
index 5ebd55947bf5..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/DFA.java
+++ /dev/null
@@ -1,929 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein current_state
- * with input character, NO_TARGET if there is no transition for
- * this input in current_state
- */
- int [][] table;
-
-
- /**
- * isFinal[state] == true <=> the state state is
- * a final state.
- */
- boolean [] isFinal;
-
-
- /**
- * action[state] is the action that is to be carried out in
- * state state, null if there is no action.
- */
- Action [] action;
-
- /**
- * entryState[i] is the start-state of lexical state i or
- * lookahead DFA i
- */
- int entryState [];
-
- /**
- * The number of states in this DFA
- */
- int numStates;
-
- /**
- * The current maximum number of input characters
- */
- int numInput;
-
- /**
- * The number of lexical states (2*numLexStates <= entryState.length)
- */
- int numLexStates;
-
- /**
- * all actions that are used in this DFA
- */
- Hashtable usedActions = new Hashtable();
-
- /** True iff this DFA contains general lookahead */
- boolean lookaheadUsed;
-
- public DFA(int numEntryStates, int numInp, int numLexStates) {
- numInput = numInp;
-
- int statesNeeded = Math.max(numEntryStates, STATES);
-
- table = new int [statesNeeded] [numInput];
- action = new Action [statesNeeded];
- isFinal = new boolean [statesNeeded];
- entryState = new int [numEntryStates];
- numStates = 0;
-
- this.numLexStates = numLexStates;
-
- for (int i = 0; i < statesNeeded; i++) {
- for (char j = 0; j < numInput; j++)
- table [i][j] = NO_TARGET;
- }
- }
-
-
- public void setEntryState(int eState, int trueState) {
- entryState[eState] = trueState;
- }
-
- private void ensureStateCapacity(int newNumStates) {
- int oldLength = isFinal.length;
-
- if ( newNumStates < oldLength ) return;
-
- int newLength = oldLength*2;
- while ( newLength <= newNumStates ) newLength*= 2;
-
- boolean [] newFinal = new boolean [newLength];
- boolean [] newPushback = new boolean [newLength];
- Action [] newAction = new Action [newLength];
- int [] [] newTable = new int [newLength] [numInput];
-
- System.arraycopy(isFinal,0,newFinal,0,numStates);
- System.arraycopy(action,0,newAction,0,numStates);
- System.arraycopy(table,0,newTable,0,oldLength);
-
- int i,j;
-
- for (i = oldLength; i < newLength; i++) {
- for (j = 0; j < numInput; j++) {
- newTable[i][j] = NO_TARGET;
- }
- }
-
- isFinal = newFinal;
- action = newAction;
- table = newTable;
- }
-
-
- public void setAction(int state, Action stateAction) {
- action[state] = stateAction;
- if (stateAction != null) {
- usedActions.put(stateAction,stateAction);
- lookaheadUsed |= stateAction.isGenLookAction();
- }
- }
-
- public void setFinal(int state, boolean isFinalState) {
- isFinal[state] = isFinalState;
- }
-
- public void addTransition(int start, char input, int dest) {
- int max = Math.max(start,dest)+1;
- ensureStateCapacity(max);
- if (max > numStates) numStates = max;
-
- // Out.debug("Adding DFA transition ("+start+", "+(int)input+", "+dest+")");
-
- table[start][input] = dest;
- }
-
-
- public String toString() {
- StringBuffer result = new StringBuffer();
-
- for (int i=0; i < numStates; i++) {
- result.append("State ");
- if ( isFinal[i] ) {
- result.append("[FINAL");
- String l = action[i].lookString();
- if (!l.equals("")) {
- result.append(", ");
- result.append(l);
- }
- result.append("] ");
- }
- result.append(i+":"+Out.NL);
-
- for (char j=0; j < numInput; j++) {
- if ( table[i][j] >= 0 )
- result.append(" with "+(int)j+" in "+table[i][j]+Out.NL);
- }
- }
-
- return result.toString();
- }
-
-
- public void writeDot(File file) {
- try {
- PrintWriter writer = new PrintWriter(new FileWriter(file));
- writer.println(dotFormat());
- writer.close();
- }
- catch (IOException e) {
- Out.error(ErrorMessages.FILE_WRITE, file);
- throw new GeneratorException();
- }
- }
-
-
- public String dotFormat() {
- StringBuffer result = new StringBuffer();
-
- result.append("digraph DFA {"+Out.NL);
- result.append("rankdir = LR"+Out.NL);
-
- for (int i=0; i < numStates; i++) {
- if ( isFinal[i] ) {
- result.append(i);
- result.append(" [shape = doublecircle]");
- result.append(Out.NL);
- }
- }
-
- for (int i=0; i < numStates; i++) {
- for (int input = 0; input < numInput; input++) {
- if ( table[i][input] >= 0 ) {
- result.append(i+" -> "+table[i][input]);
- result.append(" [label=\"["+input+"]\"]"+Out.NL);
- // result.append(" [label=\"["+classes.toString(input)+"]\"]\n");
- }
- }
- }
-
- result.append("}"+Out.NL);
-
- return result.toString();
- }
-
-
- /**
- * Check that all actions can actually be matched in this DFA.
- */
- public void checkActions(LexScan scanner, LexParse parser) {
- EOFActions eofActions = parser.getEOFActions();
- Enumeration l = scanner.actions.elements();
-
- while (l.hasMoreElements()) {
- Action a = (Action) l.nextElement();
- if ( !a.equals(usedActions.get(a)) && !eofActions.isEOFAction(a) ) {
- Out.warning(scanner.file, ErrorMessages.NEVER_MATCH, a.priority-1, -1);
- }
- }
- }
-
-
- /**
- * Implementation of Hopcroft's O(n log n) minimization algorithm, follows
- * description by D. Gries.
- *
- * Time: O(n log n)
- * Space: O(c n), size < 4*(5*c*n + 13*n + 3*c) byte
- */
- public void minimize() {
- Out.print(numStates+" states before minimization, ");
-
- if (numStates == 0) {
- Out.error(ErrorMessages.ZERO_STATES);
- throw new GeneratorException();
- }
-
- if (Options.no_minimize) {
- Out.println("minimization skipped.");
- return;
- }
-
- // the algorithm needs the DFA to be total, so we add an error state 0,
- // and translate the rest of the states by +1
- final int n = numStates+1;
-
- // block information:
- // [0..n-1] stores which block a state belongs to,
- // [n..2*n-1] stores how many elements each block has
- int [] block = new int[2*n];
-
- // implements a doubly linked list of states (these are the actual blocks)
- int [] b_forward = new int[2*n];
- int [] b_backward = new int[2*n];
-
- // the last of the blocks currently in use (in [n..2*n-1])
- // (end of list marker, points to the last used block)
- int lastBlock = n; // at first we start with one empty block
- final int b0 = n; // the first block
-
- // the circular doubly linked list L of pairs (B_i, c)
- // (B_i, c) in L iff l_forward[(B_i-n)*numInput+c] > 0 // numeric value of block 0 = n!
- int [] l_forward = new int[n*numInput+1];
- int [] l_backward = new int[n*numInput+1];
- int anchorL = n*numInput; // list anchor
-
- // inverse of the transition table
- // if t = inv_delta[s][c] then { inv_delta_set[t], inv_delta_set[t+1], .. inv_delta_set[k] }
- // is the set of states, with inv_delta_set[k] = -1 and inv_delta_set[j] >= 0 for t <= j < k
- int [] [] inv_delta = new int[n][numInput];
- int [] inv_delta_set = new int [2*n*numInput];
-
- // twin stores two things:
- // twin[0]..twin[numSplit-1] is the list of blocks that have been split
- // twin[B_i] is the twin of block B_i
- int [] twin = new int[2*n];
- int numSplit;
-
- // SD[B_i] is the the number of states s in B_i with delta(s,a) in B_j
- // if SD[B_i] == block[B_i], there is no need to split
- int [] SD = new int[2*n]; // [only SD[n..2*n-1] is used]
-
-
- // for fixed (B_j,a), the D[0]..D[numD-1] are the inv_delta(B_j,a)
- int [] D = new int[n];
- int numD;
-
-
- // initialize inverse of transition table
- int lastDelta = 0;
- int [] inv_lists = new int[n]; // holds a set of lists of states
- int [] inv_list_last = new int[n]; // the last element
- for (int c = 0; c < numInput; c++) {
- // clear "head" and "last element" pointers
- for (int s = 0; s < n; s++) {
- inv_list_last[s] = -1;
- inv_delta[s][c] = -1;
- }
-
- // the error state has a transition for each character into itself
- inv_delta[0][c] = 0;
- inv_list_last[0] = 0;
-
- // accumulate states of inverse delta into lists (inv_delta serves as head of list)
- for (int s = 1; s < n; s++) {
- int t = table[s-1][c]+1;
-
- if (inv_list_last[t] == -1) { // if there are no elements in the list yet
- inv_delta[t][c] = s; // mark t as first and last element
- inv_list_last[t] = s;
- }
- else {
- inv_lists[inv_list_last[t]] = s; // link t into chain
- inv_list_last[t] = s; // and mark as last element
- }
- }
-
- // now move them to inv_delta_set in sequential order,
- // and update inv_delta accordingly
- for (int s = 0; s < n; s++) {
- int i = inv_delta[s][c]; inv_delta[s][c] = lastDelta;
- int j = inv_list_last[s];
- boolean go_on = (i != -1);
- while (go_on) {
- go_on = (i != j);
- inv_delta_set[lastDelta++] = i;
- i = inv_lists[i];
- }
- inv_delta_set[lastDelta++] = -1;
- }
- } // of initialize inv_delta
-
- // printInvDelta(inv_delta, inv_delta_set);
-
- // initialize blocks
-
- // make b0 = {0} where 0 = the additional error state
- b_forward[b0] = 0;
- b_backward[b0] = 0;
- b_forward[0] = b0;
- b_backward[0] = b0;
- block[0] = b0;
- block[b0] = 1;
-
- for (int s = 1; s < n; s++) {
- // System.out.println("Checking state ["+(s-1)+"]");
- // search the blocks if it fits in somewhere
- // (fit in = same pushback behavior, same finalness, same lookahead behavior, same action)
- int b = b0+1; // no state can be equivalent to the error state
- boolean found = false;
- while (!found && b <= lastBlock) {
- // get some state out of the current block
- int t = b_forward[b];
- // System.out.println(" picking state ["+(t-1)+"]");
-
- // check, if s could be equivalent with t
- if (isFinal[s-1]) {
- found = isFinal[t-1] && action[s-1].isEquiv(action[t-1]);
- }
- else {
- found = !isFinal[t-1];
- }
-
- if (found) { // found -> add state s to block b
- // System.out.println("Found! Adding to block "+(b-b0));
- // update block information
- block[s] = b;
- block[b]++;
-
- // chain in the new element
- int last = b_backward[b];
- b_forward[last] = s;
- b_forward[s] = b;
- b_backward[b] = s;
- b_backward[s] = last;
- }
-
- b++;
- }
-
- if (!found) { // fits in nowhere -> create new block
- // System.out.println("not found, lastBlock = "+lastBlock);
-
- // update block information
- block[s] = b;
- block[b]++;
-
- // chain in the new element
- b_forward[b] = s;
- b_forward[s] = b;
- b_backward[b] = s;
- b_backward[s] = b;
-
- lastBlock++;
- }
- } // of initialize blocks
-
- // printBlocks(block,b_forward,b_backward,lastBlock);
-
- // initialize worklist L
- // first, find the largest block B_max, then, all other (B_i,c) go into the list
- int B_max = b0;
- int B_i;
- for (B_i = b0+1; B_i <= lastBlock; B_i++)
- if (block[B_max] < block[B_i]) B_max = B_i;
-
- // L = empty
- l_forward[anchorL] = anchorL;
- l_backward[anchorL] = anchorL;
-
- // set up the first list element
- if (B_max == b0) B_i = b0+1; else B_i = b0; // there must be at least two blocks
-
- int index = (B_i-b0)*numInput; // (B_i, 0)
- while (index < (B_i+1-b0)*numInput) {
- int last = l_backward[anchorL];
- l_forward[last] = index;
- l_forward[index] = anchorL;
- l_backward[index] = last;
- l_backward[anchorL] = index;
- index++;
- }
-
- // now do the rest of L
- while (B_i <= lastBlock) {
- if (B_i != B_max) {
- index = (B_i-b0)*numInput;
- while (index < (B_i+1-b0)*numInput) {
- int last = l_backward[anchorL];
- l_forward[last] = index;
- l_forward[index] = anchorL;
- l_backward[index] = last;
- l_backward[anchorL] = index;
- index++;
- }
- }
- B_i++;
- }
- // end of setup L
-
- // start of "real" algorithm
- // int step = 0;
- // System.out.println("max_steps = "+(n*numInput));
- // while L not empty
- while (l_forward[anchorL] != anchorL) {
- // System.out.println("step : "+(step++));
- // printL(l_forward, l_backward, anchorL);
-
- // pick and delete (B_j, a) in L:
-
- // pick
- int B_j_a = l_forward[anchorL];
- // delete
- l_forward[anchorL] = l_forward[B_j_a];
- l_backward[l_forward[anchorL]] = anchorL;
- l_forward[B_j_a] = 0;
- // take B_j_a = (B_j-b0)*numInput+c apart into (B_j, a)
- int B_j = b0 + B_j_a / numInput;
- int a = B_j_a % numInput;
-
- // printL(l_forward, l_backward, anchorL);
-
- // System.out.println("picked ("+B_j+","+a+")");
- // printL(l_forward, l_backward, anchorL);
-
- // determine splittings of all blocks wrt (B_j, a)
- // i.e. D = inv_delta(B_j,a)
- numD = 0;
- int s = b_forward[B_j];
- while (s != B_j) {
- // System.out.println("splitting wrt. state "+s);
- int t = inv_delta[s][a];
- // System.out.println("inv_delta chunk "+t);
- while (inv_delta_set[t] != -1) {
- // System.out.println("D+= state "+inv_delta_set[t]);
- D[numD++] = inv_delta_set[t++];
- }
- s = b_forward[s];
- }
-
- // clear the twin list
- numSplit = 0;
-
- // System.out.println("splitting blocks according to D");
-
- // clear SD and twins (only those B_i that occur in D)
- for (int indexD = 0; indexD < numD; indexD++) { // for each s in D
- s = D[indexD];
- B_i = block[s];
- SD[B_i] = -1;
- twin[B_i] = 0;
- }
-
- // count how many states of each B_i occurring in D go with a into B_j
- // Actually we only check, if *all* t in B_i go with a into B_j.
- // In this case SD[B_i] == block[B_i] will hold.
- for (int indexD = 0; indexD < numD; indexD++) { // for each s in D
- s = D[indexD];
- B_i = block[s];
-
- // only count, if we haven't checked this block already
- if (SD[B_i] < 0) {
- SD[B_i] = 0;
- int t = b_forward[B_i];
- while (t != B_i && (t != 0 || block[0] == B_j) &&
- (t == 0 || block[table[t-1][a]+1] == B_j)) {
- SD[B_i]++;
- t = b_forward[t];
- }
- }
- }
-
- // split each block according to D
- for (int indexD = 0; indexD < numD; indexD++) { // for each s in D
- s = D[indexD];
- B_i = block[s];
-
- // System.out.println("checking if block "+(B_i-b0)+" must be split because of state "+s);
-
- if (SD[B_i] != block[B_i]) {
- // System.out.println("state "+(s-1)+" must be moved");
- int B_k = twin[B_i];
- if (B_k == 0) {
- // no twin for B_i yet -> generate new block B_k, make it B_i's twin
- B_k = ++lastBlock;
- // System.out.println("creating block "+(B_k-n));
- // printBlocks(block,b_forward,b_backward,lastBlock-1);
- b_forward[B_k] = B_k;
- b_backward[B_k] = B_k;
-
- twin[B_i] = B_k;
-
- // mark B_i as split
- twin[numSplit++] = B_i;
- }
- // move s from B_i to B_k
-
- // remove s from B_i
- b_forward[b_backward[s]] = b_forward[s];
- b_backward[b_forward[s]] = b_backward[s];
-
- // add s to B_k
- int last = b_backward[B_k];
- b_forward[last] = s;
- b_forward[s] = B_k;
- b_backward[s] = last;
- b_backward[B_k] = s;
-
- block[s] = B_k;
- block[B_k]++;
- block[B_i]--;
-
- SD[B_i]--; // there is now one state less in B_i that goes with a into B_j
- // printBlocks(block, b_forward, b_backward, lastBlock);
- // System.out.println("finished move");
- }
- } // of block splitting
-
- // printBlocks(block, b_forward, b_backward, lastBlock);
-
- // System.out.println("updating L");
-
- // update L
- for (int indexTwin = 0; indexTwin < numSplit; indexTwin++) {
- B_i = twin[indexTwin];
- int B_k = twin[B_i];
- for (int c = 0; c < numInput; c++) {
- int B_i_c = (B_i-b0)*numInput+c;
- int B_k_c = (B_k-b0)*numInput+c;
- if (l_forward[B_i_c] > 0) {
- // (B_i,c) already in L --> put (B_k,c) in L
- int last = l_backward[anchorL];
- l_backward[anchorL] = B_k_c;
- l_forward[last] = B_k_c;
- l_backward[B_k_c] = last;
- l_forward[B_k_c] = anchorL;
- }
- else {
- // put the smaller block in L
- if (block[B_i] <= block[B_k]) {
- int last = l_backward[anchorL];
- l_backward[anchorL] = B_i_c;
- l_forward[last] = B_i_c;
- l_backward[B_i_c] = last;
- l_forward[B_i_c] = anchorL;
- }
- else {
- int last = l_backward[anchorL];
- l_backward[anchorL] = B_k_c;
- l_forward[last] = B_k_c;
- l_backward[B_k_c] = last;
- l_forward[B_k_c] = anchorL;
- }
- }
- }
- }
- }
-
- // System.out.println("Result");
- // printBlocks(block,b_forward,b_backward,lastBlock);
-
- /*
- System.out.println("Old minimization:");
- boolean [] [] equiv = old_minimize();
-
- boolean error = false;
- for (int i = 1; i < equiv.length; i++) {
- for (int j = 0; j < equiv[i].length; j++) {
- if (equiv[i][j] != (block[i+1] == block[j+1])) {
- System.out.println("error: equiv["+i+"]["+j+"] = "+equiv[i][j]+
- ", block["+i+"] = "+block[i+1]+", block["+j+"] = "+block[j]);
- error = true;
- }
- }
- }
-
- if (error) System.exit(1);
- System.out.println("check");
- */
-
- // transform the transition table
-
- // trans[i] is the state j that will replace state i, i.e.
- // states i and j are equivalent
- int trans [] = new int [numStates];
-
- // kill[i] is true iff state i is redundant and can be removed
- boolean kill [] = new boolean [numStates];
-
- // move[i] is the amount line i has to be moved in the transition table
- // (because states j < i have been removed)
- int move [] = new int [numStates];
-
- // fill arrays trans[] and kill[] (in O(n))
- for (int b = b0+1; b <= lastBlock; b++) { // b0 contains the error state
- // get the state with smallest value in current block
- int s = b_forward[b];
- int min_s = s; // there are no empty blocks!
- for (; s != b; s = b_forward[s])
- if (min_s > s) min_s = s;
- // now fill trans[] and kill[] for this block
- // (and translate states back to partial DFA)
- min_s--;
- for (s = b_forward[b]-1; s != b-1; s = b_forward[s+1]-1) {
- trans[s] = min_s;
- kill[s] = s != min_s;
- }
- }
-
- // fill array move[] (in O(n))
- int amount = 0;
- for (int i = 0; i < numStates; i++) {
- if ( kill[i] )
- amount++;
- else
- move[i] = amount;
- }
-
- int i,j;
- // j is the index in the new transition table
- // the transition table is transformed in place (in O(c n))
- for (i = 0, j = 0; i < numStates; i++) {
-
- // we only copy lines that have not been removed
- if ( !kill[i] ) {
-
- // translate the target states
- for (int c = 0; c < numInput; c++) {
- if ( table[i][c] >= 0 ) {
- table[j][c] = trans[ table[i][c] ];
- table[j][c]-= move[ table[j][c] ];
- }
- else {
- table[j][c] = table[i][c];
- }
- }
-
- isFinal[j] = isFinal[i];
- action[j] = action[i];
-
- j++;
- }
- }
-
- numStates = j;
-
- // translate lexical states
- for (i = 0; i < entryState.length; i++) {
- entryState[i] = trans[ entryState[i] ];
- entryState[i]-= move[ entryState[i] ];
- }
-
- Out.println(numStates+" states in minimized DFA");
- }
-
- public String toString(int [] a) {
- String r = "{";
- int i;
- for (i = 0; i < a.length-1; i++) r += a[i]+",";
- return r+a[i]+"}";
- }
-
- public void printBlocks(int [] b, int [] b_f, int [] b_b, int last) {
- Out.dump("block : "+toString(b));
- Out.dump("b_forward : "+toString(b_f));
- Out.dump("b_backward: "+toString(b_b));
- Out.dump("lastBlock : "+last);
- final int n = numStates+1;
- for (int i = n; i <= last; i ++) {
- Out.dump("Block "+(i-n)+" (size "+b[i]+"):");
- String line = "{";
- int s = b_f[i];
- while (s != i) {
- line = line+(s-1);
- int t = s;
- s = b_f[s];
- if (s != i) {
- line = line+",";
- if (b[s] != i) Out.dump("consistency error for state "+(s-1)+" (block "+b[s]+")");
- }
- if (b_b[s] != t) Out.dump("consistency error for b_back in state "+(s-1)+" (back = "+b_b[s]+", should be = "+t+")");
- }
- Out.dump(line+"}");
- }
- }
-
- public void printL(int [] l_f, int [] l_b, int anchor) {
- String l = "L = {";
- int bc = l_f[anchor];
- while (bc != anchor) {
- int b = bc / numInput;
- int c = bc % numInput;
- l+= "("+b+","+c+")";
- int old_bc = bc;
- bc = l_f[bc];
- if (bc != anchor) l+= ",";
- if (l_b[bc] != old_bc) Out.dump("consistency error for ("+b+","+c+")");
- }
- Out.dump(l+"}");
- }
-
-
- /**
- * Much simpler, but slower and less memory efficient minimization algorithm.
- *
- * @return the equivalence relation on states.
- */
- public boolean [] [] old_minimize() {
-
- int i,j;
- char c;
-
- Out.print(numStates+" states before minimization, ");
-
- if (numStates == 0) {
- Out.error(ErrorMessages.ZERO_STATES);
- throw new GeneratorException();
- }
-
- if (Options.no_minimize) {
- Out.println("minimization skipped.");
- return null;
- }
-
- // equiv[i][j] == true <=> state i and state j are equivalent
- boolean [] [] equiv = new boolean [numStates] [];
-
- // list[i][j] contains all pairs of states that have to be marked "not equivalent"
- // if states i and j are recognized to be not equivalent
- StatePairList [] [] list = new StatePairList [numStates] [];
-
- // construct a triangular matrix equiv[i][j] with j < i
- // and mark pairs (final state, not final state) as not equivalent
- for (i = 1; i < numStates; i++) {
- list[i] = new StatePairList[i];
- equiv[i] = new boolean [i];
- for (j = 0; j < i; j++) {
- // i and j are equivalent, iff :
- // i and j are both final and their actions are equivalent and have same pushback behaviour or
- // i and j are both not final
-
- if ( isFinal[i] && isFinal[j] )
- equiv[i][j] = action[i].isEquiv(action[j]);
- else
- equiv[i][j] = !isFinal[j] && !isFinal[i];
- }
- }
-
-
- for (i = 1; i < numStates; i++) {
-
- Out.debug("Testing state "+i);
-
- for (j = 0; j < i; j++) {
-
- if ( equiv[i][j] ) {
-
- for (c = 0; c < numInput; c++) {
-
- if (equiv[i][j]) {
-
- int p = table[i][c];
- int q = table[j][c];
- if (p < q) {
- int t = p;
- p = q;
- q = t;
- }
- if ( p >= 0 || q >= 0 ) {
- // Out.debug("Testing input '"+c+"' for ("+i+","+j+")");
- // Out.debug("Target states are ("+p+","+q+")");
- if ( p!=q && (p == -1 || q == -1 || !equiv[p][q]) ) {
- equiv[i][j] = false;
- if (list[i][j] != null) list[i][j].markAll(list,equiv);
- }
- // printTable(equiv);
- } // if (p >= 0) ..
- } // if (equiv[i][j]
- } // for (char c = 0; c < numInput ..
-
- // if i and j are still marked equivalent..
-
- if ( equiv[i][j] ) {
-
- // Out.debug("("+i+","+j+") are still marked equivalent");
-
- for (c = 0; c < numInput; c++) {
-
- int p = table[i][c];
- int q = table[j][c];
- if (p < q) {
- int t = p;
- p = q;
- q = t;
- }
-
- if (p != q && p >= 0 && q >= 0) {
- if ( list[p][q] == null ) {
- list[p][q] = new StatePairList();
- }
- list[p][q].addPair(i,j);
- }
- }
- }
- else {
- // Out.debug("("+i+","+j+") are not equivalent");
- }
-
- } // of first if (equiv[i][j])
- } // of for j
- } // of for i
- // }
-
- // printTable(equiv);
-
- return equiv;
- }
-
-
- public void printInvDelta(int [] [] inv_delta, int [] inv_delta_set) {
- Out.dump("Inverse of transition table: ");
- for (int s = 0; s < numStates+1; s++) {
- Out.dump("State ["+(s-1)+"]");
- for (int c = 0; c < numInput; c++) {
- String line = "With <"+c+"> in {";
- int t = inv_delta[s][c];
- while (inv_delta_set[t] != -1) {
- line += inv_delta_set[t++]-1;
- if (inv_delta_set[t] != -1) line += ",";
- }
- if (inv_delta_set[inv_delta[s][c]] != -1)
- Out.dump(line+"}");
- }
- }
- }
-
- public void printTable(boolean [] [] equiv) {
-
- Out.dump("Equivalence table is : ");
- for (int i = 1; i < numStates; i++) {
- String line = i+" :";
- for (int j = 0; j < i; j++) {
- if (equiv[i][j])
- line+= " E";
- else
- line+= " x";
- }
- Out.dump(line);
- }
- }
-
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/EOFActions.java b/tools/lexer/jflex-1.4/src/JFlex/EOFActions.java
deleted file mode 100644
index 08d20acacdd5..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/EOFActions.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein aState");
- println(" */");
-
- CountEmitter e = new CountEmitter("Attribute");
- e.emitInit();
-
- int count = 1;
- int value = 0;
- if ( dfa.isFinal[0] ) value = FINAL;
- if ( !isTransition[0] ) value|= NOLOOK;
-
- for (int i = 1; i < dfa.numStates; i++) {
- int attribute = 0;
- if ( dfa.isFinal[i] ) attribute = FINAL;
- if ( !isTransition[i] ) attribute|= NOLOOK;
-
- if (value == attribute) {
- count++;
- }
- else {
- e.emit(count, value);
- count = 1;
- value = attribute;
- }
- }
-
- e.emit(count, value);
- e.emitUnpack();
-
- println(e.toString());
- }
-
-
- private void emitClassCode() {
- if ( scanner.eofCode != null ) {
- println(" /** denotes if the user-EOF-code has already been executed */");
- println(" private boolean zzEOFDone;");
- println("");
- }
-
- if ( scanner.classCode != null ) {
- println(" /* user code: */");
- println(scanner.classCode);
- }
- }
-
- private void emitConstructorDecl() {
- emitConstructorDecl(true);
-
- if ((scanner.standalone || scanner.debugOption) &&
- scanner.ctorArgs.size() > 0) {
- Out.warning(ErrorMessages.get(ErrorMessages.CTOR_DEBUG));
- println();
- emitConstructorDecl(false);
- }
- }
-
- private void emitConstructorDecl(boolean printCtorArgs) {
- println(" /**");
- println(" * Creates a new scanner");
- if (scanner.emitInputStreamCtor) {
- println(" * There is also a java.io.InputStream version of this constructor.");
- }
- println(" *");
- println(" * @param in the java.io.Reader to read input from.");
- println(" */");
- String warn =
- "// WARNING: this is a default constructor for " +
- "debug/standalone only. Has no custom parameters or init code.";
-
- if (!printCtorArgs) println(warn);
-
- print(" ");
-
- if ( scanner.isPublic ) print("public ");
- print( getBaseName(scanner.className) );
- print("(java.io.Reader in");
- if (printCtorArgs) emitCtorArgs();
- print(")");
-
- if ( scanner.initThrow != null && printCtorArgs) {
- print(" throws ");
- print( scanner.initThrow );
- }
-
- println(" {");
-
- if ( scanner.initCode != null && printCtorArgs) {
- print(" ");
- print( scanner.initCode );
- }
-
- println(" this.zzReader = in;");
-
- println(" }");
- println();
-
-
- if (scanner.emitInputStreamCtor) {
- println(" /**");
- println(" * Creates a new scanner.");
- println(" * There is also java.io.Reader version of this constructor.");
- println(" *");
- println(" * @param in the java.io.Inputstream to read input from.");
- println(" */");
- if (!printCtorArgs) println(warn);
-
- print(" ");
- if (scanner.isPublic) print("public ");
- print(getBaseName(scanner.className));
- print("(java.io.InputStream in");
- if (printCtorArgs) emitCtorArgs();
- print(")");
-
- if (scanner.initThrow != null && printCtorArgs) {
- print(" throws ");
- print(scanner.initThrow);
- }
-
- println(" {");
-
- print(" this(new java.io.InputStreamReader(in)");
- if (printCtorArgs) {
- for (int i = 0; i < scanner.ctorArgs.size(); i++) {
- print(", " + scanner.ctorArgs.elementAt(i));
- }
- }
- println(");");
-
- println(" }");
- }
- }
-
- private void emitCtorArgs() {
- for (int i = 0; i < scanner.ctorArgs.size(); i++) {
- print(", "+scanner.ctorTypes.elementAt(i));
- print(" "+scanner.ctorArgs.elementAt(i));
- }
- }
-
- private void emitDoEOF() {
- if ( scanner.eofCode == null ) return;
-
- println(" /**");
- println(" * Contains user EOF-code, which will be executed exactly once,");
- println(" * when the end of file is reached");
- println(" */");
-
- print(" private void zzDoEOF()");
-
- if ( scanner.eofThrow != null ) {
- print(" throws ");
- print(scanner.eofThrow);
- }
-
- println(" {");
-
- println(" if (!zzEOFDone) {");
- println(" zzEOFDone = true;");
- println(" "+scanner.eofCode );
- println(" }");
- println(" }");
- println("");
- println("");
- }
-
- private void emitLexFunctHeader() {
-
- if (scanner.cupCompatible) {
- // force public, because we have to implement java_cup.runtime.Symbol
- print(" public ");
- }
- else {
- print(" "+visibility+" ");
- }
-
- if ( scanner.tokenType == null ) {
- if ( scanner.isInteger )
- print( "int" );
- else
- if ( scanner.isIntWrap )
- print( "Integer" );
- else
- print( "Yytoken" );
- }
- else
- print( scanner.tokenType );
-
- print(" ");
-
- print(scanner.functionName);
-
- print("() throws java.io.IOException");
-
- if ( scanner.lexThrow != null ) {
- print(", ");
- print(scanner.lexThrow);
- }
-
- if ( scanner.scanErrorException != null ) {
- print(", ");
- print(scanner.scanErrorException);
- }
-
- println(" {");
-
- skel.emitNext();
-
- if ( scanner.useRowMap ) {
- println(" int [] zzTransL = ZZ_TRANS;");
- println(" int [] zzRowMapL = ZZ_ROWMAP;");
- println(" int [] zzAttrL = ZZ_ATTRIBUTE;");
-
- }
-
- skel.emitNext();
-
- if ( scanner.charCount ) {
- println(" yychar+= zzMarkedPosL-zzStartRead;");
- println("");
- }
-
- if ( scanner.lineCount || scanner.columnCount ) {
- println(" boolean zzR = false;");
- println(" for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL;");
- println(" zzCurrentPosL++) {");
- println(" switch (" + zzBufferLAccess("zzCurrentPosL") + ") {");
- println(" case '\\u000B':");
- println(" case '\\u000C':");
- println(" case '\\u0085':");
- println(" case '\\u2028':");
- println(" case '\\u2029':");
- if ( scanner.lineCount )
- println(" yyline++;");
- if ( scanner.columnCount )
- println(" yycolumn = 0;");
- println(" zzR = false;");
- println(" break;");
- println(" case '\\r':");
- if ( scanner.lineCount )
- println(" yyline++;");
- if ( scanner.columnCount )
- println(" yycolumn = 0;");
- println(" zzR = true;");
- println(" break;");
- println(" case '\\n':");
- println(" if (zzR)");
- println(" zzR = false;");
- println(" else {");
- if ( scanner.lineCount )
- println(" yyline++;");
- if ( scanner.columnCount )
- println(" yycolumn = 0;");
- println(" }");
- println(" break;");
- println(" default:");
- println(" zzR = false;");
- if ( scanner.columnCount )
- println(" yycolumn++;");
- println(" }");
- println(" }");
- println();
-
- if ( scanner.lineCount ) {
- println(" if (zzR) {");
- println(" // peek one character ahead if it is \\n (if we have counted one line too much)");
- println(" boolean zzPeek;");
- println(" if (zzMarkedPosL < zzEndReadL)");
- println(" zzPeek = " + zzBufferLAccess("zzMarkedPosL") + " == '\\n';");
- println(" else if (zzAtEOF)");
- println(" zzPeek = false;");
- println(" else {");
- println(" boolean eof = zzRefill();");
- println(" zzEndReadL = zzEndRead;");
- println(" zzMarkedPosL = zzMarkedPos;");
- println(" zzBufferL = zzBuffer;");
- println(" if (eof) ");
- println(" zzPeek = false;");
- println(" else ");
- println(" zzPeek = " + zzBufferLAccess("zzMarkedPosL") + " == '\\n';");
- println(" }");
- println(" if (zzPeek) yyline--;");
- println(" }");
- }
- }
-
- if ( scanner.bolUsed ) {
- // zzMarkedPos > zzStartRead <=> last match was not empty
- // if match was empty, last value of zzAtBOL can be used
- // zzStartRead is always >= 0
- println(" if (zzMarkedPosL > zzStartRead) {");
- println(" switch (" + zzBufferLAccess("zzMarkedPosL-1") + ") {");
- println(" case '\\n':");
- println(" case '\\u000B':");
- println(" case '\\u000C':");
- println(" case '\\u0085':");
- println(" case '\\u2028':");
- println(" case '\\u2029':");
- println(" zzAtBOL = true;");
- println(" break;");
- println(" case '\\r': ");
- println(" if (zzMarkedPosL < zzEndReadL)");
- println(" zzAtBOL = " + zzBufferLAccess("zzMarkedPosL") + " != '\\n';");
- println(" else if (zzAtEOF)");
- println(" zzAtBOL = false;");
- println(" else {");
- println(" boolean eof = zzRefill();");
- println(" zzMarkedPosL = zzMarkedPos;");
- println(" zzEndReadL = zzEndRead;");
- println(" zzBufferL = zzBuffer;");
- println(" if (eof) ");
- println(" zzAtBOL = false;");
- println(" else ");
- println(" zzAtBOL = " + zzBufferLAccess("zzMarkedPosL") + " != '\\n';");
- println(" }");
- println(" break;");
- println(" default:");
- println(" zzAtBOL = false;");
- println(" }");
- println(" }");
- }
-
- skel.emitNext();
-
- if (scanner.bolUsed) {
- println(" if (zzAtBOL)");
- println(" zzState = ZZ_LEXSTATE[zzLexicalState+1];");
- println(" else");
- println(" zzState = ZZ_LEXSTATE[zzLexicalState];");
- println();
- }
- else {
- println(" zzState = ZZ_LEXSTATE[zzLexicalState];");
- println();
- }
-
- skel.emitNext();
- }
-
-
- private void emitGetRowMapNext() {
- println(" int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];");
- println(" if (zzNext == "+DFA.NO_TARGET+") break zzForAction;");
- println(" zzState = zzNext;");
- println();
-
- println(" int zzAttributes = zzAttrL[zzState];");
-
- println(" if ( (zzAttributes & "+FINAL+") == "+FINAL+" ) {");
-
- skel.emitNext();
-
- println(" if ( (zzAttributes & "+NOLOOK+") == "+NOLOOK+" ) break zzForAction;");
-
- skel.emitNext();
- }
-
- private void emitTransitionTable() {
- transformTransitionTable();
-
- println(" zzInput = zzCMapL[zzInput];");
- println();
-
- println(" boolean zzIsFinal = false;");
- println(" boolean zzNoLookAhead = false;");
- println();
-
- println(" zzForNext: { switch (zzState) {");
-
- for (int state = 0; state < dfa.numStates; state++)
- if (isTransition[state]) emitState(state);
-
- println(" default:");
- println(" // if this is ever reached, there is a serious bug in JFlex");
- println(" zzScanError(ZZ_UNKNOWN_ERROR);");
- println(" break;");
- println(" } }");
- println();
-
- println(" if ( zzIsFinal ) {");
-
- skel.emitNext();
-
- println(" if ( zzNoLookAhead ) break zzForAction;");
-
- skel.emitNext();
- }
-
-
- /**
- * Escapes all " ' \ tabs and newlines
- */
- private String escapify(String s) {
- StringBuffer result = new StringBuffer(s.length()*2);
-
- for (int i = 0; i < s.length(); i++) {
- char c = s.charAt(i);
- switch (c) {
- case '\'': result.append("\\\'"); break;
- case '\"': result.append("\\\""); break;
- case '\\': result.append("\\\\"); break;
- case '\t': result.append("\\t"); break;
- case '\r': if (i+1 == s.length() || s.charAt(i+1) != '\n') result.append("\"+ZZ_NL+\"");
- break;
- case '\n': result.append("\"+ZZ_NL+\""); break;
- default: result.append(c);
- }
- }
-
- return result.toString();
- }
-
- public void emitActionTable() {
- int lastAction = 1;
- int count = 0;
- int value = 0;
-
- println(" /** ");
- println(" * Translates DFA states to action switch labels.");
- println(" */");
- CountEmitter e = new CountEmitter("Action");
- e.emitInit();
-
- for (int i = 0; i < dfa.numStates; i++) {
- int newVal = 0;
- if ( dfa.isFinal[i] ) {
- Action action = dfa.action[i];
- if (action.isEmittable()) {
- Integer stored = (Integer) actionTable.get(action);
- if ( stored == null ) {
- stored = new Integer(lastAction++);
- actionTable.put(action, stored);
- }
- newVal = stored.intValue();
- }
- }
-
- if (value == newVal) {
- count++;
- }
- else {
- if (count > 0) e.emit(count,value);
- count = 1;
- value = newVal;
- }
- }
-
- if (count > 0) e.emit(count,value);
-
- e.emitUnpack();
- println(e.toString());
- }
-
- private void emitActions() {
- println(" switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {");
-
- int i = actionTable.size()+1;
- Enumeration actions = actionTable.keys();
- while ( actions.hasMoreElements() ) {
- Action action = (Action) actions.nextElement();
- int label = ((Integer) actionTable.get(action)).intValue();
-
- println(" case "+label+": ");
-
- if (action.lookAhead() == Action.FIXED_BASE) {
- println(" // lookahead expression with fixed base length");
- println(" zzMarkedPos = zzStartRead + "+action.getLookLength()+";");
- }
-
- if (action.lookAhead() == Action.FIXED_LOOK ||
- action.lookAhead() == Action.FINITE_CHOICE) {
- println(" // lookahead expression with fixed lookahead length");
- println(" yypushback("+action.getLookLength()+");");
- }
-
- if (action.lookAhead() == Action.GENERAL_LOOK) {
- println(" // general lookahead, find correct zzMarkedPos");
- println(" { int zzFState = "+dfa.entryState[action.getEntryState()]+";");
- println(" int zzFPos = zzStartRead;");
- println(" if (zzFin.length <= " + zzBufferLLength() + ") { zzFin = new boolean[" + zzBufferLLength() + "+1]; }");
- println(" boolean zzFinL[] = zzFin;");
- println(" while (zzFState != -1 && zzFPos < zzMarkedPos) {");
- println(" zzFinL[zzFPos] = ((zzAttrL[zzFState] & 1) == 1);");
- println(" zzInput = " + zzBufferLAccess("zzFPos++") + ";");
- println(" zzFState = zzTransL[ zzRowMapL[zzFState] + zzCMapL[zzInput] ];");
- println(" }");
- println(" if (zzFState != -1) { zzFinL[zzFPos++] = ((zzAttrL[zzFState] & 1) == 1); } ");
- println(" while (zzFPos <= zzMarkedPos) {");
- println(" zzFinL[zzFPos++] = false;");
- println(" }");
- println();
- println(" zzFState = "+dfa.entryState[action.getEntryState()+1]+";");
- println(" zzFPos = zzMarkedPos;");
- println(" while (!zzFinL[zzFPos] || (zzAttrL[zzFState] & 1) != 1) {");
- println(" zzInput = " + zzBufferLAccess("--zzFPos") + ";");
- println(" zzFState = zzTransL[ zzRowMapL[zzFState] + zzCMapL[zzInput] ];");
- println(" };");
- println(" zzMarkedPos = zzFPos;");
- println(" }");
- }
-
- if ( scanner.debugOption ) {
- print(" System.out.println(");
- if ( scanner.lineCount )
- print("\"line: \"+(yyline+1)+\" \"+");
- if ( scanner.columnCount )
- print("\"col: \"+(yycolumn+1)+\" \"+");
- println("\"match: --\"+yytext()+\"--\");");
- print(" System.out.println(\"action ["+action.priority+"] { ");
- print(escapify(action.content));
- println(" }\");");
- }
-
- println(" { "+action.content);
- println(" }");
- println(" case "+(i++)+": break;");
- }
- }
-
- private void emitEOFVal() {
- EOFActions eofActions = parser.getEOFActions();
-
- if ( scanner.eofCode != null )
- println(" zzDoEOF();");
-
- if ( eofActions.numActions() > 0 ) {
- println(" switch (zzLexicalState) {");
-
- Enumeration stateNames = scanner.states.names();
-
- // record lex states already emitted:
- Hashtable used = new Hashtable();
-
- // pick a start value for break case labels.
- // must be larger than any value of a lex state:
- int last = dfa.numStates;
-
- while ( stateNames.hasMoreElements() ) {
- String name = (String) stateNames.nextElement();
- int num = scanner.states.getNumber(name).intValue();
- Action action = eofActions.getAction(num);
-
- if (action != null) {
- println(" case "+name+": {");
- if ( scanner.debugOption ) {
- print(" System.out.println(");
- if ( scanner.lineCount )
- print("\"line: \"+(yyline+1)+\" \"+");
- if ( scanner.columnCount )
- print("\"col: \"+(yycolumn+1)+\" \"+");
- println("\"match: <start to end.
- *
- * @param start first character the intervall should contain
- * @param end last character the intervall should contain
- */
- public Interval(char start, char end) {
- this.start = start;
- this.end = end;
- }
-
-
- /**
- * Copy constructor
- */
- public Interval(Interval other) {
- this.start = other.start;
- this.end = other.end;
- }
-
-
- /**
- * Return true iff point is contained in this intervall.
- *
- * @param point the character to check
- */
- public boolean contains(char point) {
- return start <= point && end >= point;
- }
-
-
- /**
- * Return true iff this intervall completely contains the
- * other one.
- *
- * @param other the other intervall
- */
- public boolean contains(Interval other) {
- return this.start <= other.start && this.end >= other.end;
- }
-
-
- /**
- * Return true if o is an intervall
- * with the same borders.
- *
- * @param o the object to check equality with
- */
- public boolean equals(Object o) {
- if ( o == this ) return true;
- if ( !(o instanceof Interval) ) return false;
-
- Interval other = (Interval) o;
- return other.start == this.start && other.end == this.end;
- }
-
-
- /**
- * Set a new last character
- *
- * @param end the new last character of this intervall
- */
- public void setEnd(char end) {
- this.end = end;
- }
-
-
- /**
- * Set a new first character
- *
- * @param start the new first character of this intervall
- */
- public void setStart(char start) {
- this.start = start;
- }
-
-
- /**
- * Check wether a character is printable.
- *
- * @param c the character to check
- */
- private static boolean isPrintable(char c) {
- // fixme: should make unicode test here
- return c > 31 && c < 127;
- }
-
-
- /**
- * Get a String representation of this intervall.
- *
- * @return a string "[start-end]" or
- * "[start]" (if there is only one character in
- * the intervall) where start and
- * end are either a number (the character code)
- * or something of the from 'a'.
- */
- public String toString() {
- StringBuffer result = new StringBuffer("[");
-
- if ( isPrintable(start) )
- result.append("'"+start+"'");
- else
- result.append( (int) start );
-
- if (start != end) {
- result.append("-");
-
- if ( isPrintable(end) )
- result.append("'"+end+"'");
- else
- result.append( (int) end );
- }
-
- result.append("]");
- return result.toString();
- }
-
-
- /**
- * Make a copy of this interval.
- *
- * @return the copy
- */
- public Interval copy() {
- return new Interval(start,end);
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/LexParse.cup b/tools/lexer/jflex-1.4/src/JFlex/LexParse.cup
deleted file mode 100644
index c67258adc3b5..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/LexParse.cup
+++ /dev/null
@@ -1,807 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein reduce_goto table. */
- protected static final short[][] _reduce_table =
- unpackFromStrings(new String[] {
- "\000\214\000\004\005\004\001\001\000\004\002\007\001" +
- "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\004\003\012\001\001\000\002\001\001\000\010\004" +
- "\154\016\152\021\155\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\002\001\001\000\016\006" +
- "\026\007\027\010\064\011\044\012\056\020\045\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\012\010\106\011\044\012" +
- "\056\020\045\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\012\010\147\011" +
- "\044\012\056\020\045\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\012\010\146\011\044\012" +
- "\056\020\045\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\010\014\116\017\117\020\111\001\001\000\002\001\001" +
- "\000\016\006\102\007\027\010\064\011\044\012\056\020" +
- "\045\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\014\007\105\010\064\011\044\012\056" +
- "\020\045\001\001\000\002\001\001\000\012\010\106\011" +
- "\044\012\056\020\045\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\002\001\001\000\010\014" +
- "\116\017\133\020\111\001\001\000\010\014\116\017\127" +
- "\020\111\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\006\014\124\020\121\001\001\000\002" +
- "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\010\014\116\017\131\020\111" +
- "\001\001\000\002\001\001\000\006\014\124\020\121\001" +
- "\001\000\002\001\001\000\006\014\124\020\121\001\001" +
- "\000\002\001\001\000\006\014\124\020\121\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\004\022\176\001\001\000\004\015\170" +
- "\001\001\000\002\001\001\000\006\004\157\016\152\001" +
- "\001\000\004\015\160\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\004\015\163\001\001\000" +
- "\002\001\001\000\002\001\001\000\010\004\154\016\152" +
- "\021\166\001\001\000\006\004\157\016\152\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\010" +
- "\004\154\016\152\021\173\001\001\000\006\004\157\016" +
- "\152\001\001\000\002\001\001\000\002\001\001\000\016" +
- "\006\200\007\027\010\064\011\044\012\056\020\045\001" +
- "\001\000\002\001\001\000\010\013\205\023\202\024\206" +
- "\001\001\000\002\001\001\000\002\001\001\000\016\006" +
- "\213\007\027\010\064\011\044\012\056\020\045\001\001" +
- "\000\002\001\001\000\004\023\211\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001" });
-
- /** Access to reduce_goto table. */
- public short[][] reduce_table() {return _reduce_table;}
-
- /** Instance of action encapsulation class. */
- protected CUP$LexParse$actions action_obj;
-
- /** Action encapsulation object initializer. */
- protected void init_actions()
- {
- action_obj = new CUP$LexParse$actions(this);
- }
-
- /** Invoke a user supplied parse action. */
- public java_cup.runtime.Symbol do_action(
- int act_num,
- java_cup.runtime.lr_parser parser,
- java.util.Stack stack,
- int top)
- throws java.lang.Exception
- {
- /* call code in generated class */
- return action_obj.CUP$LexParse$do_action(act_num, parser, stack, top);
- }
-
- /** Indicates start state. */
- public int start_state() {return 0;}
- /** Indicates start production. */
- public int start_production() {return 0;}
-
- /** EOF Symbol index. */
- public int EOF_sym() {return 0;}
-
- /** error Symbol index. */
- public int error_sym() {return 1;}
-
-
- /** User initialization code. */
- public void user_init() throws java.lang.Exception
- {
-
- action_obj.scanner = this.scanner;
-
- }
-
-
- public LexScan scanner;
-
- public LexParse(LexScan scanner) {
- super(scanner);
- this.scanner = scanner;
- }
-
- public CharClasses getCharClasses() {
- return action_obj.charClasses;
- }
-
- public EOFActions getEOFActions() {
- return action_obj.eofActions;
- }
-
- public void report_error(String message, Object info) {
- if ( info instanceof java_cup.runtime.Symbol ) {
- java_cup.runtime.Symbol s = (java_cup.runtime.Symbol) info;
-
- if (s.sym == sym.EOF)
- Out.error(ErrorMessages.UNEXPECTED_EOF);
- else
- Out.error(scanner.file, ErrorMessages.SYNTAX_ERROR, s.left, s.right);
- }
- else
- Out.error(ErrorMessages.UNKNOWN_SYNTAX);
- }
-
- public void report_fatal_error(String message, Object info) {
- // report_error(message, info);
- throw new GeneratorException();
- }
-
-
-}
-
-/** Cup generated class to encapsulate user supplied action code.*/
-class CUP$LexParse$actions {
-
-
-
- LexScan scanner;
- CharClasses charClasses = new CharClasses(Options.jlex ? 127 : 0xFFFF);
- RegExps regExps = new RegExps();
- Macros macros = new Macros();
- Integer stateNumber;
- Timer t = new Timer();
- EOFActions eofActions = new EOFActions();
-
- void fatalError(ErrorMessages message, int line, int col) {
- syntaxError(message, line, col);
- throw new GeneratorException();
- }
-
- void fatalError(ErrorMessages message) {
- fatalError(message, scanner.currentLine(), -1);
- throw new GeneratorException();
- }
-
- void syntaxError(ErrorMessages message) {
- Out.error(scanner.file, message, scanner.currentLine(), -1);
- }
-
- void syntaxError(ErrorMessages message, int line) {
- Out.error(scanner.file, message, line, -1);
- }
-
- void syntaxError(ErrorMessages message, int line, int col) {
- Out.error(scanner.file, message, line, col);
- }
-
-
- private boolean check(int type, char c) {
- switch (type) {
- case sym.JLETTERCLASS:
- return Character.isJavaIdentifierStart(c);
-
- case sym.JLETTERDIGITCLASS:
- return Character.isJavaIdentifierPart(c);
-
- case sym.LETTERCLASS:
- return Character.isLetter(c);
-
- case sym.DIGITCLASS:
- return Character.isDigit(c);
-
- case sym.UPPERCLASS:
- return Character.isUpperCase(c);
-
- case sym.LOWERCLASS:
- return Character.isLowerCase(c);
-
- case sym.UNICODE_UNASSIGNED:
- return Character.getType(c) == Character.UNASSIGNED;
-
- case sym.UNICODE_UPPERCASE_LETTER:
- return Character.getType(c) == Character.UPPERCASE_LETTER;
-
- case sym.UNICODE_LOWERCASE_LETTER:
- return Character.getType(c) == Character.LOWERCASE_LETTER;
-
- case sym.UNICODE_TITLECASE_LETTER:
- return Character.getType(c) == Character.TITLECASE_LETTER;
-
- case sym.UNICODE_MODIFIER_LETTER:
- return Character.getType(c) == Character.MODIFIER_LETTER;
-
- case sym.UNICODE_OTHER_LETTER:
- return Character.getType(c) == Character.OTHER_LETTER;
-
- case sym.UNICODE_NON_SPACING_MARK:
- return Character.getType(c) == Character.NON_SPACING_MARK;
-
- case sym.UNICODE_ENCLOSING_MARK:
- return Character.getType(c) == Character.ENCLOSING_MARK;
-
- case sym.UNICODE_COMBINING_SPACING_MARK:
- return Character.getType(c) == Character.COMBINING_SPACING_MARK;
-
- case sym.UNICODE_DECIMAL_DIGIT_NUMBER:
- return Character.getType(c) == Character.DECIMAL_DIGIT_NUMBER;
-
- case sym.UNICODE_LETTER_NUMBER:
- return Character.getType(c) == Character.LETTER_NUMBER;
-
- case sym.UNICODE_OTHER_NUMBER:
- return Character.getType(c) == Character.OTHER_NUMBER;
-
- case sym.UNICODE_SPACE_SEPARATOR:
- return Character.getType(c) == Character.SPACE_SEPARATOR;
-
- case sym.UNICODE_LINE_SEPARATOR:
- return Character.getType(c) == Character.LINE_SEPARATOR;
-
- case sym.UNICODE_PARAGRAPH_SEPARATOR:
- return Character.getType(c) == Character.PARAGRAPH_SEPARATOR;
-
- case sym.UNICODE_CONTROL:
- return Character.getType(c) == Character.CONTROL;
-
- case sym.UNICODE_FORMAT:
- return Character.getType(c) == Character.FORMAT;
-
- case sym.UNICODE_PRIVATE_USE:
- return Character.getType(c) == Character.PRIVATE_USE;
-
- case sym.UNICODE_SURROGATE:
- return Character.getType(c) == Character.SURROGATE;
-
- case sym.UNICODE_DASH_PUNCTUATION:
- return Character.getType(c) == Character.DASH_PUNCTUATION;
-
- case sym.UNICODE_START_PUNCTUATION:
- return Character.getType(c) == Character.START_PUNCTUATION;
-
- case sym.UNICODE_END_PUNCTUATION:
- return Character.getType(c) == Character.END_PUNCTUATION;
-
- case sym.UNICODE_CONNECTOR_PUNCTUATION:
- return Character.getType(c) == Character.CONNECTOR_PUNCTUATION;
-
- case sym.UNICODE_OTHER_PUNCTUATION:
- return Character.getType(c) == Character.OTHER_PUNCTUATION;
-
- case sym.UNICODE_MATH_SYMBOL:
- return Character.getType(c) == Character.MATH_SYMBOL;
-
- case sym.UNICODE_CURRENCY_SYMBOL:
- return Character.getType(c) == Character.CURRENCY_SYMBOL;
-
- case sym.UNICODE_MODIFIER_SYMBOL:
- return Character.getType(c) == Character.MODIFIER_SYMBOL;
-
- case sym.UNICODE_OTHER_SYMBOL:
- return Character.getType(c) == Character.OTHER_SYMBOL;
-
- case sym.UNICODE_INITIAL_QUOTE_PUNCTUATION:
- return Character.getType(c) == Character.INITIAL_QUOTE_PUNCTUATION;
-
- case sym.UNICODE_FINAL_QUOTE_PUNCTUATION:
- return Character.getType(c) == Character.FINAL_QUOTE_PUNCTUATION;
-
- default: return false;
- }
- }
-
- private Vector makePreClass(int type) {
-
- Vector result = new Vector();
-
- char c = 0;
- char start = 0;
- char last = charClasses.getMaxCharCode();
-
- boolean prev, current;
-
- prev = check(type,'\u0000');
-
- for (c = 1; c < last; c++) {
-
- current = check(type,c);
-
- if (!prev && current) start = c;
- if (prev && !current) {
- result.addElement(new Interval(start, (char)(c-1)));
- }
-
- prev = current;
- }
-
- // the last iteration is moved out of the loop to
- // avoid an endless loop if last == maxCharCode and
- // last+1 == 0
- current = check(type,c);
-
- if (!prev && current) result.addElement(new Interval(c,c));
- if (prev && current) result.addElement(new Interval(start, c));
- if (prev && !current) result.addElement(new Interval(start, (char)(c-1)));
-
- return result;
- }
-
- private RegExp makeRepeat(RegExp r, int n1, int n2, int line, int col) {
-
- if (n1 <= 0 && n2 <= 0) {
- syntaxError(ErrorMessages.REPEAT_ZERO, line, col);
- return null;
- }
-
- if (n1 > n2) {
- syntaxError(ErrorMessages.REPEAT_GREATER, line, col);
- return null;
- }
-
- int i;
- RegExp result;
-
- if (n1 > 0) {
- result = r;
- n1--; n2--; // we need one concatenation less than the number of expressions to match
- }
- else {
- result = new RegExp1(sym.QUESTION,r);
- n2--;
- }
-
- for (i = 0; i < n1; i++)
- result = new RegExp2(sym.CONCAT, result, r);
-
- n2-= n1;
- for (i = 0; i < n2; i++)
- result = new RegExp2(sym.CONCAT, result, new RegExp1(sym.QUESTION,r));
-
- return result;
- }
-
- private RegExp makeNL() {
- Vector list = new Vector();
- list.addElement(new Interval('\n','\r'));
- list.addElement(new Interval('\u0085','\u0085'));
- list.addElement(new Interval('\u2028','\u2029'));
-
- // assumption: line feeds are caseless
- charClasses.makeClass(list, false);
- charClasses.makeClass('\n', false);
- charClasses.makeClass('\r', false);
-
- RegExp1 c = new RegExp1(sym.CCLASS, list);
- Character n = new Character('\n');
- Character r = new Character('\r');
-
- return new RegExp2(sym.BAR,
- c,
- new RegExp2(sym.CONCAT,
- new RegExp1(sym.CHAR, r),
- new RegExp1(sym.CHAR, n)));
- }
-
-
- private final LexParse parser;
-
- /** Constructor */
- CUP$LexParse$actions(LexParse parser) {
- this.parser = parser;
- }
-
- /** Method with the actual generated action code. */
- public final java_cup.runtime.Symbol CUP$LexParse$do_action(
- int CUP$LexParse$act_num,
- java_cup.runtime.lr_parser CUP$LexParse$parser,
- java.util.Stack CUP$LexParse$stack,
- int CUP$LexParse$top)
- throws java.lang.Exception
- {
- /* Symbol object for return from actions */
- java_cup.runtime.Symbol CUP$LexParse$result;
-
- /* select the action based on the action number */
- switch (CUP$LexParse$act_num)
- {
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 104: // preclass ::= UNICODE_FINAL_QUOTE_PUNCTUATION
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_FINAL_QUOTE_PUNCTUATION);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 103: // preclass ::= UNICODE_INITIAL_QUOTE_PUNCTUATION
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_INITIAL_QUOTE_PUNCTUATION);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 102: // preclass ::= UNICODE_OTHER_SYMBOL
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_OTHER_SYMBOL);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 101: // preclass ::= UNICODE_MODIFIER_SYMBOL
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_MODIFIER_SYMBOL);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 100: // preclass ::= UNICODE_CURRENCY_SYMBOL
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_CURRENCY_SYMBOL);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 99: // preclass ::= UNICODE_MATH_SYMBOL
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_MATH_SYMBOL);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 98: // preclass ::= UNICODE_OTHER_PUNCTUATION
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_OTHER_PUNCTUATION);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 97: // preclass ::= UNICODE_CONNECTOR_PUNCTUATION
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_CONNECTOR_PUNCTUATION);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 96: // preclass ::= UNICODE_END_PUNCTUATION
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_END_PUNCTUATION);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 95: // preclass ::= UNICODE_START_PUNCTUATION
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_START_PUNCTUATION);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 94: // preclass ::= UNICODE_DASH_PUNCTUATION
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_DASH_PUNCTUATION);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 93: // preclass ::= UNICODE_SURROGATE
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_SURROGATE);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 92: // preclass ::= UNICODE_PRIVATE_USE
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_PRIVATE_USE);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 91: // preclass ::= UNICODE_FORMAT
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_FORMAT);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 90: // preclass ::= UNICODE_CONTROL
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_CONTROL);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 89: // preclass ::= UNICODE_PARAGRAPH_SEPARATOR
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_PARAGRAPH_SEPARATOR);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 88: // preclass ::= UNICODE_LINE_SEPARATOR
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_LINE_SEPARATOR);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 87: // preclass ::= UNICODE_SPACE_SEPARATOR
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_SPACE_SEPARATOR);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 86: // preclass ::= UNICODE_OTHER_NUMBER
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_OTHER_NUMBER);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 85: // preclass ::= UNICODE_LETTER_NUMBER
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_LETTER_NUMBER);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 84: // preclass ::= UNICODE_DECIMAL_DIGIT_NUMBER
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_DECIMAL_DIGIT_NUMBER);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 83: // preclass ::= UNICODE_COMBINING_SPACING_MARK
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_COMBINING_SPACING_MARK);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 82: // preclass ::= UNICODE_ENCLOSING_MARK
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_ENCLOSING_MARK);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 81: // preclass ::= UNICODE_NON_SPACING_MARK
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_NON_SPACING_MARK);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 80: // preclass ::= UNICODE_OTHER_LETTER
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_OTHER_LETTER);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 79: // preclass ::= UNICODE_MODIFIER_LETTER
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_MODIFIER_LETTER);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 78: // preclass ::= UNICODE_TITLECASE_LETTER
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_TITLECASE_LETTER);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 77: // preclass ::= UNICODE_LOWERCASE_LETTER
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_LOWERCASE_LETTER);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 76: // preclass ::= UNICODE_UPPERCASE_LETTER
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_UPPERCASE_LETTER);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 75: // preclass ::= UNICODE_UNASSIGNED
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UNICODE_UNASSIGNED);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 74: // preclass ::= LOWERCLASS
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.LOWERCLASS);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 73: // preclass ::= UPPERCLASS
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.UPPERCLASS);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 72: // preclass ::= DIGITCLASS
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.DIGITCLASS);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 71: // preclass ::= LETTERCLASS
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.LETTERCLASS);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 70: // preclass ::= JLETTERDIGITCLASS
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.JLETTERDIGITCLASS);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 69: // preclass ::= JLETTERCLASS
- {
- Vector RESULT =null;
- RESULT = makePreClass(sym.JLETTERCLASS);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("preclass",14, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 68: // classcontentelem ::= CHAR
- {
- Interval RESULT =null;
- int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Character c = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Interval(c.charValue(), c.charValue());
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontentelem",10, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 67: // classcontentelem ::= CHAR DASH CHAR
- {
- Interval RESULT =null;
- int c1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int c1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- Character c1 = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
- int c2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int c2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Character c2 = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Interval(c1.charValue(), c2.charValue());
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontentelem",10, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 66: // classcontent ::= MACROUSE
- {
- Vector RESULT =null;
- int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- syntaxError(ErrorMessages.CHARCLASS_MACRO, identleft, identright);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 65: // classcontent ::= classcontent MACROUSE
- {
- Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- syntaxError(ErrorMessages.CHARCLASS_MACRO, identleft, identright);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 64: // classcontent ::= STRING
- {
- Vector RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- String s = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- RESULT = new Vector();
- for (int i = 0; i < s.length(); i++)
- RESULT.addElement(new Interval(s.charAt(i),s.charAt(i)));
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 63: // classcontent ::= classcontent STRING
- {
- Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- String s = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- for (int i = 0; i < s.length(); i++)
- list.addElement(new Interval(s.charAt(i),s.charAt(i)));
- RESULT = list;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 62: // classcontent ::= preclass
- {
- Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = list;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 61: // classcontent ::= classcontent preclass
- {
- Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int plistleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int plistright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Vector plist = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- for (Enumeration e = plist.elements(); e.hasMoreElements();)
- list.addElement(e.nextElement());
- RESULT = list;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 60: // classcontent ::= classcontentelem
- {
- Vector RESULT =null;
- int elemleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int elemright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Interval elem = (Interval)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- Vector list = new Vector();
- list.addElement(elem);
- RESULT = list;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 59: // classcontent ::= classcontent classcontentelem
- {
- Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int elemleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int elemright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Interval elem = (Interval)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- list.addElement(elem);
- RESULT = list;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("classcontent",13, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 58: // charclass ::= OPENCLASS HAT DASH classcontent CLOSECLASS
- {
- RegExp RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- list.addElement(new Interval('-','-'));
- charClasses.makeClassNot(list, Options.jlex && scanner.caseless);
- }
- catch (CharClassException e) {
- syntaxError(ErrorMessages.CHARSET_2_SMALL, closeleft, closeright);
- }
- RESULT = new RegExp1(sym.CCLASSNOT,list);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 57: // charclass ::= OPENCLASS DASH classcontent CLOSECLASS
- {
- RegExp RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- list.addElement(new Interval('-','-'));
- charClasses.makeClass(list, Options.jlex && scanner.caseless);
- }
- catch (CharClassException e) {
- syntaxError(ErrorMessages.CHARSET_2_SMALL, closeleft, closeright);
- }
- RESULT = new RegExp1(sym.CCLASS,list);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 56: // charclass ::= OPENCLASS HAT classcontent CLOSECLASS
- {
- RegExp RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- charClasses.makeClassNot(list, Options.jlex && scanner.caseless);
- }
- catch (CharClassException e) {
- syntaxError(ErrorMessages.CHARSET_2_SMALL, closeleft, closeright);
- }
- RESULT = new RegExp1(sym.CCLASSNOT,list);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 55: // charclass ::= OPENCLASS HAT CLOSECLASS
- {
- RegExp RESULT =null;
- int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- Vector list = new Vector();
- list.addElement(new Interval((char)0,CharClasses.maxChar));
- try {
- charClasses.makeClass(list, false);
- }
- catch (CharClassException e) {
- syntaxError(ErrorMessages.CHARSET_2_SMALL, closeleft, closeright);
- }
- RESULT = new RegExp1(sym.CCLASS,list);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 54: // charclass ::= OPENCLASS classcontent CLOSECLASS
- {
- RegExp RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int closeleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int closeright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Object close = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- charClasses.makeClass(list, Options.jlex && scanner.caseless);
- }
- catch (CharClassException e) {
- syntaxError(ErrorMessages.CHARSET_2_SMALL, closeleft, closeright);
- }
- RESULT = new RegExp1(sym.CCLASS,list);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 53: // charclass ::= OPENCLASS CLOSECLASS
- {
- RegExp RESULT =null;
-
- RESULT = new RegExp1(sym.CCLASS,null);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("charclass",8, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 52: // regexp ::= CHAR
- {
- RegExp RESULT =null;
- int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Character c = (Character)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- if ( scanner.caseless ) {
- charClasses.makeClass(c.charValue(), true);
- RESULT = new RegExp1(sym.CHAR_I, c);
- }
- else {
- charClasses.makeClass(c.charValue(), false);
- RESULT = new RegExp1(sym.CHAR, c);
- }
- }
- catch (CharClassException e) {
- syntaxError(ErrorMessages.CS2SMALL_CHAR, cleft, cright);
- }
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 51: // regexp ::= POINT
- {
- RegExp RESULT =null;
-
- Vector any = new Vector();
- any.addElement(new Interval('\n','\n'));
- // assumption: there is no upper case for \n
- charClasses.makeClass('\n', false);
- RESULT = new RegExp1(sym.CCLASSNOT, any);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 50: // regexp ::= STRING
- {
- RegExp RESULT =null;
- int strleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int strright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- String str = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- if ( scanner.caseless ) {
- charClasses.makeClass(str, true);
- RESULT = new RegExp1(sym.STRING_I, str);
- }
- else {
- charClasses.makeClass(str, false);
- RESULT = new RegExp1(sym.STRING, str);
- }
- }
- catch (CharClassException e) {
- syntaxError(ErrorMessages.CS2SMALL_STRING, strleft, strright);
- }
-
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 49: // regexp ::= preclass
- {
- RegExp RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- try {
- // assumption [correct?]: preclasses are already closed under case
- charClasses.makeClass(list, false);
- }
- catch (CharClassException e) {
- syntaxError(ErrorMessages.CHARSET_2_SMALL, listleft);
- }
- RESULT = new RegExp1(sym.CCLASS, list);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 48: // regexp ::= charclass
- {
- RegExp RESULT =null;
- int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- RegExp c = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = c;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 47: // regexp ::= MACROUSE
- {
- RegExp RESULT =null;
- int identleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int identright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- String ident = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- if ( !scanner.macroDefinition ) {
- if ( ! macros.markUsed(ident) )
- throw new ScannerException(scanner.file, ErrorMessages.MACRO_UNDECL,
- identleft, identright);
- }
- RESULT = new RegExp1(sym.MACROUSE, ident);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 46: // regexp ::= OPENBRACKET series CLOSEBRACKET
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = r;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 45: // regexp ::= regexp REPEAT REPEAT RBRACE
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
- int n1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int n1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- Integer n1 = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
- int n2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int n2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Integer n2 = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = makeRepeat(r, n1.intValue(), n2.intValue(), n1left, n2right);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 44: // regexp ::= regexp REPEAT RBRACE
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
- int nleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int nright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Integer n = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Object b = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = makeRepeat(r, n.intValue(), n.intValue(), bleft, bright);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 43: // regexp ::= regexp QUESTION
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = new RegExp1(sym.QUESTION, r);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 42: // regexp ::= regexp PLUS
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = new RegExp1(sym.PLUS, r);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 41: // regexp ::= regexp STAR
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = new RegExp1(sym.STAR, r);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("regexp",7, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 40: // nregexp ::= TILDE nregexp
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new RegExp1(sym.TILDE, r);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("nregexp",6, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 39: // nregexp ::= BANG nregexp
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new RegExp1(sym.BANG, r);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("nregexp",6, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 38: // nregexp ::= regexp
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = r;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("nregexp",6, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 37: // concs ::= nregexp
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = r;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("concs",5, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 36: // concs ::= concs nregexp
- {
- RegExp RESULT =null;
- int r1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int r1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r1 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int r2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int r2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- RegExp r2 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new RegExp2(sym.CONCAT, r1, r2);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("concs",5, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 35: // series ::= BAR
- {
- RegExp RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Object b = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- syntaxError(ErrorMessages.REGEXP_EXPECTED, bleft, bright);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("series",4, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 34: // series ::= concs
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = r;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("series",4, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 33: // series ::= series BAR concs
- {
- RegExp RESULT =null;
- int r1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int r1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- RegExp r1 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
- int r2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int r2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- RegExp r2 = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new RegExp2(sym.BAR, r1, r2);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("series",4, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 32: // hatOPT ::=
- {
- Boolean RESULT =null;
- RESULT = new Boolean(false);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("hatOPT",16, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 31: // hatOPT ::= HAT
- {
- Boolean RESULT =null;
- // assumption: there is no upper case for \n
- charClasses.makeClass('\n', false);
- RESULT = new Boolean(true);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("hatOPT",16, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 30: // states ::= IDENT COMMA
- {
- Vector RESULT =null;
- int cleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Object c = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- syntaxError(ErrorMessages.REGEXP_EXPECTED, cleft, cright+1);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("states",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 29: // states ::= IDENT
- {
- Vector RESULT =null;
- int idleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int idright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- String id = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- Vector list = new Vector();
- stateNumber = scanner.states.getNumber( id );
- if ( stateNumber != null )
- list.addElement( stateNumber );
- else {
- throw new ScannerException(scanner.file, ErrorMessages.LEXSTATE_UNDECL,
- idleft, idright);
- }
- RESULT = list;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("states",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 28: // states ::= IDENT COMMA states
- {
- Vector RESULT =null;
- int idleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int idright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- String id = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
-
- stateNumber = scanner.states.getNumber( id );
- if ( stateNumber != null )
- list.addElement( stateNumber );
- else {
- throw new ScannerException(scanner.file, ErrorMessages.LEXSTATE_UNDECL,
- idleft, idright);
- }
- RESULT = list;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("states",11, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 27: // statesOPT ::=
- {
- Vector RESULT =null;
- RESULT = new Vector();
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("statesOPT",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 26: // statesOPT ::= LESSTHAN states MORETHAN
- {
- Vector RESULT =null;
- int listleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int listright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector list = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = list;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("statesOPT",12, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 25: // actions ::= NOACTION
- {
- Action RESULT =null;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("actions",18, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 24: // actions ::= act
- {
- Action RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = a;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("actions",18, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 23: // act ::= REGEXPEND ACTION
- {
- Action RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = a;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("act",17, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 22: // lookahead ::= LOOKAHEAD series DOLLAR
- {
- RegExp RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp s = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = new RegExp2(sym.CONCAT, s, makeNL());
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("lookahead",9, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 21: // lookahead ::= LOOKAHEAD series
- {
- RegExp RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = r;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("lookahead",9, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 20: // lookahead ::= DOLLAR
- {
- RegExp RESULT =null;
- RESULT = makeNL();
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("lookahead",9, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 19: // rule ::= error
- {
- Integer RESULT =null;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 18: // rule ::= statesOPT EOFRULE ACTION
- {
- Integer RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- Vector s = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Integer(regExps.insert(s, a));
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 17: // rule ::= statesOPT hatOPT series lookahead NOACTION
- {
- Integer RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
- Vector s = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
- int bolleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
- int bolright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
- Boolean bol = (Boolean)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
- int lleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int lright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp l = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Object a = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- syntaxError(ErrorMessages.LOOKAHEAD_NEEDS_ACTION, aleft, aright+1);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 16: // rule ::= statesOPT hatOPT series lookahead act
- {
- Integer RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
- Vector s = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
- int bolleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
- int bolright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
- Boolean bol = (Boolean)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
- int lleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int lright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp l = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Integer(regExps.insert(rleft, s, r, a, bol, l));
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 15: // rule ::= statesOPT hatOPT series actions
- {
- Integer RESULT =null;
- int sleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
- int sright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
- Vector s = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
- int bolleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).left;
- int bolright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).right;
- Boolean bol = (Boolean)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-2)).value;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp r = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Action a = (Action)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Integer(regExps.insert(rleft, s, r, a, bol, null));
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rule",2, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 14: // rules ::= rule
- {
- Vector RESULT =null;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Integer r = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- RESULT = new Vector(); RESULT.addElement(r);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 13: // rules ::= LESSTHAN states MORETHAN LBRACE rules RBRACE
- {
- Vector RESULT =null;
- int statesleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
- int statesright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
- Vector states = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
- int rlistleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rlistright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector rlist = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-
- Enumeration rs = rlist.elements();
- while ( rs.hasMoreElements() ) {
- Integer elem = (Integer) rs.nextElement();
- // might be null for error case of "rule"
- if (elem != null) {
- regExps.addStates( elem.intValue(), states );
- }
- }
- RESULT = rlist;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-5)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 12: // rules ::= rules LESSTHAN states MORETHAN LBRACE rules RBRACE
- {
- Vector RESULT =null;
- int rlist1left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)).left;
- int rlist1right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)).right;
- Vector rlist1 = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)).value;
- int statesleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).left;
- int statesright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).right;
- Vector states = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-4)).value;
- int rlist2left = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rlist2right = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector rlist2 = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
-
- Enumeration rs = rlist2.elements();
- while ( rs.hasMoreElements() ) {
- Integer elem = (Integer) rs.nextElement();
- // might be null for error case of "rule"
- if (elem != null) {
- regExps.addStates( elem.intValue(), states );
- }
- rlist1.addElement( elem );
- }
- RESULT = rlist1;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-6)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 11: // rules ::= rules rule
- {
- Vector RESULT =null;
- int rlistleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int rlistright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- Vector rlist = (Vector)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- int rleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int rright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Integer r = (Integer)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- rlist.addElement(r); RESULT = rlist;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("rules",15, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 10: // macro ::= IDENT EQUALS
- {
- Object RESULT =null;
- int eleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).left;
- int eright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()).right;
- Object e = (Object)((java_cup.runtime.Symbol) CUP$LexParse$stack.peek()).value;
- syntaxError(ErrorMessages.REGEXP_EXPECTED, eleft, eright);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 9: // macro ::= IDENT EQUALS series REGEXPEND
- {
- Object RESULT =null;
- int nameleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).left;
- int nameright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).right;
- String name = (String)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)).value;
- int definitionleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int definitionright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- RegExp definition = (RegExp)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- macros.insert(name, definition);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 8: // macro ::= UNICODE
- {
- Object RESULT =null;
- charClasses.setMaxCharCode(0xFFFF);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 7: // macro ::= FULL
- {
- Object RESULT =null;
- charClasses.setMaxCharCode(255);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 6: // macro ::= ASCII
- {
- Object RESULT =null;
- charClasses.setMaxCharCode(127);
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macro",1, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 5: // macros ::= error
- {
- Object RESULT =null;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macros",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 4: // macros ::= macros macro
- {
- Object RESULT =null;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macros",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 3: // macros ::=
- {
- Object RESULT =null;
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("macros",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 2: // specification ::=
- {
- NFA RESULT =null;
-
- fatalError(ErrorMessages.NO_LEX_SPEC);
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("specification",3, ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 1: // specification ::= USERCODE macros DELIMITER rules
- {
- NFA RESULT =null;
-
- scanner.t.stop();
-
- Out.checkErrors();
-
- Out.time(ErrorMessages.PARSING_TOOK, t);
-
- macros.expand();
- Enumeration unused = macros.unused();
- while ( unused.hasMoreElements() ) {
- Out.warning("Macro \""+unused.nextElement()+"\" has been declared but never used.");
- }
-
- SemCheck.check(regExps, macros, scanner.file);
-
- regExps.checkActions();
- regExps.checkLookAheads();
-
- Out.checkErrors();
-
- if (Options.dump) charClasses.dump();
-
- Out.print("Constructing NFA : ");
-
- t.start();
- int num = regExps.getNum();
-
- RESULT = new NFA(charClasses.getNumClasses(),
- scanner, regExps, macros, charClasses);
-
- eofActions.setNumLexStates(scanner.states.number());
-
- for (int i = 0; i < num; i++) {
- if (regExps.isEOF(i))
- eofActions.add( regExps.getStates(i), regExps.getAction(i) );
- else
- RESULT.addRegExp(i);
- }
-
- if (scanner.standalone) RESULT.addStandaloneRule();
- t.stop();
-
- Out.time("");
- Out.time(ErrorMessages.NFA_TOOK, t);
-
-
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("specification",3, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-3)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- return CUP$LexParse$result;
-
- /*. . . . . . . . . . . . . . . . . . . .*/
- case 0: // $START ::= specification EOF
- {
- Object RESULT =null;
- int start_valleft = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).left;
- int start_valright = ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).right;
- NFA start_val = (NFA)((java_cup.runtime.Symbol) CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)).value;
- RESULT = start_val;
- CUP$LexParse$result = parser.getSymbolFactory().newSymbol("$START",0, ((java_cup.runtime.Symbol)CUP$LexParse$stack.elementAt(CUP$LexParse$top-1)), ((java_cup.runtime.Symbol)CUP$LexParse$stack.peek()), RESULT);
- }
- /* ACCEPT */
- CUP$LexParse$parser.done_parsing();
- return CUP$LexParse$result;
-
- /* . . . . . .*/
- default:
- throw new Exception(
- "Invalid action number found in internal parse table");
-
- }
- }
-}
-
diff --git a/tools/lexer/jflex-1.4/src/JFlex/LexScan.flex b/tools/lexer/jflex-1.4/src/JFlex/LexScan.flex
deleted file mode 100644
index d8f0e6e251d8..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/LexScan.flex
+++ /dev/null
@@ -1,613 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein aState
- */
- private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
-
- private static final String ZZ_ATTRIBUTE_PACKED_0 =
- "\2\1\15\0\2\1\1\11\4\1\1\11\2\1\1\11"+
- "\15\1\2\11\4\1\1\11\2\1\2\11\1\1\1\11"+
- "\2\1\7\11\4\1\2\11\1\1\1\11\3\1\1\11"+
- "\1\1\1\11\3\1\2\11\1\1\1\11\3\1\1\11"+
- "\1\1\1\11\1\1\1\11\1\1\1\11\2\1\3\0"+
- "\2\11\1\0\1\11\1\0\2\1\1\0\15\1\3\0"+
- "\1\11\3\1\2\0\1\11\1\1\1\11\4\1\5\11"+
- "\1\0\1\1\2\0\1\11\1\1\3\0\1\11\1\1"+
- "\10\0\1\11\4\1\6\11\3\0\1\11\5\0\1\1"+
- "\1\0\1\1\1\11\1\1\1\11\2\1\1\11\35\1"+
- "\3\0\6\1\1\0\1\11\1\0\1\1\6\0\2\11"+
- "\1\0\1\1\4\0\1\11\1\0\1\1\1\11\1\1"+
- "\1\11\3\0\42\1\3\0\2\1\1\0\1\11\1\1"+
- "\15\0\1\11\1\1\3\0\46\1\2\11\1\0\2\1"+
- "\1\0\1\1\14\0\1\1\5\0\11\1\1\0\31\1"+
- "\1\11\2\1\10\0\2\1\10\0\1\1\1\11\3\0"+
- "\12\1\1\0\17\1\1\0\7\1\7\0\2\1\3\0"+
- "\1\1\6\0\1\1\1\11\4\0\13\1\4\0\22\1"+
- "\1\11\7\0\1\1\6\0\1\1\13\0\10\1\3\0"+
- "\15\1\1\0\2\1\1\0\5\1\5\0\2\11\2\1"+
- "\4\0\2\1\7\0\1\1\1\11\1\0\12\1\1\0"+
- "\1\1\1\0\7\1\2\0\1\1\1\0\2\1\3\0"+
- "\1\11\2\0\1\1\2\0\2\1\4\0\1\1\2\0"+
- "\2\1\7\0\4\1\1\0\1\1\1\0\1\1\1\0"+
- "\3\1\2\0\11\1\1\0\1\1\3\0\1\1\1\0"+
- "\2\1\20\0\1\11\1\0\4\1\3\0\4\1\3\0"+
- "\1\1\1\11\1\0\4\1\3\0\2\1\2\0\10\1"+
- "\41\0\3\1\5\0\3\1\1\0\1\1\1\11\1\0"+
- "\6\1\3\0\10\1\33\0\2\11\4\0\1\1\3\0"+
- "\2\1\1\11\1\1\1\0\1\1\1\11\1\0\5\1"+
- "\1\0\2\1\1\0\1\1\35\0\1\1\2\0\1\1"+
- "\1\11\2\1\74\0\1\11\3\1\51\0\1\11\44\0"+
- "\1\11\62\0\1\11\14\0\1\11\57\0\2\11\7\0"+
- "\3\11\33\0\1\11\17\0\1\11\2\0\1\11\20\0"+
- "\1\11\3\0\2\11\2\0\2\11\3\0\1\11\1\0"+
- "\2\11\2\0\1\11\5\0\1\11\1\0\1\11\1\0"+
- "\1\11\16\0\1\11\5\0\1\11\2\0\1\11\3\0"+
- "\1\11\1\0\1\11\1\0\1\11";
-
- private static int [] zzUnpackAttribute() {
- int [] result = new int[1299];
- int offset = 0;
- offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackAttribute(String packed, int offset, int [] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int count = packed.charAt(i++);
- int value = packed.charAt(i++);
- do result[j++] = value; while (--count > 0);
- }
- return j;
- }
-
- /** the input device */
- private java.io.Reader zzReader;
-
- /** the current state of the DFA */
- private int zzState;
-
- /** the current lexical state */
- private int zzLexicalState = YYINITIAL;
-
- /** this buffer contains the current text to be matched and is
- the source of the yytext() string */
- private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
-
- /** the textposition at the last accepting state */
- private int zzMarkedPos;
-
- /** the current text position in the buffer */
- private int zzCurrentPos;
-
- /** startRead marks the beginning of the yytext() string in the buffer */
- private int zzStartRead;
-
- /** endRead marks the last character in the buffer, that has been read
- from input */
- private int zzEndRead;
-
- /** number of newlines encountered up to the start of the matched text */
- private int yyline;
-
- /** the number of characters up to the start of the matched text */
- private int yychar;
-
- /**
- * the number of characters from the last newline up to the start of the
- * matched text
- */
- private int yycolumn;
-
- /**
- * zzAtBOL == true <=> the scanner is currently at the beginning of a line
- */
- private boolean zzAtBOL = true;
-
- /** zzAtEOF == true <=> the scanner is at the EOF */
- private boolean zzAtEOF;
-
- /** denotes if the user-EOF-code has already been executed */
- private boolean zzEOFDone;
-
- /** the stack of open (nested) input streams to read from */
- private java.util.Stack zzStreams = new java.util.Stack();
-
- /**
- * inner class used to store info for nested
- * input streams
- */
- private static final class ZzFlexStreamInfo {
- java.io.Reader zzReader;
- int zzEndRead;
- int zzStartRead;
- int zzCurrentPos;
- int zzMarkedPos;
- int yyline;
- int yycolumn;
- char [] zzBuffer;
- boolean zzAtEOF;
- boolean zzEOFDone;
-
- /** sets all values stored in this class */
- ZzFlexStreamInfo(java.io.Reader zzReader, int zzEndRead, int zzStartRead,
- int zzCurrentPos, int zzMarkedPos,
- char [] zzBuffer, boolean zzAtEOF, int yyline, int yycolumn) {
- this.zzReader = zzReader;
- this.zzEndRead = zzEndRead;
- this.zzStartRead = zzStartRead;
- this.zzCurrentPos = zzCurrentPos;
- this.zzMarkedPos = zzMarkedPos;
- this.zzBuffer = zzBuffer;
- this.zzAtEOF = zzAtEOF;
- this.zzEOFDone = zzEOFDone;
- this.yyline = yyline;
- this.yycolumn = yycolumn;
- }
- }
-
- /* user code: */
- int balance = 0;
- int commentbalance = 0;
- int action_line = 0;
- int bufferSize = 16384;
-
- File file;
- Stack files = new Stack();
-
- StringBuffer userCode = new StringBuffer();
-
- String classCode;
- String initCode;
- String initThrow;
- String eofCode;
- String eofThrow;
- String lexThrow;
- String eofVal;
- String scanErrorException;
- String cupSymbol = "sym";
-
- StringBuffer actionText = new StringBuffer();
- StringBuffer string = new StringBuffer();
-
- boolean charCount;
- boolean lineCount;
- boolean columnCount;
- boolean cupCompatible;
- boolean cupDebug;
- boolean isInteger;
- boolean isIntWrap;
- boolean isYYEOF;
- boolean notUnix;
- boolean isPublic;
- boolean isFinal;
- boolean isAbstract;
- boolean bolUsed;
- boolean standalone;
- boolean debugOption;
- boolean useRowMap = Options.gen_method == Options.PACK || Options.gen_method == Options.TABLE;
- boolean packed = Options.gen_method == Options.PACK;
- boolean caseless;
- boolean inclusive_states;
- boolean eofclose;
- boolean emitInputStreamCtor = Options.emitInputStreamCtor;
-
- String isImplementing;
- String isExtending;
- String className = "Yylex";
- String functionName;
- String tokenType;
- String visibility = "public";
-
- Vector /* String */ ctorArgs = new Vector();
- Vector /* String */ ctorTypes = new Vector();
-
- LexicalStates states = new LexicalStates();
-
- Vector actions = new Vector();
-
- private int nextState;
-
- boolean macroDefinition;
-
- Timer t = new Timer();
-
- public int currentLine() {
- return yyline;
- }
-
- public void setFile(File file) {
- this.file = file;
- }
-
- private Symbol symbol(int type, Object value) {
- return new Symbol(type, yyline, yycolumn, value);
- }
-
- private Symbol symbol(int type) {
- return new Symbol(type, yyline, yycolumn);
- }
-
- // updates line and column count to the beginning of the first
- // non whitespace character in yytext, but leaves yyline+yycolumn
- // untouched
- private Symbol symbol_countUpdate(int type, Object value) {
- int lc = yyline;
- int cc = yycolumn;
- String text = yytext();
-
- for (int i=0; i < text.length(); i++) {
- char c = text.charAt(i);
-
- if (c != '\n' && c != '\r' && c != ' ' && c != '\t' )
- return new Symbol(type, lc, cc, value);
-
- if (c == '\n') {
- lc++;
- cc = 0;
- }
- else
- cc++;
- }
-
- return new Symbol(type, yyline, yycolumn, value);
- }
-
- private String makeMacroIdent() {
- String matched = yytext().trim();
- return matched.substring(1, matched.length()-1).trim();
- }
-
- public static String conc(Object a, Object b) {
- if (a == null && b == null) return null;
- if (a == null) return b.toString();
- if (b == null) return a.toString();
-
- return a.toString()+b.toString();
- }
-
- public static String concExc(Object a, Object b) {
- if (a == null && b == null) return null;
- if (a == null) return b.toString();
- if (b == null) return a.toString();
-
- return a.toString()+", "+b.toString();
- }
-
-
- /**
- * Creates a new scanner
- * There is also a java.io.InputStream version of this constructor.
- *
- * @param in the java.io.Reader to read input from.
- */
- public LexScan(java.io.Reader in) {
- states.insert("YYINITIAL", true);
- this.zzReader = in;
- }
-
- /**
- * Creates a new scanner.
- * There is also java.io.Reader version of this constructor.
- *
- * @param in the java.io.Inputstream to read input from.
- */
- public LexScan(java.io.InputStream in) {
- this(new java.io.InputStreamReader(in));
- }
-
- /**
- * Unpacks the compressed character translation table.
- *
- * @param packed the packed character translation table
- * @return the unpacked character translation table
- */
- private static char [] zzUnpackCMap(String packed) {
- char [] map = new char[0x10000];
- int i = 0; /* index in packed string */
- int j = 0; /* index in unpacked array */
- while (i < 1788) {
- int count = packed.charAt(i++);
- char value = packed.charAt(i++);
- do map[j++] = value; while (--count > 0);
- }
- return map;
- }
-
-
- /**
- * Refills the input buffer.
- *
- * @return false, iff there was new input.
- *
- * @exception java.io.IOException if any I/O-Error occurs
- */
- private boolean zzRefill() throws java.io.IOException {
-
- /* first: make room (if you can) */
- if (zzStartRead > 0) {
- System.arraycopy(zzBuffer, zzStartRead,
- zzBuffer, 0,
- zzEndRead-zzStartRead);
-
- /* translate stored positions */
- zzEndRead-= zzStartRead;
- zzCurrentPos-= zzStartRead;
- zzMarkedPos-= zzStartRead;
- zzStartRead = 0;
- }
-
- /* is the buffer big enough? */
- if (zzCurrentPos >= zzBuffer.length) {
- /* if not: blow it up */
- char newBuffer[] = new char[zzCurrentPos*2];
- System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
- zzBuffer = newBuffer;
- }
-
- /* finally: fill the buffer with new input */
- int numRead = zzReader.read(zzBuffer, zzEndRead,
- zzBuffer.length-zzEndRead);
-
- if (numRead > 0) {
- zzEndRead+= numRead;
- return false;
- }
- // unlikely but not impossible: read 0 characters, but not at end of stream
- if (numRead == 0) {
- int c = zzReader.read();
- if (c == -1) {
- return true;
- } else {
- zzBuffer[zzEndRead++] = (char) c;
- return false;
- }
- }
-
- // numRead < 0)
- return true;
- }
-
-
- /**
- * Closes the input stream.
- */
- public final void yyclose() throws java.io.IOException {
- zzAtEOF = true; /* indicate end of file */
- zzEndRead = zzStartRead; /* invalidate buffer */
-
- if (zzReader != null)
- zzReader.close();
- }
-
-
- /**
- * Stores the current input stream on a stack, and
- * reads from a new stream. Lexical state, line,
- * char, and column counting remain untouched.
- *
- * The current input stream can be restored with
- * yypopstream (usually in an <null if no such state has been declared.
- */
- public Integer getNumber(String name) {
- return (Integer) states.get(name);
- }
-
-
- /**
- * returns the number of declared states
- */
- public int number() {
- return numStates;
- }
-
-
- /**
- * returns the names of all states
- */
- public Enumeration names() {
- return states.keys();
- }
-
- /**
- * returns the code of all inclusive states
- */
- public Enumeration getInclusiveStates() {
- return inclusive.elements();
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/MacroException.java b/tools/lexer/jflex-1.4/src/JFlex/MacroException.java
deleted file mode 100644
index 56ff910793cb..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/MacroException.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein true, iff the macro name has not been
- * stored before.
- */
- public boolean insert(String name, RegExp definition) {
-
- if (Options.DEBUG)
- Out.debug("inserting macro "+name+" with definition :"+Out.NL+definition); //$NON-NLS-1$ //$NON-NLS-2$
-
- used.put(name, Boolean.FALSE);
- return macros.put(name,definition) == null;
- }
-
-
- /**
- * Marks a makro as used.
- *
- * @return true, iff the macro name has been
- * stored before.
- */
- public boolean markUsed(String name) {
- return used.put(name, Boolean.TRUE) != null;
- }
-
-
- /**
- * Tests if a macro has been used.
- *
- * @return true, iff the macro has been used in
- * a regular expression.
- */
- public boolean isUsed(String name) {
- return ((Boolean)used.get(name)).booleanValue();
- }
-
-
- /**
- * Returns all unused macros.
- *
- * @return the enumeration of macro names that have not been used.
- */
- public Enumeration unused() {
-
- Vector unUsed = new Vector();
-
- Enumeration names = used.keys();
- while ( names.hasMoreElements() ) {
- String name = (String) names.nextElement();
- Boolean isUsed = (Boolean) used.get( name );
- if ( !isUsed.booleanValue() ) unUsed.addElement(name);
- }
-
- return unUsed.elements();
- }
-
-
- /**
- * Fetches the definition of the macro with the specified name,
- * null if
- * no macro with the specified name has been stored.
- *
- * @see JFlex.Macros#expand
- */
- public RegExp getDefinition(String name) {
- return (RegExp) macros.get(name);
- }
-
-
- /**
- * Expands all stored macros, so that getDefinition always returns
- * a defintion that doesn't contain any macro usages.
- *
- * @throws MacroException if there is a cycle in the macro usage graph.
- */
- public void expand() throws MacroException {
-
- Enumeration names;
-
- names = macros.keys();
-
- while ( names.hasMoreElements() ) {
- String name = (String) names.nextElement();
- if ( isUsed(name) )
- macros.put(name, expandMacro(name, getDefinition(name)));
- // this put doesn't get a new key, so only a new value
- // is set for the key "name" (without changing the enumeration
- // "names"!)
- }
- }
-
-
- /**
- * Expands the specified macro by replacing each macro usage
- * with the stored definition.
- *
- * @param name the name of the macro to expand (for detecting cycles)
- * @param definition the definition of the macro to expand
- *
- * @return the expanded definition of the macro.
- *
- * @throws MacroException when an error (such as a cyclic definition)
- * occurs during expansion
- */
- private RegExp expandMacro(String name, RegExp definition) throws MacroException {
-
- // Out.print("checking macro "+name);
- // Out.print("definition is "+definition);
-
- switch ( definition.type ) {
- case sym.BAR:
- case sym.CONCAT:
- RegExp2 binary = (RegExp2) definition;
- binary.r1 = expandMacro(name, binary.r1);
- binary.r2 = expandMacro(name, binary.r2);
- return definition;
-
- case sym.STAR:
- case sym.PLUS:
- case sym.QUESTION:
- case sym.BANG:
- case sym.TILDE:
- RegExp1 unary = (RegExp1) definition;
- unary.content = expandMacro(name, (RegExp) unary.content);
- return definition;
-
- case sym.MACROUSE:
- String usename = (String) ((RegExp1) definition).content;
-
- if ( name.equals(usename) )
- throw new MacroException(ErrorMessages.get(ErrorMessages.MACRO_CYCLE, name));
-
- RegExp usedef = getDefinition(usename);
-
- if ( usedef == null )
- throw new MacroException(ErrorMessages.get(ErrorMessages.MACRO_DEF_MISSING, usename, name));
-
- markUsed(usename);
-
- return expandMacro(name, usedef);
-
- case sym.STRING:
- case sym.STRING_I:
- case sym.CHAR:
- case sym.CHAR_I:
- case sym.CCLASS:
- case sym.CCLASSNOT:
- return definition;
-
- default:
- throw new MacroException("unknown expression type "+definition.type+" in macro expansion"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/Main.java b/tools/lexer/jflex-1.4/src/JFlex/Main.java
deleted file mode 100644
index 5b7068692b2d..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/Main.java
+++ /dev/null
@@ -1,342 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein argv or
- * pops up a window to choose a file, when argv doesn't have
- * any file entries.
- *
- * @param argv the commandline.
- */
- public static void main(String argv[]) {
- try {
- generate(argv);
- }
- catch (GeneratorException e) {
- Out.statistics();
- System.exit(1);
- }
- catch (SilentExit e) {
- System.exit(1);
- }
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/Messages.properties b/tools/lexer/jflex-1.4/src/JFlex/Messages.properties
deleted file mode 100644
index c90ff55a95cd..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/Messages.properties
+++ /dev/null
@@ -1,74 +0,0 @@
-UNTERMINATED_STR = Unterminated string at end of line.
-EOF_WO_ACTION = <true, iff the specified set of states
- * contains a final state.
- *
- * @param set the set of states that is tested for final states.
- */
- private boolean containsFinal(StateSet set) {
- states.reset(set);
-
- while ( states.hasMoreElements() )
- if ( isFinal[states.nextElement()] ) return true;
-
- return false;
- }
-
-
- /**
- * Returns true, iff the specified set of states
- * contains a pushback-state.
- *
- * @param set the set of states that is tested for pushback-states.
- private boolean containsPushback(StateSet set) {
- states.reset(set);
-
- while ( states.hasMoreElements() )
- if ( isPushback[states.nextElement()] ) return true;
-
- return false;
- }
- */
-
- /**
- * Returns the action with highest priority in the specified
- * set of states.
- *
- * @param set the set of states for which to determine the action
- */
- private Action getAction(StateSet set) {
-
- states.reset(set);
-
- Action maxAction = null;
-
- Out.debug("Determining action of : "+set);
-
- while ( states.hasMoreElements() ) {
-
- Action currentAction = action[ states.nextElement() ];
-
- if ( currentAction != null ) {
- if (maxAction == null)
- maxAction = currentAction;
- else
- maxAction = maxAction.getHigherPriority(currentAction);
- }
-
- }
-
- return maxAction;
- }
-
-
- /**
- * Calculates the epsilon closure for a specified set of states.
- *
- * The epsilon closure for set a is the set of states that can be reached
- * by epsilon edges from a.
- *
- * @param set the set of states to calculate the epsilon closure for
- *
- * @return the epsilon closure of the specified set of states
- * in this NFA
- */
- private StateSet closure(int startState) {
-
- // Out.debug("Calculating closure of "+set);
-
- StateSet notvisited = tempStateSet;
- StateSet closure = new StateSet(numStates,startState);
-
- notvisited.clear();
- notvisited.addState(startState);
-
- while ( notvisited.containsElements() ) {
- // Out.debug("closure is now "+closure);
- // Out.debug("notvisited is "+notvisited);
- int state = notvisited.getAndRemoveElement();
- // Out.debug("removed element "+state+" of "+notvisited);
- // Out.debug("epsilon[states] = "+epsilon[state]);
- notvisited.add(closure.complement(epsilon[state]));
- closure.add(epsilon[state]);
- }
-
- // Out.debug("Closure is : "+closure);
-
- return closure;
- }
-
- /**
- * Returns the epsilon closure of a set of states
- */
- private StateSet closure(StateSet startStates) {
- StateSet result = new StateSet(numStates);
-
- if (startStates != null) {
- states.reset(startStates);
- while (states.hasMoreElements())
- result.add( closure(states.nextElement()) );
- }
-
- return result;
- }
-
-
- private void epsilonFill() {
- for (int i = 0; i < numStates; i++) {
- epsilon[i] = closure(i);
- }
- }
-
- /**
- * Calculates the set of states that can be reached from another
- * set of states start with an specified input
- * character input
- *
- * @param start the set of states to start from
- * @param input the input character for which to search the next states
- *
- * @return the set of states that are reached from start
- * via input
- */
- private StateSet DFAEdge(StateSet start, char input) {
- // Out.debug("Calculating DFAEdge for state set "+start+" and input '"+input+"'");
-
- tempStateSet.clear();
-
- states.reset(start);
- while ( states.hasMoreElements() )
- tempStateSet.add( table[states.nextElement()][input] );
-
- StateSet result = new StateSet(tempStateSet);
-
- states.reset(tempStateSet);
- while ( states.hasMoreElements() )
- result.add( epsilon[states.nextElement()] );
-
- // Out.debug("DFAEdge is : "+result);
-
- return result;
- }
-
-
- /**
- * Returns an DFA that accepts the same language as this NFA.
- * This DFA is usually not minimal.
- */
- public DFA getDFA() {
-
- Hashtable dfaStates = new Hashtable(numStates);
- Vector dfaVector = new Vector(numStates);
-
- DFA dfa = new DFA(numEntryStates(), numInput, numLexStates);
-
- int numDFAStates = 0;
- int currentDFAState = 0;
-
- Out.println("Converting NFA to DFA : ");
-
- epsilonFill();
-
- StateSet currentState, newState;
-
- // create the initial states of the DFA
- for ( int i = 0; i < numEntryStates(); i++ ) {
- newState = epsilon[i];
-
- dfaStates.put(newState, new Integer(numDFAStates));
- dfaVector.addElement(newState);
-
- dfa.setEntryState( i, numDFAStates );
-
- dfa.setFinal( numDFAStates, containsFinal(newState) );
- dfa.setAction( numDFAStates, getAction(newState) );
-
- numDFAStates++;
- }
-
- numDFAStates--;
-
- if (Options.DEBUG)
- Out.debug("DFA start states are :"+Out.NL+dfaStates+Out.NL+Out.NL+"ordered :"+Out.NL+dfaVector);
-
- currentDFAState = 0;
-
- StateSet tempStateSet = NFA.tempStateSet;
- StateSetEnumerator states = NFA.states;
-
- // will be reused
- newState = new StateSet(numStates);
-
- while ( currentDFAState <= numDFAStates ) {
-
- currentState = (StateSet) dfaVector.elementAt(currentDFAState);
-
- for (char input = 0; input < numInput; input++) {
-
- // newState = DFAEdge(currentState, input);
-
- // inlining DFAEdge for performance:
-
- // Out.debug("Calculating DFAEdge for state set "+currentState+" and input '"+input+"'");
-
- tempStateSet.clear();
- states.reset(currentState);
- while ( states.hasMoreElements() )
- tempStateSet.add( table[states.nextElement()][input] );
-
- newState.copy(tempStateSet);
-
- states.reset(tempStateSet);
- while ( states.hasMoreElements() )
- newState.add( epsilon[states.nextElement()] );
-
- // Out.debug("DFAEdge is : "+newState);
-
-
- if ( newState.containsElements() ) {
-
- // Out.debug("DFAEdge for input "+(int)input+" and state set "+currentState+" is "+newState);
-
- // Out.debug("Looking for state set "+newState);
- Integer nextDFAState = (Integer) dfaStates.get(newState);
-
- if ( nextDFAState != null ) {
- // Out.debug("FOUND!");
- dfa.addTransition(currentDFAState, input, nextDFAState.intValue());
- }
- else {
- if (Options.progress) Out.print(".");
- // Out.debug("NOT FOUND!");
- // Out.debug("Table was "+dfaStates);
- numDFAStates++;
-
- // make a new copy of newState to store in dfaStates
- StateSet storeState = new StateSet(newState);
-
- dfaStates.put(storeState, new Integer(numDFAStates));
- dfaVector.addElement(storeState);
-
- dfa.addTransition(currentDFAState, input, numDFAStates);
- dfa.setFinal( numDFAStates, containsFinal(storeState) );
- dfa.setAction( numDFAStates, getAction(storeState) );
- }
- }
- }
-
- currentDFAState++;
- }
-
- if (Options.verbose) Out.println("");
-
- return dfa;
- }
-
-
- public void dumpTable() {
- Out.dump(toString());
- }
-
- public String toString() {
- StringBuffer result = new StringBuffer();
-
- for (int i=0; i < numStates; i++) {
- result.append("State");
- if ( isFinal[i] ) {
- result.append("[FINAL");
- String l = action[i].lookString();
- if (!l.equals("")) {
- result.append(", ");
- result.append(l);
- }
- result.append("]");
- }
- result.append(" "+i+Out.NL);
-
- for (char input = 0; input < numInput; input++) {
- if ( table[i][input] != null && table[i][input].containsElements() )
- result.append(" with "+((int) input)+" in "+table[i][input]+Out.NL);
- }
-
- if ( epsilon[i] != null && epsilon[i].containsElements() )
- result.append(" with epsilon in "+epsilon[i]+Out.NL);
- }
-
- return result.toString();
- }
-
- public void writeDot(File file) {
- try {
- PrintWriter writer = new PrintWriter(new FileWriter(file));
- writer.println(dotFormat());
- writer.close();
- }
- catch (IOException e) {
- Out.error(ErrorMessages.FILE_WRITE, file);
- throw new GeneratorException();
- }
- }
-
- public String dotFormat() {
- StringBuffer result = new StringBuffer();
-
- result.append("digraph NFA {"+Out.NL);
- result.append("rankdir = LR"+Out.NL);
-
- for (int i=0; i < numStates; i++) {
- if ( isFinal[i] ) {
- result.append(i);
- result.append(" [shape = doublecircle]");
- result.append(Out.NL);
- }
- }
-
- for (int i=0; i < numStates; i++) {
- for (int input = 0; input < numInput; input++) {
- if ( table[i][input] != null ) {
- StateSetEnumerator states = table[i][input].states();
-
- while (states.hasMoreElements()) {
- int s = states.nextElement();
- result.append(i+" -> "+s);
- result.append(" [label=\""+classes.toString(input)+"\"]"+Out.NL);
- }
- }
- }
- if ( epsilon[i] != null ) {
- StateSetEnumerator states = epsilon[i].states();
- while (states.hasMoreElements()) {
- int s = states.nextElement();
- result.append(i+" -> "+s+" [style=dotted]"+Out.NL);
- }
- }
- }
-
- result.append("}"+Out.NL);
-
- return result.toString();
- }
-
-
- //-----------------------------------------------------------------------
- // Functions for constructing NFAs out of regular expressions.
-
- private void insertLetterNFA(boolean caseless, char letter, int start, int end) {
- if (caseless) {
- int lower = classes.getClassCode(Character.toLowerCase(letter));
- int upper = classes.getClassCode(Character.toUpperCase(letter));
- addTransition(start, lower, end);
- if (upper != lower) addTransition(start, upper, end);
- }
- else {
- addTransition(start, classes.getClassCode(letter), end);
- }
- }
-
- private IntPair insertStringNFA(boolean caseless, String letters) {
- int start = numStates;
- int i;
-
- for (i = 0; i < letters.length(); i++) {
- if (caseless) {
- char c = letters.charAt(i);
- int lower = classes.getClassCode(Character.toLowerCase(c));
- int upper = classes.getClassCode(Character.toUpperCase(c));
- addTransition(i+start, lower, i+start+1);
- if (upper != lower) addTransition(i+start, upper, i+start+1);
- }
- else {
- addTransition(i+start, classes.getClassCode(letters.charAt(i)), i+start+1);
- }
- }
-
- return new IntPair(start, i+start);
- }
-
-
- private void insertClassNFA(Vector intervalls, int start, int end) {
- // empty char class is ok:
- if (intervalls == null) return;
-
- int [] cl = classes.getClassCodes(intervalls);
- for (int i = 0; i < cl.length; i++)
- addTransition(start, cl[i], end);
- }
-
- private void insertNotClassNFA(Vector intervalls, int start, int end) {
- int [] cl = classes.getNotClassCodes(intervalls);
-
- for (int i = 0; i < cl.length; i++)
- addTransition(start, cl[i], end);
- }
-
-
- /**
- * Constructs an NFA accepting the complement of the language
- * of a given NFA.
- *
- * Converts the NFA into a DFA, then negates that DFA.
- * Exponential state blowup possible and common.
- *
- * @param the NFA to construct the complement for.
- *
- * @return a pair of integers denoting the index of start
- * and end state of the complement NFA.
- */
- private IntPair complement(IntPair nfa) {
-
- if (Options.DEBUG) {
- Out.debug("complement for "+nfa);
- Out.debug("NFA is :"+Out.NL+this);
- }
-
- int dfaStart = nfa.end+1;
-
- // FIXME: only need epsilon closure of states reachable from nfa.start
- epsilonFill();
-
- Hashtable dfaStates = new Hashtable(numStates);
- Vector dfaVector = new Vector(numStates);
-
- int numDFAStates = 0;
- int currentDFAState = 0;
-
- StateSet currentState, newState;
-
- newState = epsilon[nfa.start];
- dfaStates.put(newState, new Integer(numDFAStates));
- dfaVector.addElement(newState);
-
- if (Options.DEBUG)
- Out.debug("pos DFA start state is :"+Out.NL+dfaStates+Out.NL+Out.NL+"ordered :"+Out.NL+dfaVector);
-
- currentDFAState = 0;
-
- while ( currentDFAState <= numDFAStates ) {
-
- currentState = (StateSet) dfaVector.elementAt(currentDFAState);
-
- for (char input = 0; input < numInput; input++) {
- newState = DFAEdge(currentState, input);
-
- if ( newState.containsElements() ) {
-
- // Out.debug("DFAEdge for input "+(int)input+" and state set "+currentState+" is "+newState);
-
- // Out.debug("Looking for state set "+newState);
- Integer nextDFAState = (Integer) dfaStates.get(newState);
-
- if ( nextDFAState != null ) {
- // Out.debug("FOUND!");
- addTransition(dfaStart+currentDFAState, input, dfaStart+nextDFAState.intValue());
- }
- else {
- if (Options.dump) Out.print("+");
- // Out.debug("NOT FOUND!");
- // Out.debug("Table was "+dfaStates);
- numDFAStates++;
-
- dfaStates.put(newState, new Integer(numDFAStates));
- dfaVector.addElement(newState);
-
- addTransition(dfaStart+currentDFAState, input, dfaStart+numDFAStates);
- }
- }
- }
-
- currentDFAState++;
- }
-
- // We have a dfa accepting the positive regexp.
-
- // Now the complement:
- if (Options.DEBUG)
- Out.debug("dfa finished, nfa is now :"+Out.NL+this);
-
- int start = dfaStart+numDFAStates+1;
- int error = dfaStart+numDFAStates+2;
- int end = dfaStart+numDFAStates+3;
-
- addEpsilonTransition(start, dfaStart);
-
- for (int i = 0; i < numInput; i++)
- addTransition(error, i, error);
-
- addEpsilonTransition(error, end);
-
- for (int s = 0; s <= numDFAStates; s++) {
- currentState = (StateSet) dfaVector.elementAt(s);
-
- currentDFAState = dfaStart+s;
-
- // if it was not a final state, it is now in the complement
- if (!currentState.isElement(nfa.end))
- addEpsilonTransition(currentDFAState, end);
-
- // all inputs not present (formerly leading to an implicit error)
- // now lead to an explicit (final) state accepting everything.
- for (int i = 0; i < numInput; i++)
- if (table[currentDFAState][i] == null)
- addTransition(currentDFAState, i, error);
- }
-
- // eliminate transitions leading to dead states
- if (live == null || live.length < numStates) {
- live = new boolean [2*numStates];
- visited = new boolean [2*numStates];
- }
-
- removeDead(dfaStart, end);
-
- if (Options.DEBUG)
- Out.debug("complement finished, nfa ("+start+","+end+") is now :"+this);
-
- return new IntPair(start, end);
- }
-
- // "global" data for use in method removeDead only:
- // live[s] == false <=> no final state can be reached from s
- private boolean [] live; // = new boolean [estSize];
- private boolean [] visited; // = new boolean [estSize];
-
- private void removeDead(int start, int end) {
- // Out.debug("removeDead ("+start+")");
-
- if ( visited[start] || live[start] ) return;
- visited[start] = true;
-
- // Out.debug("not yet visited");
-
- if (closure(start).isElement(end))
- live[start] = true;
-
- // Out.debug("is final :"+live[start]);
-
- for (int i = 0; i < numInput; i++) {
- StateSet nextState = closure(table[start][i]);
- StateSetEnumerator states = nextState.states();
- while (states.hasMoreElements()) {
- int next = states.nextElement();
-
- if (next != start) {
- removeDead(next,end);
-
- if (live[next])
- live[start] = true;
- else
- table[start][i] = null;
- }
- }
- }
-
- StateSet nextState = closure(epsilon[start]);
- StateSetEnumerator states = nextState.states();
- while (states.hasMoreElements()) {
- int next = states.nextElement();
-
- if (next != start) {
- removeDead(next,end);
-
- if (live[next])
- live[start] = true;
- }
- }
-
- // Out.debug("state "+start+" is live :"+live[start]);
- }
-
-
- /**
- * Constructs a two state NFA for char class regexps,
- * such that the NFA has
- *
- * exactly one start state,
- * exactly one end state,
- * no transitions leading out of the end state
- * no transitions leading into the start state
- *
- * Assumes that regExp.isCharClass(macros) == true
- *
- * @param regExp the regular expression to construct the
- * NFA for
- *
- * @return a pair of integers denoting the index of start
- * and end state of the NFA.
- */
- private void insertCCLNFA(RegExp regExp, int start, int end) {
- switch (regExp.type) {
-
- case sym.BAR:
- RegExp2 r = (RegExp2) regExp;
- insertCCLNFA(r.r1, start, end);
- insertCCLNFA(r.r2, start, end);
- return;
-
- case sym.CCLASS:
- insertClassNFA( (Vector) ((RegExp1) regExp).content, start, end);
- return;
-
- case sym.CCLASSNOT:
- insertNotClassNFA( (Vector) ((RegExp1) regExp).content, start, end);
- return;
-
- case sym.CHAR:
- insertLetterNFA(
- false, ((Character) ((RegExp1) regExp).content).charValue(),
- start, end);
- return;
-
- case sym.CHAR_I:
- insertLetterNFA(
- true, ((Character) ((RegExp1) regExp).content).charValue(),
- start, end);
- return;
-
- case sym.MACROUSE:
- insertCCLNFA(macros.getDefinition((String) ((RegExp1) regExp).content),
- start, end);
- return;
- }
-
- throw new Error("Unknown expression type "+regExp.type+" in NFA construction");
- }
-
-
- /**
- * Constructs an NFA for regExp such that the NFA has
- *
- * exactly one start state,
- * exactly one end state,
- * no transitions leading out of the end state
- * no transitions leading into the start state
- *
- * @param regExp the regular expression to construct the
- * NFA for
- *
- * @return a pair of integers denoting the index of start
- * and end state of the NFA.
- */
- public IntPair insertNFA(RegExp regExp) {
-
- IntPair nfa1, nfa2;
- int start, end;
- RegExp2 r;
-
- if (Options.DEBUG)
- Out.debug("Inserting RegExp : "+regExp);
-
- if (regExp.isCharClass(macros)) {
- start = numStates;
- end = numStates+1;
-
- ensureCapacity(end+1);
- if (end+1 > numStates) numStates = end+1;
-
- insertCCLNFA(regExp, start, end);
-
- return new IntPair(start, end);
- }
-
- switch (regExp.type) {
-
- case sym.BAR:
-
- r = (RegExp2) regExp;
-
- nfa1 = insertNFA(r.r1);
- nfa2 = insertNFA(r.r2);
-
- start = nfa2.end+1;
- end = nfa2.end+2;
-
- addEpsilonTransition(start, nfa1.start);
- addEpsilonTransition(start, nfa2.start);
- addEpsilonTransition(nfa1.end, end);
- addEpsilonTransition(nfa2.end, end);
-
- return new IntPair(start, end);
-
- case sym.CONCAT:
-
- r = (RegExp2) regExp;
-
- nfa1 = insertNFA(r.r1);
- nfa2 = insertNFA(r.r2);
-
- addEpsilonTransition(nfa1.end, nfa2.start);
-
- return new IntPair(nfa1.start, nfa2.end);
-
- case sym.STAR:
- nfa1 = insertNFA( (RegExp) ((RegExp1) regExp).content );
-
- start = nfa1.end+1;
- end = nfa1.end+2;
-
- addEpsilonTransition(nfa1.end, end);
- addEpsilonTransition(start, nfa1.start);
-
- addEpsilonTransition(start, end);
- addEpsilonTransition(nfa1.end, nfa1.start);
-
- return new IntPair(start, end);
-
- case sym.PLUS:
- nfa1 = insertNFA( (RegExp) ((RegExp1) regExp).content );
-
- start = nfa1.end+1;
- end = nfa1.end+2;
-
- addEpsilonTransition(nfa1.end, end);
- addEpsilonTransition(start, nfa1.start);
-
- addEpsilonTransition(nfa1.end, nfa1.start);
-
- return new IntPair(start, end);
-
- case sym.QUESTION:
- nfa1 = insertNFA( (RegExp) ((RegExp1) regExp).content );
-
- addEpsilonTransition(nfa1.start, nfa1.end);
-
- return new IntPair(nfa1.start, nfa1.end);
-
- case sym.BANG:
- return complement(insertNFA((RegExp) ((RegExp1) regExp).content));
-
- case sym.TILDE:
- return insertNFA(regExp.resolveTilde(macros));
-
- case sym.STRING:
- return insertStringNFA(false, (String) ((RegExp1) regExp).content );
-
- case sym.STRING_I:
- return insertStringNFA(true, (String) ((RegExp1) regExp).content );
-
- case sym.MACROUSE:
- return insertNFA(macros.getDefinition((String) ((RegExp1) regExp).content));
- }
-
- throw new Error("Unknown expression type "+regExp.type+" in NFA construction");
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/Options.java b/tools/lexer/jflex-1.4/src/JFlex/Options.java
deleted file mode 100644
index 88590de49154..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/Options.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein text is not null
- *
- * @param text the message TextArea of the JFlex GUI
- */
- public static void setGUIMode(TextArea text) {
- out.setGUIMode(text);
- }
-
- /**
- * Sets a new output stream and switches to non-gui mode.
- *
- * @param stream the new output stream
- */
- public static void setOutputStream(OutputStream stream) {
- out = new StdOutWriter(stream);
- out.setGUIMode(null);
- }
-
- /**
- * Report time statistic data.
- *
- * @param message the message to be printed
- * @param time elapsed time
- */
- public static void time(ErrorMessages message, Timer time) {
- if (Options.time) {
- String msg = ErrorMessages.get(message, time.toString());
- out.println(msg);
- }
- }
-
- /**
- * Report time statistic data.
- *
- * @param message the message to be printed
- */
- public static void time(String message) {
- if (Options.time) {
- out.println(message);
- }
- }
-
- /**
- * Report generation progress.
- *
- * @param message the message to be printed
- */
- public static void println(String message) {
- if (Options.verbose)
- out.println(message);
- }
-
- /**
- * Report generation progress.
- *
- * @param message the message to be printed
- * @param data data to be inserted into the message
- */
- public static void println(ErrorMessages message, String data) {
- if (Options.verbose) {
- out.println(ErrorMessages.get(message,data));
- }
- }
-
- /**
- * Report generation progress.
- *
- * @param message the message to be printed
- * @param data data to be inserted into the message
- */
- public static void println(ErrorMessages message, int data) {
- if (Options.verbose) {
- out.println(ErrorMessages.get(message,data));
- }
- }
-
- /**
- * Report generation progress.
- *
- * @param message the message to be printed
- */
- public static void print(String message) {
- if (Options.verbose) out.print(message);
- }
-
- /**
- * Dump debug information to System.out
- *
- * Use like this
- *
- * if (Out.DEBUG) Out.debug(message)
- *
- * to save performance during normal operation (when DEBUG
- * is turned off).
- */
- public static void debug(String message) {
- if (Options.DEBUG) System.out.println(message);
- }
-
-
- /**
- * All parts of JFlex, that want to provide dump information
- * should use this method for their output.
- *
- * @message the message to be printed
- */
- public static void dump(String message) {
- if (Options.dump) out.println(message);
- }
-
-
- /**
- * All parts of JFlex, that want to report error messages
- * should use this method for their output.
- *
- * @message the message to be printed
- */
- private static void err(String message) {
- out.println(message);
- }
-
-
- /**
- * throws a GeneratorException if there are any errors recorded
- */
- public static void checkErrors() {
- if (errors > 0) throw new GeneratorException();
- }
-
-
- /**
- * print error and warning statistics
- */
- public static void statistics() {
- StringBuffer line = new StringBuffer(errors+" error");
- if (errors != 1) line.append("s");
-
- line.append(", "+warnings+" warning");
- if (warnings != 1) line.append("s");
-
- line.append(".");
- err(line.toString());
- }
-
-
- /**
- * reset error and warning counters
- */
- public static void resetCounters() {
- errors = 0;
- warnings = 0;
- }
-
-
- /**
- * print a warning without position information
- *
- * @param message the warning message
- */
- public static void warning(String message) {
- warnings++;
-
- err(NL+"Warning : "+message);
- }
-
-
- /**
- * print a warning with line information
- *
- * @param message code of the warning message
- * @param line the line information
- *
- * @see ErrorMessages
- */
- public static void warning(ErrorMessages message, int line) {
- warnings++;
-
- String msg = NL+"Warning";
- if (line > 0) msg = msg+" in line "+(line+1);
-
- err(msg+": "+ErrorMessages.get(message));
- }
-
-
- /**
- * print warning message with location information
- *
- * @param file the file the warning is issued for
- * @param message the code of the message to print
- * @param line the line number of the position
- * @param column the column of the position
- */
- public static void warning(File file, ErrorMessages message, int line, int column) {
-
- String msg = NL+"Warning";
- if (file != null) msg += " in file \""+file+"\"";
- if (line >= 0) msg = msg+" (line "+(line+1)+")";
-
- try {
- err(msg+": "+NL+ErrorMessages.get(message));
- }
- catch (ArrayIndexOutOfBoundsException e) {
- err(msg);
- }
-
- warnings++;
-
- if (line >= 0) {
- if (column >= 0)
- showPosition(file, line, column);
- else
- showPosition(file, line);
- }
- }
-
-
- /**
- * print error message (string)
- *
- * @param message the message to print
- */
- public static void error(String message) {
- errors++;
- err(NL+message);
- }
-
-
- /**
- * print error message (code)
- *
- * @param message the code of the error message
- *
- * @see ErrorMessages
- */
- public static void error(ErrorMessages message) {
- errors++;
- err(NL+"Error: "+ErrorMessages.get(message) );
- }
-
-
- /**
- * print error message with data
- *
- * @param data data to insert into the message
- * @param message the code of the error message
- *
- * @see ErrorMessages
- */
- public static void error(ErrorMessages message, String data) {
- errors++;
- err(NL+"Error: "+ ErrorMessages.get(message,data));
- }
-
-
- /**
- * IO error message for a file (displays file
- * name in parentheses).
- *
- * @param message the code of the error message
- * @param file the file it occurred for
- */
- public static void error(ErrorMessages message, File file) {
- errors++;
- err(NL+"Error: "+ErrorMessages.get(message)+" ("+file+")");
- }
-
-
- /**
- * print error message with location information
- *
- * @param file the file the error occurred for
- * @param message the code of the error message to print
- * @param line the line number of error position
- * @param column the column of error position
- */
- public static void error(File file, ErrorMessages message, int line, int column) {
-
- String msg = NL+"Error";
- if (file != null) msg += " in file \""+file+"\"";
- if (line >= 0) msg = msg+" (line "+(line+1)+")";
-
- try {
- err(msg+": "+NL+ErrorMessages.get(message));
- }
- catch (ArrayIndexOutOfBoundsException e) {
- err(msg);
- }
-
- errors++;
-
- if (line >= 0) {
- if (column >= 0)
- showPosition(file, line, column);
- else
- showPosition(file, line);
- }
- }
-
-
- /**
- * prints a line of a file with marked position.
- *
- * @param file the file of which to show the line
- * @param line the line to show
- * @param column the column in which to show the marker
- */
- public static void showPosition(File file, int line, int column) {
- try {
- String ln = getLine(file, line);
- if (ln != null) {
- err( ln );
-
- if (column < 0) return;
-
- String t = "^";
- for (int i = 0; i < column; i++) t = " "+t;
-
- err(t);
- }
- }
- catch (IOException e) {
- /* silently ignore IO errors, don't show anything */
- }
- }
-
-
- /**
- * print a line of a file
- *
- * @param file the file to show
- * @param line the line number
- */
- public static void showPosition(File file, int line) {
- try {
- String ln = getLine(file, line);
- if (ln != null) err(ln);
- }
- catch (IOException e) {
- /* silently ignore IO errors, don't show anything */
- }
- }
-
-
- /**
- * get one line from a file
- *
- * @param file the file to read
- * @param line the line number to get
- *
- * @throw IOException if any error occurs
- */
- private static String getLine(File file, int line) throws IOException {
- BufferedReader reader = new BufferedReader(new FileReader(file));
-
- String msg = "";
-
- for (int i = 0; i <= line; i++)
- msg = reader.readLine();
-
- reader.close();
-
- return msg;
- }
-
-
- /**
- * Print system information (e.g. in case of unexpected exceptions)
- */
- public static void printSystemInfo() {
- err("Java version: "+System.getProperty("java.version"));
- err("Runtime name: "+System.getProperty("java.runtime.name"));
- err("Vendor: "+System.getProperty("java.vendor"));
- err("VM version: "+System.getProperty("java.vm.version"));
- err("VM vendor: "+System.getProperty("java.vm.vendor"));
- err("VM name: "+System.getProperty("java.vm.name"));
- err("VM info: "+System.getProperty("java.vm.info"));
- err("OS name: "+System.getProperty("os.name"));
- err("OS arch: "+System.getProperty("os.arch"));
- err("OS version: "+System.getProperty("os.version"));
- err("Encoding: "+System.getProperty("file.encoding"));
- err("JFlex version: "+Main.version);
- }
-
-
- /**
- * Request a bug report for an unexpected Exception/Error.
- */
- public static void requestBugReport(Error e) {
- err("An unexpected error occurred. Please send a report of this to");
- err("int arrays as strings.
- *
- * Also splits up strings when longer than 64K in UTF8 encoding.
- * Subclasses emit unpacking code.
- *
- * Usage protocol:
- * p.emitInit();
- * for each data: p.emitData(data);
- * p.emitUnpack();
- *
- * @author Gerwin Klein
- * @version $Revision$, $Date$
- */
-public abstract class PackEmitter {
-
- /** name of the generated array (mixed case, no yy prefix) */
- protected String name;
-
- /** current UTF8 length of generated string in current chunk */
- private int UTF8Length;
-
- /** position in the current line */
- private int linepos;
-
- /** max number of entries per line */
- private static final int maxEntries = 16;
-
- /** output buffer */
- protected StringBuffer out = new StringBuffer();
-
- /** number of existing string chunks */
- protected int chunks;
-
- /** maximum size of chunks */
- // String constants are stored as UTF8 with 2 bytes length
- // field in class files. One Unicode char can be up to 3
- // UTF8 bytes. 64K max and two chars safety.
- private static final int maxSize = 0xFFFF-6;
-
- /** indent for string lines */
- private static final String indent = " ";
-
- /**
- * Create new emitter for an array.
- *
- * @param name the name of the generated array
- */
- public PackEmitter(String name) {
- this.name = name;
- }
-
- /**
- * Convert array name into all uppercase internal scanner
- * constant name.
- *
- * @return name as a internal constant name.
- * @see PackEmitter#name
- */
- protected String constName() {
- return "ZZ_" + name.toUpperCase();
- }
-
- /**
- * Return current output buffer.
- */
- public String toString() {
- return out.toString();
- }
-
- /**
- * Emit declaration of decoded member and open first chunk.
- */
- public void emitInit() {
- out.append(" private static final int [] ");
- out.append(constName());
- out.append(" = zzUnpack");
- out.append(name);
- out.append("();");
- nl();
- nextChunk();
- }
-
- /**
- * Emit single unicode character.
- *
- * Updates length, position, etc.
- *
- * @param i the character to emit.
- * @prec 0 <= i <= 0xFFFF
- */
- public void emitUC(int i) {
- if (i < 0 || i > 0xFFFF)
- throw new IllegalArgumentException("character value expected");
-
- // cast ok because of prec
- char c = (char) i;
-
- printUC(c);
- UTF8Length += UTF8Length(c);
- linepos++;
- }
-
- /**
- * Execute line/chunk break if necessary.
- * Leave space for at least two chars.
- */
- public void breaks() {
- if (UTF8Length >= maxSize) {
- // close current chunk
- out.append("\";");
- nl();
-
- nextChunk();
- }
- else {
- if (linepos >= maxEntries) {
- // line break
- out.append("\"+");
- nl();
- out.append(indent);
- out.append("\"");
- linepos = 0;
- }
- }
- }
-
- /**
- * Emit the unpacking code.
- */
- public abstract void emitUnpack();
-
- /**
- * emit next chunk
- */
- private void nextChunk() {
- nl();
- out.append(" private static final String ");
- out.append(constName());
- out.append("_PACKED_");
- out.append(chunks);
- out.append(" =");
- nl();
- out.append(indent);
- out.append("\"");
-
- UTF8Length = 0;
- linepos = 0;
- chunks++;
- }
-
- /**
- * emit newline
- */
- protected void nl() {
- out.append(Out.NL);
- }
-
- /**
- * Append a unicode/octal escaped character
- * to out buffer.
- *
- * @param c the character to append
- */
- private void printUC(char c) {
- if (c > 255) {
- out.append("\\u");
- if (c < 0x1000) out.append("0");
- out.append(Integer.toHexString(c));
- }
- else {
- out.append("\\");
- out.append(Integer.toOctalString(c));
- }
- }
-
- /**
- * Calculates the number of bytes a Unicode character
- * would have in UTF8 representation in a class file.
- *
- * @param value the char code of the Unicode character
- * @prec 0 <= value <= 0xFFFF
- *
- * @return length of UTF8 representation.
- */
- private int UTF8Length(char value) {
- // if (value < 0 || value > 0xFFFF) throw new Error("not a char value ("+value+")");
-
- // see JVM spec section 4.4.7, p 111
- if (value == 0) return 2;
- if (value <= 0x7F) return 1;
-
- // workaround for javac bug (up to jdk 1.3):
- if (value < 0x0400) return 2;
- if (value <= 0x07FF) return 3;
-
- // correct would be:
- // if (value <= 0x7FF) return 2;
- return 3;
- }
-
- // convenience
- protected void println(String s) {
- out.append(s);
- nl();
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/RegExp.java b/tools/lexer/jflex-1.4/src/JFlex/RegExp.java
deleted file mode 100644
index db862f67be52..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/RegExp.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein [^]
- * @return the regexp for [^]
- */
- public RegExp anyChar() {
- // FIXME: there is some code duplication here with the parser
- Vector list = new Vector();
- list.addElement(new Interval((char)0,CharClasses.maxChar));
- return new RegExp1(sym.CCLASS,list);
- }
-
-
- /**
- * Create a new regexp that matches the reverse text of this one.
- *
- * @return the reverse regexp
- */
- public final RegExp rev(Macros macros) {
- RegExp1 unary;
- RegExp2 binary;
- RegExp content;
-
- switch ( type ) {
- case sym.BAR:
- binary = (RegExp2) this;
- return new RegExp2(sym.BAR, binary.r1.rev(macros), binary.r2.rev(macros));
-
- case sym.CONCAT:
- binary = (RegExp2) this;
- return new RegExp2(sym.CONCAT, binary.r2.rev(macros), binary.r1.rev(macros));
-
- case sym.STAR:
- unary = (RegExp1) this;
- content = (RegExp) unary.content;
- return new RegExp1(sym.STAR, content.rev(macros));
-
- case sym.PLUS:
- unary = (RegExp1) this;
- content = (RegExp) unary.content;
- return new RegExp1(sym.PLUS, content.rev(macros));
-
- case sym.QUESTION:
- unary = (RegExp1) this;
- content = (RegExp) unary.content;
- return new RegExp1(sym.QUESTION, content.rev(macros));
-
- case sym.BANG:
- unary = (RegExp1) this;
- content = (RegExp) unary.content;
- return new RegExp1(sym.BANG, content.rev(macros));
-
- case sym.TILDE:
- content = resolveTilde(macros);
- return content.rev(macros);
-
- case sym.STRING:
- case sym.STRING_I:
- unary = (RegExp1) this;
- return new RegExp1(unary.type, revString((String) unary.content));
-
- case sym.CHAR:
- case sym.CHAR_I:
- case sym.CCLASS:
- case sym.CCLASSNOT:
- unary = (RegExp1) this;
- return new RegExp1(unary.type, unary.content);
-
- case sym.MACROUSE:
- unary = (RegExp1) this;
- return macros.getDefinition((String) unary.content).rev(macros);
- }
-
- throw new Error("unknown regexp type "+type);
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/RegExp1.java b/tools/lexer/jflex-1.4/src/JFlex/RegExp1.java
deleted file mode 100644
index 29b2c6663049..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/RegExp1.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein PrintWriter.
- *
- * @see JFlex.Emitter
- *
- * @author Gerwin Klein
- * @version $Revision: 1.4.3 $, $Date: 2009/12/21 15:58:48 $
- */
-public class Skeleton {
-
- /** location of default skeleton */
- static final private String DEFAULT_LOC = "JFlex/skeleton.default"; //$NON-NLS-1$
-
- /** expected number of sections in the skeleton file */
- static final private int size = 21;
-
- /** platform specific newline */
- static final private String NL = System.getProperty("line.separator"); //$NON-NLS-1$
-
- /** The skeleton */
- public static String line[];
-
- /** initialization */
- static { readDefault(); }
-
- // the state based, iterator part of Skeleton:
-
- /**
- * The current part of the skeleton (an index of nextStop[])
- */
- private int pos;
-
- /**
- * The writer to write the skeleton-parts to
- */
- private PrintWriter out;
-
-
- /**
- * Creates a new skeleton (iterator) instance.
- *
- * @param out the writer to write the skeleton-parts to
- */
- public Skeleton(PrintWriter out) {
- this.out = out;
- }
-
-
- /**
- * Emits the next part of the skeleton
- */
- public void emitNext() {
- out.print( line[pos++] );
- }
-
-
- /**
- * Make the skeleton private.
- *
- * Replaces all occurences of " public " in the skeleton with " private ".
- */
- public static void makePrivate() {
- for (int i=0; i < line.length; i++) {
- line[i] = replace(" public ", " private ", line[i]); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
-
-
- /**
- * Reads an external skeleton file for later use with this class.
- *
- * @param skeletonFile the file to read (must be != null and readable)
- */
- public static void readSkelFile(File skeletonFile) {
- if (skeletonFile == null)
- throw new IllegalArgumentException("Skeleton file must not be null"); //$NON-NLS-1$
-
- if (!skeletonFile.isFile() || !skeletonFile.canRead()) {
- Out.error(ErrorMessages.CANNOT_READ_SKEL, skeletonFile.toString());
- throw new GeneratorException();
- }
-
- Out.println(ErrorMessages.READING_SKEL, skeletonFile.toString());
-
- try {
- BufferedReader reader = new BufferedReader(new FileReader(skeletonFile));
- readSkel(reader);
- }
- catch (IOException e) {
- Out.error(ErrorMessages.SKEL_IO_ERROR);
- throw new GeneratorException();
- }
- }
-
-
- /**
- * Reads an external skeleton file from a BufferedReader.
- *
- * @param reader the reader to read from (must be != null)
- * @throws IOException if an IO error occurs
- * @throws GeneratorException if the number of skeleton sections does not match
- */
- public static void readSkel(BufferedReader reader) throws IOException {
- Vector lines = new Vector();
- StringBuffer section = new StringBuffer();
-
- String ln;
- while ((ln = reader.readLine()) != null) {
- if (ln.startsWith("---")) { //$NON-NLS-1$
- lines.addElement(section.toString());
- section.setLength(0);
- } else {
- section.append(ln);
- section.append(NL);
- }
- }
-
- if (section.length() > 0)
- lines.addElement(section.toString());
-
- if (lines.size() != size) {
- Out.error(ErrorMessages.WRONG_SKELETON);
- throw new GeneratorException();
- }
-
- line = new String[size];
- for (int i = 0; i < size; i++)
- line[i] = (String) lines.elementAt(i);
- }
-
- /**
- * Replaces a with b in c.
- *
- * @param a the String to be replaced
- * @param b the replacement
- * @param c the String in which to replace a by b
- * @return a String object with a replaced by b in c
- */
- public static String replace(String a, String b, String c) {
- StringBuffer result = new StringBuffer(c.length());
- int i = 0;
- int j = c.indexOf(a);
-
- while (j >= i) {
- result.append(c.substring(i,j));
- result.append(b);
- i = j+a.length();
- j = c.indexOf(a,i);
- }
-
- result.append(c.substring(i,c.length()));
-
- return result.toString();
- }
-
-
- /**
- * (Re)load the default skeleton. Looks in the current system class path.
- */
- public static void readDefault() {
- ClassLoader l = Skeleton.class.getClassLoader();
- URL url;
-
- /* Try to load from same class loader as this class.
- * Should work, but does not on OS/2 JDK 1.1.8 (see bug 1065521).
- * Use system class loader in this case.
- */
- if (l != null) {
- url = l.getResource(DEFAULT_LOC);
- }
- else {
- url = ClassLoader.getSystemResource(DEFAULT_LOC);
- }
-
- if (url == null) {
- Out.error(ErrorMessages.SKEL_IO_ERROR_DEFAULT);
- throw new GeneratorException();
- }
-
- try {
- InputStreamReader reader = new InputStreamReader(url.openStream());
- readSkel(new BufferedReader(reader));
- } catch (IOException e) {
- Out.error(ErrorMessages.SKEL_IO_ERROR_DEFAULT);
- throw new GeneratorException();
- }
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/StatePairList.java b/tools/lexer/jflex-1.4/src/JFlex/StatePairList.java
deleted file mode 100644
index 13c4aa96fca2..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/StatePairList.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein wrap characters
- **/
- private int col;
-
- /** auto wrap lines in gui mode at this value */
- private final static int wrap = 78;
-
- /** A StdOutWriter, attached to System.out, no gui mode */
- public StdOutWriter() {
- super(System.out,true);
- }
-
- /** A StdOutWrite, attached to the specified output stream, no gui mode */
- public StdOutWriter(OutputStream out) {
- super(out,true);
- }
-
- /**
- * Set the TextArea to write text to. Will continue
- * to write to System.out if text is null.
- *
- * @param text the TextArea to write to
- */
- public void setGUIMode(TextArea text) {
- this.text = text;
- }
-
- /** Write a single character. */
- public void write(int c) {
- if (text != null) {
- text.append(String.valueOf((char) c));
- if (++col > wrap) println();
- }
- else
- super.write(c);
- }
-
- /** Write a portion of an array of characters. */
- public void write(char buf[], int off, int len) {
- if (text != null) {
- text.append(new String(buf,off,len));
- if ((col+=len) > wrap) println();
- }
- else
- super.write(buf, off, len);
- }
-
- /** Write a portion of a string. */
- public void write(String s, int off, int len) {
- if (text != null) {
- text.append(s.substring(off,off+len));
- if ((col+=len) > wrap) println();
- }
- else {
- super.write(s,off,len);
- flush();
- }
- }
-
- /**
- * Begin a new line. Which actual character/s is/are written
- * depends on the runtime platform.
- */
- public void println() {
- if (text != null) {
- text.append(Out.NL);
- col = 0;
- }
- else
- super.println();
- }
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/Timer.java b/tools/lexer/jflex-1.4/src/JFlex/Timer.java
deleted file mode 100644
index f8be1313cd89..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/Timer.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * JFlex 1.4.3 *
- * Copyright (C) 1998-2009 Gerwin Klein false, iff there was new input.
- *
- * @exception java.io.IOException if any I/O-Error occurs
- */
- private boolean zzRefill() throws java.io.IOException {
-
- /* first: make room (if you can) */
- if (zzStartRead > 0) {
- System.arraycopy(zzBuffer, zzStartRead,
- zzBuffer, 0,
- zzEndRead-zzStartRead);
-
- /* translate stored positions */
- zzEndRead-= zzStartRead;
- zzCurrentPos-= zzStartRead;
- zzMarkedPos-= zzStartRead;
- zzPushbackPos-= zzStartRead;
- zzStartRead = 0;
- }
-
- /* is the buffer big enough? */
- if (zzCurrentPos >= zzBuffer.length) {
- /* if not: blow it up */
- char newBuffer[] = new char[zzCurrentPos*2];
- System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
- zzBuffer = newBuffer;
- }
-
- /* finally: fill the buffer with new input */
- int numRead = zzReader.read(zzBuffer, zzEndRead,
- zzBuffer.length-zzEndRead);
-
- if (numRead < 0) {
- return true;
- }
- else {
- zzEndRead+= numRead;
- return false;
- }
- }
-
-
- /**
- * Closes the input stream.
- */
- public final void yyclose() throws java.io.IOException {
- zzAtEOF = true; /* indicate end of file */
- zzEndRead = zzStartRead; /* invalidate buffer */
-
- if (zzReader != null)
- zzReader.close();
- }
-
-
- /**
- * 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
- * cannot be reused (internal buffer is discarded and lost).
- * Lexical state is set to ZZ_INITIAL.
- *
- * @param reader the new input stream
- */
- public final void yyreset(java.io.Reader reader) {
- zzReader = reader;
- zzAtBOL = true;
- zzAtEOF = false;
- zzEndRead = zzStartRead = 0;
- zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
- yyline = yychar = yycolumn = 0;
- zzLexicalState = YYINITIAL;
- }
-
-
- /**
- * Returns the current lexical state.
- */
- public final int yystate() {
- return zzLexicalState;
- }
-
-
- /**
- * Enters a new lexical state
- *
- * @param newState the new lexical state
- */
- public final void yybegin(int newState) {
- zzLexicalState = newState;
- }
-
-
- /**
- * Returns the text matched by the current regular expression.
- */
- public final String yytext() {
- return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
- }
-
-
- /**
- * Returns the character at position pos from the
- * matched text.
- *
- * It is equivalent to yytext().charAt(pos), but faster
- *
- * @param pos the position of the character to fetch.
- * A value from 0 to yylength()-1.
- *
- * @return the character at position pos
- */
- public final char yycharat(int pos) {
- return zzBuffer[zzStartRead+pos];
- }
-
-
- /**
- * Returns the length of the matched text region.
- */
- public final int yylength() {
- return zzMarkedPos-zzStartRead;
- }
-
-
- /**
- * Reports an error that occured while scanning.
- *
- * In a wellformed scanner (no or only correct usage of
- * yypushback(int) and a match-all fallback rule) this method
- * will only be called with things that "Can't Possibly Happen".
- * If this method is called, something is seriously wrong
- * (e.g. a JFlex bug producing a faulty scanner etc.).
- *
- * Usual syntax/scanner level error handling should be done
- * in error fallback rules.
- *
- * @param errorCode the code of the errormessage to display
- */
---- zzScanError declaration
- String message;
- try {
- message = ZZ_ERROR_MSG[errorCode];
- }
- catch (ArrayIndexOutOfBoundsException e) {
- message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
- }
-
---- throws clause
- }
-
-
- /**
- * Pushes the specified amount of characters back into the input stream.
- *
- * They will be read again by then next call of the scanning method
- *
- * @param number the number of characters to be read again.
- * This number must not be greater than yylength()!
- */
---- yypushback decl (contains zzScanError exception)
- if ( number > yylength() )
- zzScanError(ZZ_PUSHBACK_2BIG);
-
- zzMarkedPos -= number;
- }
-
-
---- zzDoEOF
- /**
- * Resumes scanning until the next regular expression is matched,
- * the end of input is encountered or an I/O-Error occurs.
- *
- * @return the next token
- * @exception java.io.IOException if any I/O-Error occurs
- */
---- yylex declaration
- int zzInput;
- int zzAction;
-
- // cached fields:
- int zzCurrentPosL;
- int zzMarkedPosL;
- int zzEndReadL = zzEndRead;
- char [] zzBufferL = zzBuffer;
- char [] zzCMapL = ZZ_CMAP;
-
---- local declarations
-
- while (true) {
- zzMarkedPosL = zzMarkedPos;
-
---- start admin (line, char, col count)
- zzAction = -1;
-
- zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-
---- start admin (lexstate etc)
-
- zzForAction: {
- while (true) {
-
---- next input, line, col, char count, next transition, isFinal action
- zzAction = zzState;
- zzMarkedPosL = zzCurrentPosL;
---- line count update
- }
-
- }
- }
-
- // store back cached position
- zzMarkedPos = zzMarkedPosL;
---- char count update
-
---- actions
- default:
- if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
- zzAtEOF = true;
---- eofvalue
- }
- else {
---- no match
- }
- }
- }
- }
-
---- main
-
-}
diff --git a/tools/lexer/jflex-1.4/src/JFlex/sym.java b/tools/lexer/jflex-1.4/src/JFlex/sym.java
deleted file mode 100644
index 9c340d530a93..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/sym.java
+++ /dev/null
@@ -1,91 +0,0 @@
-
-//----------------------------------------------------
-// The following code was generated by CUP v0.11a beta 20060608
-// Mon Dec 03 16:12:49 MSK 2012
-//----------------------------------------------------
-
-package JFlex;
-
-/** CUP generated interface containing symbol constants. */
-public interface sym {
- /* terminals */
- public static final int DELIMITER = 9;
- public static final int UNICODE_SPACE_SEPARATOR = 41;
- public static final int UNICODE_OTHER_LETTER = 34;
- public static final int USERCODE = 61;
- public static final int UNICODE_ENCLOSING_MARK = 36;
- public static final int REGEXPEND = 19;
- public static final int CCLASSNOT = 74;
- public static final int UNICODE = 18;
- public static final int UNICODE_CURRENCY_SYMBOL = 54;
- public static final int UNICODE_LETTER_NUMBER = 39;
- public static final int UNICODE_START_PUNCTUATION = 49;
- public static final int UNICODE_OTHER_SYMBOL = 56;
- public static final int UNICODE_COMBINING_SPACING_MARK = 37;
- public static final int UNICODE_FINAL_QUOTE_PUNCTUATION = 58;
- public static final int UNICODE_UNASSIGNED = 29;
- public static final int COMMA = 11;
- public static final int RBRACE = 15;
- public static final int UNICODE_UPPERCASE_LETTER = 30;
- public static final int UNICODE_INITIAL_QUOTE_PUNCTUATION = 57;
- public static final int LBRACE = 14;
- public static final int UNICODE_SURROGATE = 47;
- public static final int ACTION = 59;
- public static final int CHAR_I = 77;
- public static final int UNICODE_DECIMAL_DIGIT_NUMBER = 38;
- public static final int CLOSECLASS = 7;
- public static final int TILDE = 69;
- public static final int UNICODE_NON_SPACING_MARK = 35;
- public static final int DOLLAR = 5;
- public static final int UNICODE_END_PUNCTUATION = 50;
- public static final int FULL = 17;
- public static final int LESSTHAN = 12;
- public static final int UNICODE_DASH_PUNCTUATION = 48;
- public static final int CLOSEBRACKET = 3;
- public static final int PLUS = 64;
- public static final int QUESTION = 66;
- public static final int CHAR = 70;
- public static final int NOACTION = 27;
- public static final int STAR = 63;
- public static final int UNICODE_CONNECTOR_PUNCTUATION = 51;
- public static final int CONCAT = 75;
- public static final int ASCII = 16;
- public static final int MORETHAN = 13;
- public static final int OPENCLASS = 6;
- public static final int POINT = 67;
- public static final int JLETTERDIGITCLASS = 21;
- public static final int EOFRULE = 26;
- public static final int EOF = 0;
- public static final int UNICODE_MODIFIER_LETTER = 33;
- public static final int BANG = 68;
- public static final int UPPERCLASS = 24;
- public static final int JLETTERCLASS = 20;
- public static final int REPEAT = 62;
- public static final int LOOKAHEAD = 28;
- public static final int UNICODE_OTHER_NUMBER = 40;
- public static final int UNICODE_PRIVATE_USE = 46;
- public static final int UNICODE_MATH_SYMBOL = 53;
- public static final int OPENBRACKET = 2;
- public static final int HAT = 4;
- public static final int IDENT = 60;
- public static final int error = 1;
- public static final int UNICODE_PARAGRAPH_SEPARATOR = 43;
- public static final int LOWERCLASS = 25;
- public static final int STRING_I = 76;
- public static final int UNICODE_MODIFIER_SYMBOL = 55;
- public static final int UNICODE_CONTROL = 44;
- public static final int UNICODE_OTHER_PUNCTUATION = 52;
- public static final int DIGITCLASS = 23;
- public static final int UNICODE_FORMAT = 45;
- public static final int UNICODE_TITLECASE_LETTER = 32;
- public static final int DASH = 8;
- public static final int MACROUSE = 72;
- public static final int STRING = 71;
- public static final int CCLASS = 73;
- public static final int UNICODE_LOWERCASE_LETTER = 31;
- public static final int LETTERCLASS = 22;
- public static final int BAR = 65;
- public static final int UNICODE_LINE_SEPARATOR = 42;
- public static final int EQUALS = 10;
-}
-
diff --git a/tools/lexer/jflex-1.4/src/JFlex/tests/AllTests.java b/tools/lexer/jflex-1.4/src/JFlex/tests/AllTests.java
deleted file mode 100644
index eaa370ffbf14..000000000000
--- a/tools/lexer/jflex-1.4/src/JFlex/tests/AllTests.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * jflex *
- * Copyright (C) 1998-2009 Gerwin Klein lr_parser.scan(). Integration
- * of scanners implementing Scanner is facilitated.
- *
- * @version last updated 23-Jul-1999
- * @author David MacMahon new Symbol(lr_parser.EOF_sym()) or
- null.
- ***************************************************/
-public interface Scanner {
- /** Return the next token, or null on end-of-file. */
- public Symbol next_token() throws java.lang.Exception;
-}
diff --git a/tools/lexer/jflex-1.4/src/java_cup/runtime/Symbol.java b/tools/lexer/jflex-1.4/src/java_cup/runtime/Symbol.java
deleted file mode 100644
index c9ce556d0a4c..000000000000
--- a/tools/lexer/jflex-1.4/src/java_cup/runtime/Symbol.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package java_cup.runtime;
-
-/**
- * Defines the Symbol class, which is used to represent all terminals
- * and nonterminals while parsing. The lexer should pass CUP Symbols
- * and CUP returns a Symbol.
- *
- * @version last updated: 7/3/96
- * @author Frank Flannery
- */
-
-/* ****************************************************************
- Class Symbol
- what the parser expects to receive from the lexer.
- the token is identified as follows:
- sym: the symbol type
- parse_state: the parse state.
- value: is the lexical value of type Object
- left : is the left position in the original input file
- right: is the right position in the original input file
- xleft: is the left position Object in the original input file
- xright: is the left position Object in the original input file
-******************************************************************/
-
-public class Symbol {
-
-// TUM 20060327: Added new Constructor to provide more flexible way
-// for location handling
-/*******************************
- *******************************/
- public Symbol(int id, Symbol left, Symbol right, Object o){
- this(id,left.left,right.right,o);
- }
- public Symbol(int id, Symbol left, Symbol right){
- this(id,left.left,right.right);
- }
-/*******************************
- Constructor for l,r values
- *******************************/
-
- public Symbol(int id, int l, int r, Object o) {
- this(id);
- left = l;
- right = r;
- value = o;
- }
-
-/*******************************
- Constructor for no l,r values
-********************************/
-
- public Symbol(int id, Object o) {
- this(id, -1, -1, o);
- }
-
-/*****************************
- Constructor for no value
- ***************************/
-
- public Symbol(int id, int l, int r) {
- this(id, l, r, null);
- }
-
-/***********************************
- Constructor for no value or l,r
-***********************************/
-
- public Symbol(int sym_num) {
- this(sym_num, -1);
- left = -1;
- right = -1;
- }
-
-/***********************************
- Constructor to give a start state
-***********************************/
- Symbol(int sym_num, int state)
- {
- sym = sym_num;
- parse_state = state;
- }
-
-/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The symbol number of the terminal or non terminal being represented */
- public int sym;
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The parse state to be recorded on the parse stack with this symbol.
- * This field is for the convenience of the parser and shouldn't be
- * modified except by the parser.
- */
- public int parse_state;
- /** This allows us to catch some errors caused by scanners recycling
- * symbols. For the use of the parser only. [CSA, 23-Jul-1999] */
- boolean used_by_parser = false;
-
-/*******************************
- The data passed to parser
- *******************************/
-
- public int left, right;
- public Object value;
-
- /*****************************
- Printing this token out. (Override for pretty-print).
- ****************************/
- public String toString() { return "#"+sym; }
-}
-
-
-
-
-
-
diff --git a/tools/lexer/jflex-1.4/src/java_cup/runtime/SymbolFactory.java b/tools/lexer/jflex-1.4/src/java_cup/runtime/SymbolFactory.java
deleted file mode 100644
index 86bae0837b9c..000000000000
--- a/tools/lexer/jflex-1.4/src/java_cup/runtime/SymbolFactory.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package java_cup.runtime;
-
-/**
- * Creates the Symbols interface, which CUP uses as default
- *
- * @version last updated 27-03-2006
- * @author Michael Petter
- */
-
-/* *************************************************
- Interface SymbolFactory
-
- interface for creating new symbols
- You can also use this interface for your own callback hooks
- Declare Your own factory methods for creation of Objects in Your scanner!
- ***************************************************/
-public interface SymbolFactory {
- // Factory methods
- /**
- * Construction with left/right propagation switched on
- */
- public Symbol newSymbol(String name, int id, Symbol left, Symbol right, Object value);
- public Symbol newSymbol(String name, int id, Symbol left, Symbol right);
- /**
- * Construction with left/right propagation switched off
- */
- public Symbol newSymbol(String name, int id, Object value);
- public Symbol newSymbol(String name, int id);
- /**
- * Construction of start symbol
- */
- public Symbol startSymbol(String name, int id, int state);
-}
diff --git a/tools/lexer/jflex-1.4/src/java_cup/runtime/lr_parser.java b/tools/lexer/jflex-1.4/src/java_cup/runtime/lr_parser.java
deleted file mode 100644
index 89068e1099dc..000000000000
--- a/tools/lexer/jflex-1.4/src/java_cup/runtime/lr_parser.java
+++ /dev/null
@@ -1,1253 +0,0 @@
-
-package java_cup.runtime;
-
-import java.util.Stack;
-
-/** This class implements a skeleton table driven LR parser. In general,
- * LR parsers are a form of bottom up shift-reduce parsers. Shift-reduce
- * parsers act by shifting input onto a parse stack until the Symbols
- * matching the right hand side of a production appear on the top of the
- * stack. Once this occurs, a reduce is performed. This involves removing
- * the Symbols corresponding to the right hand side of the production
- * (the so called "handle") and replacing them with the non-terminal from
- * the left hand side of the production.
- *
- *
- * In addition to these routines that must be supplied by the
- * generated subclass there are also a series of routines that may
- * be supplied. These include:
- *
- *
- *
- * @see java_cup.runtime.Symbol
- * @see java_cup.runtime.Symbol
- * @see java_cup.runtime.virtual_parse_stack
- * @version last updated: 7/3/96
- * @author Frank Flannery
- */
-
-public abstract class lr_parser {
- /*-----------------------------------------------------------*/
- /*--- Constructor(s) ----------------------------------------*/
- /*-----------------------------------------------------------*/
-
- /**
- * Simple constructor.
- */
- public lr_parser() {
- }
-
- /**
- * Constructor that sets the default scanner. [CSA/davidm]
- */
- public lr_parser(Scanner s) {
- this(s,new DefaultSymbolFactory()); // TUM 20060327 old cup v10 Symbols as default
- }
- /**
- * Constructor that sets the default scanner and a SymbolFactory
- */
- public lr_parser(Scanner s, SymbolFactory symfac) {
- this(); // in case default constructor someday does something
- symbolFactory = symfac;
- setScanner(s);
- }
- public SymbolFactory symbolFactory;// = new DefaultSymbolFactory();
- /**
- * Whenever creation of a new Symbol is necessary, one should use this factory.
- */
- public SymbolFactory getSymbolFactory(){
- return symbolFactory;
- }
- /*-----------------------------------------------------------*/
- /*--- (Access to) Static (Class) Variables ------------------*/
- /*-----------------------------------------------------------*/
-
- /** The default number of Symbols after an error we much match to consider
- * it recovered from.
- */
- protected final static int _error_sync_size = 3;
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The number of Symbols after an error we much match to consider it
- * recovered from.
- */
- protected int error_sync_size() {return _error_sync_size; }
-
- /*-----------------------------------------------------------*/
- /*--- (Access to) Instance Variables ------------------------*/
- /*-----------------------------------------------------------*/
-
- /** Table of production information (supplied by generated subclass).
- * This table contains one entry per production and is indexed by
- * the negative-encoded values (reduce actions) in the action_table.
- * Each entry has two parts, the index of the non-terminal on the
- * left hand side of the production, and the number of Symbols
- * on the right hand side.
- */
- public abstract short[][] production_table();
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The action table (supplied by generated subclass). This table is
- * indexed by state and terminal number indicating what action is to
- * be taken when the parser is in the given state (i.e., the given state
- * is on top of the stack) and the given terminal is next on the input.
- * States are indexed using the first dimension, however, the entries for
- * a given state are compacted and stored in adjacent index, value pairs
- * which are searched for rather than accessed directly (see get_action()).
- * The actions stored in the table will be either shifts, reduces, or
- * errors. Shifts are encoded as positive values (one greater than the
- * state shifted to). Reduces are encoded as negative values (one less
- * than the production reduced by). Error entries are denoted by zero.
- *
- * @see java_cup.runtime.lr_parser#get_action
- */
- public abstract short[][] action_table();
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The reduce-goto table (supplied by generated subclass). This
- * table is indexed by state and non-terminal number and contains
- * state numbers. States are indexed using the first dimension, however,
- * the entries for a given state are compacted and stored in adjacent
- * index, value pairs which are searched for rather than accessed
- * directly (see get_reduce()). When a reduce occurs, the handle
- * (corresponding to the RHS of the matched production) is popped off
- * the stack. The new top of stack indicates a state. This table is
- * then indexed by that state and the LHS of the reducing production to
- * indicate where to "shift" to.
- *
- * @see java_cup.runtime.lr_parser#get_reduce
- */
- public abstract short[][] reduce_table();
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The index of the start state (supplied by generated subclass). */
- public abstract int start_state();
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The index of the start production (supplied by generated subclass). */
- public abstract int start_production();
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The index of the end of file terminal Symbol (supplied by generated
- * subclass).
- */
- public abstract int EOF_sym();
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The index of the special error Symbol (supplied by generated subclass). */
- public abstract int error_sym();
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Internal flag to indicate when parser should quit. */
- protected boolean _done_parsing = false;
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** This method is called to indicate that the parser should quit. This is
- * normally called by an accept action, but can be used to cancel parsing
- * early in other circumstances if desired.
- */
- public void done_parsing()
- {
- _done_parsing = true;
- }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
- /* Global parse state shared by parse(), error recovery, and
- * debugging routines */
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Indication of the index for top of stack (for use by actions). */
- protected int tos;
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The current lookahead Symbol. */
- protected Symbol cur_token;
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** The parse stack itself. */
- protected Stack stack = new Stack();
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Direct reference to the production table. */
- protected short[][] production_tab;
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Direct reference to the action table. */
- protected short[][] action_tab;
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Direct reference to the reduce-goto table. */
- protected short[][] reduce_tab;
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** This is the scanner object used by the default implementation
- * of scan() to get Symbols. To avoid name conflicts with existing
- * code, this field is private. [CSA/davidm] */
- private Scanner _scanner;
-
- /**
- * Simple accessor method to set the default scanner.
- */
- public void setScanner(Scanner s) { _scanner = s; }
-
- /**
- * Simple accessor method to get the default scanner.
- */
- public Scanner getScanner() { return _scanner; }
-
- /*-----------------------------------------------------------*/
- /*--- General Methods ---------------------------------------*/
- /*-----------------------------------------------------------*/
-
- /** Perform a bit of user supplied action code (supplied by generated
- * subclass). Actions are indexed by an internal action number assigned
- * at parser generation time.
- *
- * @param act_num the internal index of the action to be performed.
- * @param parser the parser object we are acting for.
- * @param stack the parse stack of that object.
- * @param top the index of the top element of the parse stack.
- */
- public abstract Symbol do_action(
- int act_num,
- lr_parser parser,
- Stack stack,
- int top)
- throws java.lang.Exception;
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** User code for initialization inside the parser. Typically this
- * initializes the scanner. This is called before the parser requests
- * the first Symbol. Here this is just a placeholder for subclasses that
- * might need this and we perform no action. This method is normally
- * overridden by the generated code using this contents of the "init with"
- * clause as its body.
- */
- public void user_init() throws java.lang.Exception { }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Initialize the action object. This is called before the parser does
- * any parse actions. This is filled in by generated code to create
- * an object that encapsulates all action code.
- */
- protected abstract void init_actions() throws java.lang.Exception;
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Get the next Symbol from the input (supplied by generated subclass).
- * Once end of file has been reached, all subsequent calls to scan
- * should return an EOF Symbol (which is Symbol number 0). By default
- * this method returns getScanner().next_token(); this implementation
- * can be overriden by the generated parser using the code declared in
- * the "scan with" clause. Do not recycle objects; every call to
- * scan() should return a fresh object.
- */
- public Symbol scan() throws java.lang.Exception {
- Symbol sym = getScanner().next_token();
- return (sym!=null) ? sym : getSymbolFactory().newSymbol("END_OF_FILE",EOF_sym());
- }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Report a fatal error. This method takes a message string and an
- * additional object (to be used by specializations implemented in
- * subclasses). Here in the base class a very simple implementation
- * is provided which reports the error then throws an exception.
- *
- * @param message an error message.
- * @param info an extra object reserved for use by specialized subclasses.
- */
- public void report_fatal_error(
- String message,
- Object info)
- throws java.lang.Exception
- {
- /* stop parsing (not really necessary since we throw an exception, but) */
- done_parsing();
-
- /* use the normal error message reporting to put out the message */
- report_error(message, info);
-
- /* throw an exception */
- throw new Exception("Can't recover from previous error(s)");
- }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Report a non fatal error (or warning). This method takes a message
- * string and an additional object (to be used by specializations
- * implemented in subclasses). Here in the base class a very simple
- * implementation is provided which simply prints the message to
- * System.err.
- *
- * @param message an error message.
- * @param info an extra object reserved for use by specialized subclasses.
- */
- public void report_error(String message, Object info)
- {
- System.err.print(message);
- System.err.flush();
- if (info instanceof Symbol)
- if (((Symbol)info).left != -1)
- System.err.println(" at character " + ((Symbol)info).left +
- " of input");
- else System.err.println("");
- else System.err.println("");
- }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** This method is called when a syntax error has been detected and recovery
- * is about to be invoked. Here in the base class we just emit a
- * "Syntax error" error message.
- *
- * @param cur_token the current lookahead Symbol.
- */
- public void syntax_error(Symbol cur_token)
- {
- report_error("Syntax error", cur_token);
- }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** This method is called if it is determined that syntax error recovery
- * has been unsuccessful. Here in the base class we report a fatal error.
- *
- * @param cur_token the current lookahead Symbol.
- */
- public void unrecovered_syntax_error(Symbol cur_token)
- throws java.lang.Exception
- {
- report_fatal_error("Couldn't repair and continue parse", cur_token);
- }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Fetch an action from the action table. The table is broken up into
- * rows, one per state (rows are indexed directly by state number).
- * Within each row, a list of index, value pairs are given (as sequential
- * entries in the table), and the list is terminated by a default entry
- * (denoted with a Symbol index of -1). To find the proper entry in a row
- * we do a linear or binary search (depending on the size of the row).
- *
- * @param state the state index of the action being accessed.
- * @param sym the Symbol index of the action being accessed.
- */
- protected final short get_action(int state, int sym)
- {
- short tag;
- int first, last, probe;
- short[] row = action_tab[state];
-
- /* linear search if we are < 10 entries */
- if (row.length < 20)
- for (probe = 0; probe < row.length; probe++)
- {
- /* is this entry labeled with our Symbol or the default? */
- tag = row[probe++];
- if (tag == sym || tag == -1)
- {
- /* return the next entry */
- return row[probe];
- }
- }
- /* otherwise binary search */
- else
- {
- first = 0;
- last = (row.length-1)/2 - 1; /* leave out trailing default entry */
- while (first <= last)
- {
- probe = (first+last)/2;
- if (sym == row[probe*2])
- return row[probe*2+1];
- else if (sym > row[probe*2])
- first = probe+1;
- else
- last = probe-1;
- }
-
- /* not found, use the default at the end */
- return row[row.length-1];
- }
-
- /* shouldn't happened, but if we run off the end we return the
- default (error == 0) */
- return 0;
- }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Fetch a state from the reduce-goto table. The table is broken up into
- * rows, one per state (rows are indexed directly by state number).
- * Within each row, a list of index, value pairs are given (as sequential
- * entries in the table), and the list is terminated by a default entry
- * (denoted with a Symbol index of -1). To find the proper entry in a row
- * we do a linear search.
- *
- * @param state the state index of the entry being accessed.
- * @param sym the Symbol index of the entry being accessed.
- */
- protected final short get_reduce(int state, int sym)
- {
- short tag;
- short[] row = reduce_tab[state];
-
- /* if we have a null row we go with the default */
- if (row == null)
- return -1;
-
- for (int probe = 0; probe < row.length; probe++)
- {
- /* is this entry labeled with our Symbol or the default? */
- tag = row[probe++];
- if (tag == sym || tag == -1)
- {
- /* return the next entry */
- return row[probe];
- }
- }
- /* if we run off the end we return the default (error == -1) */
- return -1;
- }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** This method provides the main parsing routine. It returns only when
- * done_parsing() has been called (typically because the parser has
- * accepted, or a fatal error has been reported). See the header
- * documentation for the class regarding how shift/reduce parsers operate
- * and how the various tables are used.
- */
- public Symbol parse() throws java.lang.Exception
- {
- /* the current action code */
- int act;
-
- /* the Symbol/stack element returned by a reduce */
- Symbol lhs_sym = null;
-
- /* information about production being reduced with */
- short handle_size, lhs_sym_num;
-
- /* set up direct reference to tables to drive the parser */
-
- production_tab = production_table();
- action_tab = action_table();
- reduce_tab = reduce_table();
-
- /* initialize the action encapsulation object */
- init_actions();
-
- /* do user initialization */
- user_init();
-
- /* get the first token */
- cur_token = scan();
-
- /* push dummy Symbol with start state to get us underway */
- stack.removeAllElements();
- stack.push(getSymbolFactory().startSymbol("START", 0, start_state()));
- tos = 0;
-
- /* continue until we are told to stop */
- for (_done_parsing = false; !_done_parsing; )
- {
- /* Check current token for freshness. */
- if (cur_token.used_by_parser)
- throw new Error("Symbol recycling detected (fix your scanner).");
-
- /* current state is always on the top of the stack */
-
- /* look up action out of the current state with the current input */
- act = get_action(((Symbol)stack.peek()).parse_state, cur_token.sym);
-
- /* decode the action -- > 0 encodes shift */
- if (act > 0)
- {
- /* shift to the encoded state by pushing it on the stack */
- cur_token.parse_state = act-1;
- cur_token.used_by_parser = true;
- stack.push(cur_token);
- tos++;
-
- /* advance to the next Symbol */
- cur_token = scan();
- }
- /* if its less than zero, then it encodes a reduce action */
- else if (act < 0)
- {
- /* perform the action for the reduce */
- lhs_sym = do_action((-act)-1, this, stack, tos);
-
- /* look up information about the production */
- lhs_sym_num = production_tab[(-act)-1][0];
- handle_size = production_tab[(-act)-1][1];
-
- /* pop the handle off the stack */
- for (int i = 0; i < handle_size; i++)
- {
- stack.pop();
- tos--;
- }
-
- /* look up the state to go to from the one popped back to */
- act = get_reduce(((Symbol)stack.peek()).parse_state, lhs_sym_num);
-
- /* shift to that state */
- lhs_sym.parse_state = act;
- lhs_sym.used_by_parser = true;
- stack.push(lhs_sym);
- tos++;
- }
- /* finally if the entry is zero, we have an error */
- else if (act == 0)
- {
- /* call user syntax error reporting routine */
- syntax_error(cur_token);
-
- /* try to error recover */
- if (!error_recovery(false))
- {
- /* if that fails give up with a fatal syntax error */
- unrecovered_syntax_error(cur_token);
-
- /* just in case that wasn't fatal enough, end parse */
- done_parsing();
- } else {
- lhs_sym = (Symbol)stack.peek();
- }
- }
- }
- return lhs_sym;
- }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Write a debugging message to System.err for the debugging version
- * of the parser.
- *
- * @param mess the text of the debugging message.
- */
- public void debug_message(String mess)
- {
- System.err.println(mess);
- }
-
- /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
-
- /** Dump the parse stack for debugging purposes. */
- public void dump_stack()
- {
- if (stack == null)
- {
- debug_message("# Stack dump requested, but stack is null");
- return;
- }
-
- debug_message("============ Parse Stack Dump ============");
-
- /* dump the stack */
- for (int i=0; i
- * report_fatal_error("Couldn't repair and continue parse", null);
- * false, iff there was new input.
- *
- * @exception java.io.IOException if any I/O-Error occurs
- */
- private boolean zzRefill() throws java.io.IOException {
-
- /* first: make room (if you can) */
- if (zzStartRead > 0) {
- System.arraycopy(zzBuffer, zzStartRead,
- zzBuffer, 0,
- zzEndRead-zzStartRead);
-
- /* translate stored positions */
- zzEndRead-= zzStartRead;
- zzCurrentPos-= zzStartRead;
- zzMarkedPos-= zzStartRead;
- zzStartRead = 0;
- }
-
- /* is the buffer big enough? */
- if (zzCurrentPos >= zzBuffer.length) {
- /* if not: blow it up */
- char newBuffer[] = new char[zzCurrentPos*2];
- System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
- zzBuffer = newBuffer;
- }
-
- /* finally: fill the buffer with new input */
- int numRead = zzReader.read(zzBuffer, zzEndRead,
- zzBuffer.length-zzEndRead);
-
- if (numRead > 0) {
- zzEndRead+= numRead;
- return false;
- }
- // unlikely but not impossible: read 0 characters, but not at end of stream
- if (numRead == 0) {
- int c = zzReader.read();
- if (c == -1) {
- return true;
- } else {
- zzBuffer[zzEndRead++] = (char) c;
- return false;
- }
- }
-
- // numRead < 0
- return true;
- }
-
-
- /**
- * Closes the input stream.
- */
- public final void yyclose() throws java.io.IOException {
- zzAtEOF = true; /* indicate end of file */
- zzEndRead = zzStartRead; /* invalidate buffer */
-
- if (zzReader != null)
- zzReader.close();
- }
-
-
- /**
- * 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
- * cannot be reused (internal buffer is discarded and lost).
- * Lexical state is set to ZZ_INITIAL.
- *
- * @param reader the new input stream
- */
- public final void yyreset(java.io.Reader reader) {
- zzReader = reader;
- zzAtBOL = true;
- zzAtEOF = false;
- zzEOFDone = false;
- zzEndRead = zzStartRead = 0;
- zzCurrentPos = zzMarkedPos = 0;
- yyline = yychar = yycolumn = 0;
- zzLexicalState = YYINITIAL;
- }
-
-
- /**
- * Returns the current lexical state.
- */
- public final int yystate() {
- return zzLexicalState;
- }
-
-
- /**
- * Enters a new lexical state
- *
- * @param newState the new lexical state
- */
- public final void yybegin(int newState) {
- zzLexicalState = newState;
- }
-
-
- /**
- * Returns the text matched by the current regular expression.
- */
- public final String yytext() {
- return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
- }
-
-
- /**
- * Returns the character at position pos from the
- * matched text.
- *
- * It is equivalent to yytext().charAt(pos), but faster
- *
- * @param pos the position of the character to fetch.
- * A value from 0 to yylength()-1.
- *
- * @return the character at position pos
- */
- public final char yycharat(int pos) {
- return zzBuffer[zzStartRead+pos];
- }
-
-
- /**
- * Returns the length of the matched text region.
- */
- public final int yylength() {
- return zzMarkedPos-zzStartRead;
- }
-
-
- /**
- * Reports an error that occured while scanning.
- *
- * In a wellformed scanner (no or only correct usage of
- * yypushback(int) and a match-all fallback rule) this method
- * will only be called with things that "Can't Possibly Happen".
- * If this method is called, something is seriously wrong
- * (e.g. a JFlex bug producing a faulty scanner etc.).
- *
- * Usual syntax/scanner level error handling should be done
- * in error fallback rules.
- *
- * @param errorCode the code of the errormessage to display
- */
---- zzScanError declaration
- String message;
- try {
- message = ZZ_ERROR_MSG[errorCode];
- }
- catch (ArrayIndexOutOfBoundsException e) {
- message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
- }
-
---- throws clause
- }
-
-
- /**
- * Pushes the specified amount of characters back into the input stream.
- *
- * They will be read again by then next call of the scanning method
- *
- * @param number the number of characters to be read again.
- * This number must not be greater than yylength()!
- */
---- yypushback decl (contains zzScanError exception)
- if ( number > yylength() )
- zzScanError(ZZ_PUSHBACK_2BIG);
-
- zzMarkedPos -= number;
- }
-
-
---- zzDoEOF
- /**
- * Resumes scanning until the next regular expression is matched,
- * the end of input is encountered or an I/O-Error occurs.
- *
- * @return the next token
- * @exception java.io.IOException if any I/O-Error occurs
- */
---- yylex declaration
- int zzInput;
- int zzAction;
-
- // cached fields:
- int zzCurrentPosL;
- int zzMarkedPosL;
- int zzEndReadL = zzEndRead;
- char [] zzBufferL = zzBuffer;
- char [] zzCMapL = ZZ_CMAP;
-
---- local declarations
-
- while (true) {
- zzMarkedPosL = zzMarkedPos;
-
---- start admin (line, char, col count)
- zzAction = -1;
-
- zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-
---- start admin (lexstate etc)
-
- zzForAction: {
- while (true) {
-
---- next input, line, col, char count, next transition, isFinal action
- zzAction = zzState;
- zzMarkedPosL = zzCurrentPosL;
---- line count update
- }
-
- }
- }
-
- // store back cached position
- zzMarkedPos = zzMarkedPosL;
---- char count update
-
---- actions
- default:
- if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
- zzAtEOF = true;
---- eofvalue
- }
- else {
---- no match
- }
- }
- }
- }
-
---- main
-
-}
diff --git a/tools/lexer/jflex-1.4/src/skeleton.nested b/tools/lexer/jflex-1.4/src/skeleton.nested
deleted file mode 100644
index 77717ad6a5ca..000000000000
--- a/tools/lexer/jflex-1.4/src/skeleton.nested
+++ /dev/null
@@ -1,428 +0,0 @@
-
- /** This character denotes the end of file */
- public static final int YYEOF = -1;
-
- /** initial size of the lookahead buffer */
---- private static final int ZZ_BUFFERSIZE = ...;
-
- /** lexical states */
---- lexical states, charmap
-
- /* error codes */
- private static final int ZZ_UNKNOWN_ERROR = 0;
- private static final int ZZ_NO_MATCH = 1;
- private static final int ZZ_PUSHBACK_2BIG = 2;
-
- /* error messages for the codes above */
- private static final String ZZ_ERROR_MSG[] = {
- "Unkown internal scanner error",
- "Error: could not match input",
- "Error: pushback value was too large"
- };
-
---- isFinal list
- /** the input device */
- private java.io.Reader zzReader;
-
- /** the current state of the DFA */
- private int zzState;
-
- /** the current lexical state */
- private int zzLexicalState = YYINITIAL;
-
- /** this buffer contains the current text to be matched and is
- the source of the yytext() string */
- private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
-
- /** the textposition at the last accepting state */
- private int zzMarkedPos;
-
- /** the current text position in the buffer */
- private int zzCurrentPos;
-
- /** startRead marks the beginning of the yytext() string in the buffer */
- private int zzStartRead;
-
- /** endRead marks the last character in the buffer, that has been read
- from input */
- private int zzEndRead;
-
- /** number of newlines encountered up to the start of the matched text */
- private int yyline;
-
- /** the number of characters up to the start of the matched text */
- private int yychar;
-
- /**
- * the number of characters from the last newline up to the start of the
- * matched text
- */
- private int yycolumn;
-
- /**
- * zzAtBOL == true <=> the scanner is currently at the beginning of a line
- */
- private boolean zzAtBOL = true;
-
- /** zzAtEOF == true <=> the scanner is at the EOF */
- private boolean zzAtEOF;
-
- /** denotes if the user-EOF-code has already been executed */
- private boolean zzEOFDone;
-
- /** the stack of open (nested) input streams to read from */
- private java.util.Stack zzStreams = new java.util.Stack();
-
- /**
- * inner class used to store info for nested
- * input streams
- */
- private static final class ZzFlexStreamInfo {
- java.io.Reader zzReader;
- int zzEndRead;
- int zzStartRead;
- int zzCurrentPos;
- int zzMarkedPos;
- int yyline;
- int yycolumn;
- char [] zzBuffer;
- boolean zzAtEOF;
- boolean zzEOFDone;
-
- /** sets all values stored in this class */
- ZzFlexStreamInfo(java.io.Reader zzReader, int zzEndRead, int zzStartRead,
- int zzCurrentPos, int zzMarkedPos,
- char [] zzBuffer, boolean zzAtEOF, int yyline, int yycolumn) {
- this.zzReader = zzReader;
- this.zzEndRead = zzEndRead;
- this.zzStartRead = zzStartRead;
- this.zzCurrentPos = zzCurrentPos;
- this.zzMarkedPos = zzMarkedPos;
- this.zzBuffer = zzBuffer;
- this.zzAtEOF = zzAtEOF;
- this.zzEOFDone = zzEOFDone;
- this.yyline = yyline;
- this.yycolumn = yycolumn;
- }
- }
-
---- user class code
-
- /**
- * Creates a new scanner
- * There is also a java.io.InputStream version of this constructor.
- *
- * @param in the java.io.Reader to read input from.
- */
---- constructor declaration
-
-
- /**
- * Refills the input buffer.
- *
- * @return false, iff there was new input.
- *
- * @exception java.io.IOException if any I/O-Error occurs
- */
- private boolean zzRefill() throws java.io.IOException {
-
- /* first: make room (if you can) */
- if (zzStartRead > 0) {
- System.arraycopy(zzBuffer, zzStartRead,
- zzBuffer, 0,
- zzEndRead-zzStartRead);
-
- /* translate stored positions */
- zzEndRead-= zzStartRead;
- zzCurrentPos-= zzStartRead;
- zzMarkedPos-= zzStartRead;
- zzStartRead = 0;
- }
-
- /* is the buffer big enough? */
- if (zzCurrentPos >= zzBuffer.length) {
- /* if not: blow it up */
- char newBuffer[] = new char[zzCurrentPos*2];
- System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
- zzBuffer = newBuffer;
- }
-
- /* finally: fill the buffer with new input */
- int numRead = zzReader.read(zzBuffer, zzEndRead,
- zzBuffer.length-zzEndRead);
-
- if (numRead > 0) {
- zzEndRead+= numRead;
- return false;
- }
- // unlikely but not impossible: read 0 characters, but not at end of stream
- if (numRead == 0) {
- int c = zzReader.read();
- if (c == -1) {
- return true;
- } else {
- zzBuffer[zzEndRead++] = (char) c;
- return false;
- }
- }
-
- // numRead < 0)
- return true;
- }
-
-
- /**
- * Closes the input stream.
- */
- public final void yyclose() throws java.io.IOException {
- zzAtEOF = true; /* indicate end of file */
- zzEndRead = zzStartRead; /* invalidate buffer */
-
- if (zzReader != null)
- zzReader.close();
- }
-
-
- /**
- * Stores the current input stream on a stack, and
- * reads from a new stream. Lexical state, line,
- * char, and column counting remain untouched.
- *
- * The current input stream can be restored with
- * yypopstream (usually in an <