org.joni
Class ArrayCompiler

java.lang.Object
  extended by org.joni.Compiler
      extended by org.joni.ArrayCompiler
All Implemented Interfaces:
org.jcodings.exception.ErrorMessages

final class ArrayCompiler
extends Compiler


Field Summary
private  int[] code
           
private  int codeLength
           
private static int QUANTIFIER_EXPAND_LIMIT_SIZE
           
private static int REPEAT_RANGE_ALLOC
           
private  int templateNum
           
private  byte[][] templates
           
 
Fields inherited from class org.joni.Compiler
analyser, enc, regex
 
Fields inherited from interface org.joni.exception.ErrorMessages
ERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE, ERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE, ERR_CONTROL_CODE_SYNTAX, ERR_DEFAULT_ENCODING_IS_NOT_SETTED, ERR_EMPTY_CHAR_CLASS, ERR_EMPTY_GROUP_NAME, ERR_EMPTY_RANGE_IN_CHAR_CLASS, ERR_END_PATTERN_AT_CONTROL, ERR_END_PATTERN_AT_ESCAPE, ERR_END_PATTERN_AT_LEFT_BRACE, ERR_END_PATTERN_AT_LEFT_BRACKET, ERR_END_PATTERN_AT_META, ERR_END_PATTERN_IN_GROUP, ERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS, ERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY, ERR_INVALID_ARGUMENT, ERR_INVALID_BACKREF, ERR_INVALID_CHAR_IN_GROUP_NAME, ERR_INVALID_COMBINATION_OF_OPTIONS, ERR_INVALID_GROUP_NAME, ERR_INVALID_LOOK_BEHIND_PATTERN, ERR_INVALID_POSIX_BRACKET_TYPE, ERR_INVALID_REPEAT_RANGE_PATTERN, ERR_INVALID_WIDE_CHAR_VALUE, ERR_MATCH_STACK_LIMIT_OVER, ERR_MEMORY, ERR_META_CODE_SYNTAX, ERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE, ERR_MULTIPLEX_DEFINED_NAME, ERR_MULTIPLEX_DEFINITION_NAME_CALL, ERR_NESTED_REPEAT_OPERATOR, ERR_NEVER_ENDING_RECURSION, ERR_NOT_SUPPORTED_ENCODING_COMBINATION, ERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED, ERR_OVER_THREAD_PASS_LIMIT_COUNT, ERR_PARSER_BUG, ERR_PREMATURE_END_OF_CHAR_CLASS, ERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR, ERR_STACK_BUG, ERR_TARGET_OF_REPEAT_OPERATOR_INVALID, ERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED, ERR_TOO_BIG_BACKREF_NUMBER, ERR_TOO_BIG_NUMBER, ERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE, ERR_TOO_BIG_SB_CHAR_VALUE, ERR_TOO_MANY_MULTI_BYTE_RANGES, ERR_TOO_SHORT_MULTI_BYTE_STRING, ERR_TYPE_BUG, ERR_UNDEFINED_BYTECODE, ERR_UNDEFINED_GROUP_OPTION, ERR_UNDEFINED_GROUP_REFERENCE, ERR_UNDEFINED_NAME_REFERENCE, ERR_UNEXPECTED_BYTECODE, ERR_UNMATCHED_CLOSE_PARENTHESIS, ERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS, ERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE, MISMATCH, NO_SUPPORT_CONFIG
 
Fields inherited from interface org.jcodings.exception.ErrorMessages
ERR_COULD_NOT_REPLICATE, ERR_ENCODING_ALIAS_ALREADY_REGISTERED, ERR_ENCODING_ALREADY_REGISTERED, ERR_ENCODING_CLASS_DEF_NOT_FOUND, ERR_ENCODING_LOAD_ERROR, ERR_ENCODING_REPLICA_ALREADY_REGISTERED, ERR_ILLEGAL_CHARACTER, ERR_INVALID_CHAR_PROPERTY_NAME, ERR_INVALID_CODE_POINT_VALUE, ERR_NO_SUCH_ENCODNG, ERR_TOO_BIG_WIDE_CHAR_VALUE, ERR_TOO_LONG_WIDE_CHAR_VALUE, ERR_TRANSCODER_ALREADY_REGISTERED, ERR_TRANSCODER_CLASS_DEF_NOT_FOUND, ERR_TRANSCODER_LOAD_ERROR
 
Constructor Summary
ArrayCompiler(Analyser analyser)
           
 
Method Summary
private  void addAbsAddr(int addr)
           
private  void addBytes(byte[] bytes, int p, int length)
           
protected  void addCompileString(byte[] bytes, int p, int mbLength, int strLength, boolean ignoreCase)
           
private  int addCompileStringlength(byte[] bytes, int p, int mbLength, int strLength, boolean ignoreCase)
           
private  void addInt(int i)
           
private  void addInts(int[] ints, int length)
           
private  void addLength(int length)
           
private  void addMemNum(int num)
           
private  void addMultiByteCClass(CodeRangeBuffer mbuf)
           
private  void addObject(Object o)
           
private  void addOpcode(int opcode)
           
private  void addOpcodeOption(int opcode, int option)
           
private  void addOpcodeRelAddr(int opcode, int addr)
           
private  void addOption(int option)
           
private  void addPointer(Object o)
           
private  void addRelAddr(int addr)
           
private  void addStateCheckNum(int num)
           
private  void addTemplate(byte[] bytes)
           
private static boolean cknOn(int ckn)
           
protected  void compileAltNode(ConsAltNode node)
           
protected  void compileAnchorNode(AnchorNode node)
           
protected  void compileAnyCharNode()
           
protected  void compileBackrefNode(BackRefNode node)
           
protected  void compileCallNode(CallNode node)
           
protected  void compileCClassNode(CClassNode cc)
           
private  int compileCECLengthQuantifierNode(QuantifierNode qn)
           
protected  void compileCECQuantifierNode(QuantifierNode qn)
           
protected  void compileCTypeNode(CTypeNode node)
           
protected  void compileEncloseNode(EncloseNode node)
           
private  int compileLengthAnchorNode(AnchorNode node)
           
private  int compileLengthCClassNode(CClassNode cc)
           
private  int compileLengthEncloseNode(EncloseNode node)
           
private  int compileLengthOptionNode(EncloseNode node)
           
private  int compileLengthStringNode(Node node)
           
private  int compileLengthStringRawNode(StringNode sn)
           
private  int compileLengthTree(Node node)
           
private  int compileNonCECLengthQuantifierNode(QuantifierNode qn)
           
protected  void compileNonCECQuantifierNode(QuantifierNode qn)
           
protected  void compileOptionNode(EncloseNode node)
           
private  void compileRangeRepeatNode(QuantifierNode qn, int targetLen, int emptyInfo)
           
private  void compileTreeEmptyCheck(Node node, int emptyInfo)
           
private  void ensure(int size)
           
private  void entryRepeatRange(int id, int lower, int upper)
           
protected  void finish()
           
private  boolean isNeedStrLenOpExact(int op)
           
private  boolean opTemplated(int op)
           
protected  void prepare()
           
private  int selectStrOpcode(int mbLength, int strLength, boolean ignoreCase)
           
(package private)  void setInt(int i, int offset)
           
 
Methods inherited from class org.joni.Compiler
compile, compileTree, compileTreeNTimes, newInternalException, newSyntaxException
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

code

private int[] code

codeLength

private int codeLength

templates

private byte[][] templates

templateNum

private int templateNum

REPEAT_RANGE_ALLOC

private static final int REPEAT_RANGE_ALLOC
See Also:
Constant Field Values

QUANTIFIER_EXPAND_LIMIT_SIZE

private static final int QUANTIFIER_EXPAND_LIMIT_SIZE
See Also:
Constant Field Values
Constructor Detail

ArrayCompiler

ArrayCompiler(Analyser analyser)
Method Detail

prepare

protected final void prepare()
Specified by:
prepare in class Compiler

finish

protected final void finish()
Specified by:
finish in class Compiler

compileAltNode

protected void compileAltNode(ConsAltNode node)
Specified by:
compileAltNode in class Compiler

isNeedStrLenOpExact

private boolean isNeedStrLenOpExact(int op)

opTemplated

private boolean opTemplated(int op)

selectStrOpcode

private int selectStrOpcode(int mbLength,
                            int strLength,
                            boolean ignoreCase)

compileTreeEmptyCheck

private void compileTreeEmptyCheck(Node node,
                                   int emptyInfo)

addCompileStringlength

private int addCompileStringlength(byte[] bytes,
                                   int p,
                                   int mbLength,
                                   int strLength,
                                   boolean ignoreCase)

addCompileString

protected final void addCompileString(byte[] bytes,
                                      int p,
                                      int mbLength,
                                      int strLength,
                                      boolean ignoreCase)
Specified by:
addCompileString in class Compiler

compileLengthStringNode

private int compileLengthStringNode(Node node)

compileLengthStringRawNode

private int compileLengthStringRawNode(StringNode sn)

addMultiByteCClass

private void addMultiByteCClass(CodeRangeBuffer mbuf)

compileLengthCClassNode

private int compileLengthCClassNode(CClassNode cc)

compileCClassNode

protected void compileCClassNode(CClassNode cc)
Specified by:
compileCClassNode in class Compiler

compileCTypeNode

protected void compileCTypeNode(CTypeNode node)
Specified by:
compileCTypeNode in class Compiler

compileAnyCharNode

protected void compileAnyCharNode()
Specified by:
compileAnyCharNode in class Compiler

compileCallNode

protected void compileCallNode(CallNode node)
Specified by:
compileCallNode in class Compiler

compileBackrefNode

protected void compileBackrefNode(BackRefNode node)
Specified by:
compileBackrefNode in class Compiler

entryRepeatRange

private void entryRepeatRange(int id,
                              int lower,
                              int upper)

compileRangeRepeatNode

private void compileRangeRepeatNode(QuantifierNode qn,
                                    int targetLen,
                                    int emptyInfo)

cknOn

private static boolean cknOn(int ckn)

compileCECLengthQuantifierNode

private int compileCECLengthQuantifierNode(QuantifierNode qn)

compileCECQuantifierNode

protected void compileCECQuantifierNode(QuantifierNode qn)
Specified by:
compileCECQuantifierNode in class Compiler

compileNonCECLengthQuantifierNode

private int compileNonCECLengthQuantifierNode(QuantifierNode qn)

compileNonCECQuantifierNode

protected void compileNonCECQuantifierNode(QuantifierNode qn)
Specified by:
compileNonCECQuantifierNode in class Compiler

compileLengthOptionNode

private int compileLengthOptionNode(EncloseNode node)

compileOptionNode

protected void compileOptionNode(EncloseNode node)
Specified by:
compileOptionNode in class Compiler

compileLengthEncloseNode

private int compileLengthEncloseNode(EncloseNode node)

compileEncloseNode

protected void compileEncloseNode(EncloseNode node)
Specified by:
compileEncloseNode in class Compiler

compileLengthAnchorNode

private int compileLengthAnchorNode(AnchorNode node)

compileAnchorNode

protected void compileAnchorNode(AnchorNode node)
Specified by:
compileAnchorNode in class Compiler

compileLengthTree

private int compileLengthTree(Node node)

ensure

private void ensure(int size)

addInt

private void addInt(int i)

setInt

void setInt(int i,
            int offset)

addObject

private void addObject(Object o)

addBytes

private void addBytes(byte[] bytes,
                      int p,
                      int length)

addInts

private void addInts(int[] ints,
                     int length)

addOpcode

private void addOpcode(int opcode)

addStateCheckNum

private void addStateCheckNum(int num)

addRelAddr

private void addRelAddr(int addr)

addAbsAddr

private void addAbsAddr(int addr)

addLength

private void addLength(int length)

addMemNum

private void addMemNum(int num)

addPointer

private void addPointer(Object o)

addOption

private void addOption(int option)

addOpcodeRelAddr

private void addOpcodeRelAddr(int opcode,
                              int addr)

addOpcodeOption

private void addOpcodeOption(int opcode,
                             int option)

addTemplate

private void addTemplate(byte[] bytes)


Copyright © 2013. All Rights Reserved.