com.thaiopensource.datatype.xsd.regex.jdk1_4
Class Translator

java.lang.Object
  extended by com.thaiopensource.datatype.xsd.regex.jdk1_4.Translator

public class Translator
extends Object

Translates XML Schema regexes into java.util.regex regexes.

See Also:
Pattern, XML Schema Part 2

Nested Class Summary
(package private) static class Translator.CharClass
           
(package private) static class Translator.CharRange
           
(package private) static class Translator.Complement
           
(package private) static class Translator.Empty
           
(package private) static class Translator.Property
           
(package private) static class Translator.Range
           
(package private) static class Translator.SimpleCharClass
           
(package private) static class Translator.SingleChar
           
(package private) static class Translator.Subtraction
           
(package private) static class Translator.Union
           
(package private) static class Translator.WideSingleChar
           
 
Field Summary
(package private) static int ALL
           
private static String[] blockNames
           
private static String categories
           
private static String CATEGORY_Pf
           
private static String CATEGORY_Pi
           
private static Translator.CharClass[] categoryCharClasses
           
private  char curChar
           
private static Translator.CharClass DOT
           
private  boolean eos
           
private static char EOS
           
private static Translator.CharClass ESC_c
           
private static Translator.CharClass ESC_C
           
private static Translator.CharClass ESC_d
           
private static Translator.CharClass ESC_D
           
private static Translator.CharClass ESC_i
           
private static Translator.CharClass ESC_I
           
private static Translator.CharClass ESC_s
           
private static Translator.CharClass ESC_S
           
private static Translator.CharClass ESC_w
           
private static Translator.CharClass ESC_W
           
private  int length
           
(package private) static Localizer localizer
           
private static int NONBMP_MAX
           
private static int NONBMP_MIN
           
(package private) static int NONE
           
(package private) static String NOT_ALLOWED_CLASS
           
private  int pos
           
private  String regExp
           
private  StringBuffer result
           
(package private) static int SOME
           
private static Translator.CharClass[] specialBlockCharClasses
          CharClass for each block name in specialBlockNames.
private static String[] specialBlockNames
          Names of blocks including ranges outside the BMP.
private static String subCategories
           
private static Translator.CharClass[] subCategoryCharClasses
           
private static char SURROGATE2_MAX
           
private static char SURROGATE2_MIN
           
(package private) static String SURROGATES1_CLASS
           
(package private) static String SURROGATES2_CLASS
           
private static char UNICODE_3_1_ADD_Ll
           
private static char UNICODE_3_1_ADD_Lu
           
private static char UNICODE_3_1_CHANGE_No_to_Nl_MAX
           
private static char UNICODE_3_1_CHANGE_No_to_Nl_MIN
           
 
Constructor Summary
private Translator(String regExp)
           
 
Method Summary
private  void advance()
           
private static Translator.CharClass computeCategoryCharClass(char code)
           
private static Translator.CharClass computeSubCategoryCharClass(String name)
           
private  void copyCurChar()
           
private  void expect(char c)
           
private static Translator.CharClass getCategoryCharClass(int ci)
           
private static Translator.CharClass getSubCategoryCharClass(int sci)
           
private static boolean isAsciiAlnum(char c)
           
private static boolean isBlock(String name)
           
private static boolean isJavaMetaChar(char c)
           
static void main(String[] args)
           
private static Translator.CharClass makeCharClass(String members)
           
private static Translator.CharClass makeCharClass(String categories, String includes, String excludeRanges)
           
private  RegexSyntaxException makeException(String key)
           
private  RegexSyntaxException makeException(String key, String arg)
           
private  Translator.CharClass parseCharClassEscOrXmlChar()
           
private  Translator.CharClass parseCharClassExpr()
           
private  Translator.CharClass parseEsc()
           
private  Translator.CharClass parseProp()
           
private  String parseQuantExact()
           
static String translate(String regexp)
          Translates a regular expression in the syntax of XML Schemas Part 2 into a regular expression in the syntax of java.util.regex.Pattern.
private  boolean translateAtom()
           
private  void translateBranch()
           
private  void translateQuantifier()
           
private  void translateQuantity()
           
private  void translateRegExp()
           
private  void translateTop()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

regExp

private final String regExp

pos

private int pos

length

private final int length

curChar

private char curChar

eos

private boolean eos

result

private final StringBuffer result

categories

private static final String categories
See Also:
Constant Field Values

categoryCharClasses

private static final Translator.CharClass[] categoryCharClasses

subCategories

private static final String subCategories
See Also:
Constant Field Values

subCategoryCharClasses

private static final Translator.CharClass[] subCategoryCharClasses

NONBMP_MIN

private static final int NONBMP_MIN
See Also:
Constant Field Values

NONBMP_MAX

private static final int NONBMP_MAX
See Also:
Constant Field Values

SURROGATE2_MIN

private static final char SURROGATE2_MIN
See Also:
Constant Field Values

SURROGATE2_MAX

private static final char SURROGATE2_MAX
See Also:
Constant Field Values

localizer

static final Localizer localizer

blockNames

private static final String[] blockNames

specialBlockNames

private static final String[] specialBlockNames
Names of blocks including ranges outside the BMP.


specialBlockCharClasses

private static final Translator.CharClass[] specialBlockCharClasses
CharClass for each block name in specialBlockNames.


DOT

private static final Translator.CharClass DOT

ESC_d

private static final Translator.CharClass ESC_d

ESC_D

private static final Translator.CharClass ESC_D

ESC_W

private static final Translator.CharClass ESC_W

ESC_w

private static final Translator.CharClass ESC_w

ESC_s

private static final Translator.CharClass ESC_s

ESC_S

private static final Translator.CharClass ESC_S

ESC_i

private static final Translator.CharClass ESC_i

ESC_I

private static final Translator.CharClass ESC_I

ESC_c

private static final Translator.CharClass ESC_c

ESC_C

private static final Translator.CharClass ESC_C

EOS

private static final char EOS
See Also:
Constant Field Values

NONE

static final int NONE
See Also:
Constant Field Values

SOME

static final int SOME
See Also:
Constant Field Values

ALL

static final int ALL
See Also:
Constant Field Values

SURROGATES1_CLASS

static final String SURROGATES1_CLASS
See Also:
Constant Field Values

SURROGATES2_CLASS

static final String SURROGATES2_CLASS
See Also:
Constant Field Values

NOT_ALLOWED_CLASS

static final String NOT_ALLOWED_CLASS
See Also:
Constant Field Values

UNICODE_3_1_ADD_Lu

private static final char UNICODE_3_1_ADD_Lu
See Also:
Constant Field Values

UNICODE_3_1_ADD_Ll

private static final char UNICODE_3_1_ADD_Ll
See Also:
Constant Field Values

UNICODE_3_1_CHANGE_No_to_Nl_MIN

private static final char UNICODE_3_1_CHANGE_No_to_Nl_MIN
See Also:
Constant Field Values

UNICODE_3_1_CHANGE_No_to_Nl_MAX

private static final char UNICODE_3_1_CHANGE_No_to_Nl_MAX
See Also:
Constant Field Values

CATEGORY_Pi

private static final String CATEGORY_Pi
See Also:
Constant Field Values

CATEGORY_Pf

private static final String CATEGORY_Pf
See Also:
Constant Field Values
Constructor Detail

Translator

private Translator(String regExp)
Method Detail

translate

public static String translate(String regexp)
                        throws RegexSyntaxException
Translates a regular expression in the syntax of XML Schemas Part 2 into a regular expression in the syntax of java.util.regex.Pattern. The translation assumes that the string to be matched against the regex uses surrogate pairs correctly. If the string comes from XML content, a conforming XML parser will automatically check this; if the string comes from elsewhere, it may be necessary to check surrogate usage before matching.

Parameters:
regexp - a String containing a regular expression in the syntax of XML Schemas Part 2
Returns:
a String containing a regular expression in the syntax of java.util.regex.Pattern
Throws:
RegexSyntaxException - if regexp is not a regular expression in the syntax of XML Schemas Part 2
See Also:
Pattern, XML Schema Part 2

advance

private void advance()

translateTop

private void translateTop()
                   throws RegexSyntaxException
Throws:
RegexSyntaxException

translateRegExp

private void translateRegExp()
                      throws RegexSyntaxException
Throws:
RegexSyntaxException

translateBranch

private void translateBranch()
                      throws RegexSyntaxException
Throws:
RegexSyntaxException

translateQuantifier

private void translateQuantifier()
                          throws RegexSyntaxException
Throws:
RegexSyntaxException

translateQuantity

private void translateQuantity()
                        throws RegexSyntaxException
Throws:
RegexSyntaxException

parseQuantExact

private String parseQuantExact()
                        throws RegexSyntaxException
Throws:
RegexSyntaxException

copyCurChar

private void copyCurChar()

translateAtom

private boolean translateAtom()
                       throws RegexSyntaxException
Throws:
RegexSyntaxException

makeCharClass

private static Translator.CharClass makeCharClass(String categories,
                                                  String includes,
                                                  String excludeRanges)

parseEsc

private Translator.CharClass parseEsc()
                               throws RegexSyntaxException
Throws:
RegexSyntaxException

parseProp

private Translator.CharClass parseProp()
                                throws RegexSyntaxException
Throws:
RegexSyntaxException

isBlock

private static boolean isBlock(String name)

isAsciiAlnum

private static boolean isAsciiAlnum(char c)

expect

private void expect(char c)
             throws RegexSyntaxException
Throws:
RegexSyntaxException

parseCharClassExpr

private Translator.CharClass parseCharClassExpr()
                                         throws RegexSyntaxException
Throws:
RegexSyntaxException

parseCharClassEscOrXmlChar

private Translator.CharClass parseCharClassEscOrXmlChar()
                                                 throws RegexSyntaxException
Throws:
RegexSyntaxException

makeException

private RegexSyntaxException makeException(String key)

makeException

private RegexSyntaxException makeException(String key,
                                           String arg)

isJavaMetaChar

private static boolean isJavaMetaChar(char c)

getCategoryCharClass

private static Translator.CharClass getCategoryCharClass(int ci)

getSubCategoryCharClass

private static Translator.CharClass getSubCategoryCharClass(int sci)

computeCategoryCharClass

private static Translator.CharClass computeCategoryCharClass(char code)

computeSubCategoryCharClass

private static Translator.CharClass computeSubCategoryCharClass(String name)

makeCharClass

private static Translator.CharClass makeCharClass(String members)

main

public static void main(String[] args)
                 throws RegexSyntaxException
Throws:
RegexSyntaxException