構成 | マクロ定義 | 型定義 | 関数 | 変数

src/third_party/jscre/pcre_exec.cpp

#include "config.h"
#include "pcre_internal.h"
#include "ASCIICType.h"
#include <ctype.h>
#include <limits.h>
#include <string.h>

ソースコードを見る。

構成

struct  BracketChainNode
struct  MatchFrame
struct  MatchData
struct  MatchStack

マクロ定義

#define REQ_BYTE_MAX   1000
#define RMATCH_WHERE(num)   num
#define RRETURN_LABEL   RRETURN_SWITCH
#define RECURSIVE_MATCH_COMMON(num)
#define RECURSIVE_MATCH(num, ra, rb)
#define RECURSIVE_MATCH_STARTNG_NEW_GROUP(num, ra, rb)
#define RRETURN   goto RRETURN_LABEL
#define RRETURN_NO_MATCH   do { isMatch = false; RRETURN; } while (0)
#define BEGIN_OPCODE(opcode)   case OP_##opcode
#define NEXT_OPCODE   continue

型定義

typedef int ReturnLocation

関数

static bool matchRef (int offset, const UChar *subjectPtr, int length, const MatchData &md)
static int matchError (int errorCode, MatchStack &stack)
static void getUTF8CharAndIncrementLength (int &c, const unsigned char *subjectPtr, int &len)
static void startNewGroup (MatchFrame *currentFrame)
static void repeatInformationFromInstructionOffset (short instructionOffset, bool &minimize, int &minimumRepeats, int &maximumRepeats)
static int match (const UChar *subjectPtr, const unsigned char *instructionPtr, int offsetTop, MatchData &md)
static void tryFirstByteOptimization (const UChar *&subjectPtr, const UChar *endSubject, int first_byte, bool first_byte_caseless, bool useMultiLineFirstCharOptimization, const UChar *originalSubjectStart)
static bool tryRequiredByteOptimization (const UChar *&subjectPtr, const UChar *endSubject, int req_byte, int req_byte2, bool req_byte_caseless, bool hasFirstByte, const UChar *&reqBytePtr)
int jsRegExpExecute (const JSRegExp *re, const UChar *subject, int length, int start_offset, int *offsets, int offsetcount)

変数

static const unsigned matchLimit = 100000
static const unsigned FRAMES_ON_STACK = 16

マクロ定義

#define BEGIN_OPCODE (   opcode  )     case OP_##opcode

参照元 match().

#define NEXT_OPCODE   continue
#define RECURSIVE_MATCH (   num,
  ra,
  rb 
)
値:
do { \
        stack.pushNewFrame((ra), (rb), RMATCH_WHERE(num)); \
        RECURSIVE_MATCH_COMMON(num) \
    } while (0)

pcre_exec.cpp257 行で定義されています。

参照元 match().

#define RECURSIVE_MATCH_COMMON (   num  ) 
値:
goto RECURSE;\
    RRETURN_##num: \
    stack.popCurrentFrame();

pcre_exec.cpp252 行で定義されています。

#define RECURSIVE_MATCH_STARTNG_NEW_GROUP (   num,
  ra,
  rb 
)
値:
do { \
        stack.pushNewFrame((ra), (rb), RMATCH_WHERE(num)); \
        startNewGroup(stack.currentFrame); \
        RECURSIVE_MATCH_COMMON(num) \
    } while (0)

pcre_exec.cpp263 行で定義されています。

参照元 match().

#define REQ_BYTE_MAX   1000

pcre_exec.cpp136 行で定義されています。

参照元 tryRequiredByteOptimization().

#define RMATCH_WHERE (   num  )     num

pcre_exec.cpp235 行で定義されています。

#define RRETURN   goto RRETURN_LABEL

pcre_exec.cpp270 行で定義されています。

#define RRETURN_LABEL   RRETURN_SWITCH

pcre_exec.cpp236 行で定義されています。

#define RRETURN_NO_MATCH   do { isMatch = false; RRETURN; } while (0)

pcre_exec.cpp272 行で定義されています。


型定義

typedef int ReturnLocation

pcre_exec.cpp65 行で定義されています。


関数

static void getUTF8CharAndIncrementLength ( int &  c,
const unsigned char *  subjectPtr,
int &  len 
) [inline, static]

pcre_exec.cpp365 行で定義されています。

参照先 kjs_pcre_utf8_table3, と kjs_pcre_utf8_table4.

参照元 match().

int jsRegExpExecute ( const JSRegExp re,
const UChar subject,
int  length,
int  start_offset,
int *  offsets,
int  offsetcount 
)
static int match ( const UChar subjectPtr,
const unsigned char *  instructionPtr,
int  offsetTop,
MatchData md 
) [static]
static int matchError ( int  errorCode,
MatchStack stack 
) [static]

pcre_exec.cpp356 行で定義されています。

参照先 MatchStack::popAllFrames().

参照元 match().

static bool matchRef ( int  offset,
const UChar subjectPtr,
int  length,
const MatchData md 
) [static]
static void repeatInformationFromInstructionOffset ( short  instructionOffset,
bool &  minimize,
int &  minimumRepeats,
int &  maximumRepeats 
) [inline, static]

pcre_exec.cpp393 行で定義されています。

参照先 ASSERT.

参照元 match().

static void startNewGroup ( MatchFrame currentFrame  )  [inline, static]
static void tryFirstByteOptimization ( const UChar *&  subjectPtr,
const UChar endSubject,
int  first_byte,
bool  first_byte_caseless,
bool  useMultiLineFirstCharOptimization,
const UChar originalSubjectStart 
) [static]

pcre_exec.cpp1831 行で定義されています。

参照先 isNewline(), と toLowerCase().

参照元 jsRegExpExecute().

static bool tryRequiredByteOptimization ( const UChar *&  subjectPtr,
const UChar endSubject,
int  req_byte,
int  req_byte2,
bool  req_byte_caseless,
bool  hasFirstByte,
const UChar *&  reqBytePtr 
) [static]

pcre_exec.cpp1860 行で定義されています。

参照先 v8::internal::pp, と REQ_BYTE_MAX.

参照元 jsRegExpExecute().


変数

const unsigned FRAMES_ON_STACK = 16 [static]
const unsigned matchLimit = 100000 [static]

pcre_exec.cpp141 行で定義されています。

参照元 match().

 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義