#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.cpp の 257 行で定義されています。
参照元 match().
#define RECURSIVE_MATCH_COMMON | ( | num | ) |
goto RECURSE;\
RRETURN_##num: \
stack.popCurrentFrame();
pcre_exec.cpp の 252 行で定義されています。
#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.cpp の 263 行で定義されています。
参照元 match().
#define REQ_BYTE_MAX 1000 |
pcre_exec.cpp の 136 行で定義されています。
#define RMATCH_WHERE | ( | num | ) | num |
pcre_exec.cpp の 235 行で定義されています。
#define RRETURN goto RRETURN_LABEL |
pcre_exec.cpp の 270 行で定義されています。
#define RRETURN_LABEL RRETURN_SWITCH |
pcre_exec.cpp の 236 行で定義されています。
#define RRETURN_NO_MATCH do { isMatch = false; RRETURN; } while (0) |
pcre_exec.cpp の 272 行で定義されています。
typedef int ReturnLocation |
pcre_exec.cpp の 65 行で定義されています。
static void getUTF8CharAndIncrementLength | ( | int & | c, | |
const unsigned char * | subjectPtr, | |||
int & | len | |||
) | [inline, static] |
int jsRegExpExecute | ( | const JSRegExp * | re, | |
const UChar * | subject, | |||
int | length, | |||
int | start_offset, | |||
int * | offsets, | |||
int | offsetcount | |||
) |
pcre_exec.cpp の 1915 行で定義されています。
参照先 ASSERT, DPRINTF, MatchData::endMatchPtr, MatchData::endOffsetTop, MatchData::endSubject, JSRegExp::first_byte, flipCase(), MatchData::ignoreCase, IsAnchoredOption, JSRegExpErrorHitLimit, JSRegExpErrorNoMatch, JSRegExpErrorNoMemory, match(), MatchData::multiline, MatchData::offsetEnd, MatchData::offsetMax, MatchData::offsetOverflow, MatchData::offsetVector, JSRegExp::options, JSRegExp::req_byte, REQ_IGNORE_CASE, MatchData::startSubject, toLowerCase(), JSRegExp::top_backref, JSRegExp::top_bracket, tryFirstByteOptimization(), tryRequiredByteOptimization(), UseFirstByteOptimizationOption, と UseRequiredByteOptimizationOption.
static int match | ( | const UChar * | subjectPtr, | |
const unsigned char * | instructionPtr, | |||
int | offsetTop, | |||
MatchData & | md | |||
) | [static] |
pcre_exec.cpp の 407 行で定義されています。
参照先 advanceToEndOfBracket(), MatchFrame::args, ASSERT, ASSERT_NOT_REACHED, BEGIN_OPCODE, MatchFrame::bracketChain, BracketChainNode::bracketStart, MatchFrame::ctype, MatchStack::currentFrame, MatchFrame::data, DPRINTF, MatchData::endMatchPtr, MatchData::endOffsetTop, MatchData::endSubject, EXTRACT_BASIC_MAX, MatchFrame::fc, MatchFrame::fi, FOR_EACH_OPCODE, get2ByteValue(), getLinkValue(), getUTF8CharAndIncrementLength(), MatchData::ignoreCase, MatchFrame::instructionPtr, MatchFrame::instructionPtrAtStartOfOnce, isASCIIDigit(), isNewline(), isSpaceChar(), isWordChar(), JSRegExpErrorHitLimit, JSRegExpErrorInternal, kjs_pcre_ucp_othercase(), kjs_pcre_xclass(), MatchFrame::length, LINK_SIZE, MatchFrame::locals, matchError(), matchLimit, matchRef(), MatchFrame::max, NULL, MatchFrame::number, MatchFrame::offset, MatchData::offsetEnd, MatchData::offsetMax, MatchData::offsetOverflow, MatchFrame::offsetTop, MatchData::offsetVector, BracketChainNode::previousBracket, RECURSIVE_MATCH, RECURSIVE_MATCH_STARTNG_NEW_GROUP, repeatInformationFromInstructionOffset(), MatchFrame::repeatOthercase, v8::internal::RETURN, MatchFrame::returnLocation, MatchFrame::saveOffset1, MatchFrame::saveOffset2, MatchFrame::saveOffset3, startNewGroup(), MatchFrame::startOfRepeatingBracket, MatchData::startSubject, MatchFrame::subjectPtr, MatchFrame::subjectPtrAtStartOfInstruction, と toLowerCase().
参照元 jsRegExpExecute(), と strtod().
static int matchError | ( | int | errorCode, | |
MatchStack & | stack | |||
) | [static] |
static bool matchRef | ( | int | offset, | |
const UChar * | subjectPtr, | |||
int | length, | |||
const MatchData & | md | |||
) | [static] |
pcre_exec.cpp の 190 行で定義されています。
参照先 MatchData::endSubject, MatchData::ignoreCase, kjs_pcre_ucp_othercase(), MatchData::offsetVector, と MatchData::startSubject.
参照元 match().
static void repeatInformationFromInstructionOffset | ( | short | instructionOffset, | |
bool & | minimize, | |||
int & | minimumRepeats, | |||
int & | maximumRepeats | |||
) | [inline, static] |
static void startNewGroup | ( | MatchFrame * | currentFrame | ) | [inline, static] |
const unsigned FRAMES_ON_STACK = 16 [static] |
const unsigned matchLimit = 100000 [static] |
pcre_exec.cpp の 141 行で定義されています。
参照元 match().