#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().
1.7.1