C# 클래스 Tup.Cobar4Net.Parser.Recognizer.Mysql.Lexer.MySqlLexer

support MySql 5.5 token
파일 보기 프로젝트 열기: tupunco/Tup.Cobar4Net 1 사용 예제들

보호된 프로퍼티들

프로퍼티 타입 설명
ch char
curIndex int
eofIndex int
inCStyleComment bool
inCStyleCommentIgnore bool
offsetCache int
sbuf char[]
sbufRef ThreadLocal
sizeCache int
sql char[]

공개 메소드들

메소드 설명
AddCacheToke ( MySqlToken token ) : void
AppendStringContent ( StringBuilder sb ) : void

if GetStringValue returns "'abc\\'d'", then "abc\\'d" is appended

GetDecimalValue ( ) : BigDecimal
GetIntegerValue ( ) : Number

token must be MySqlToken.LiteralNumPureDigit

GetStringValue ( ) : string

make sense for those types of token:
MySqlToken.UsrVar : e.g. "@var1", "@'mary''s'";
MySqlToken.SysVar : e.g. "var2";
MySqlToken.LiteralChars , MySqlToken.LiteralNchars : e.g. "'ab\\'c'";
MySqlToken.LiteralBit : e.g. "0101"
MySqlToken.Identifier

GetStringValueUppercase ( ) : string

for MySqlToken.Identifier , MySqlToken.SysVar

MySqlLexer ( char sql ) : System
MySqlLexer ( string sql ) : System
NextToken ( ) : MySqlToken
SetCStyleCommentVersion ( int version ) : int
ToString ( ) : string
Token ( ) : MySqlToken

보호된 메소드들

메소드 설명
Eof ( ) : bool
Err ( string msg ) : SqlSyntaxErrorException

always throw SqlSyntaxErrorException

HasChars ( int howMany ) : bool
PutChar ( char ch, int index ) : void

Append a character to sbuf.

ScanBitField ( bool quoteMode ) : void
ScanChar ( ) : char
ScanChar ( int skip ) : char
ScanHexaDecimal ( bool quoteMode ) : void
ScanIdentifier ( ) : void

id is NOT included in `.

ScanIdentifierWithAccent ( ) : void

id is included in `.

id is included in `. first ` is included

ScanNumber ( ) : void

if first char is ., token may be MySqlToken.PuncDot if invalid char is presented after .

ScanPlaceHolder ( ) : void

not Sql syntax

ScanString ( ) : void
ScanSystemVariable ( ) : void

first @@ is included

ScanUserVariable ( ) : void

first @ is included

SkipSeparator ( ) : void

skip whitespace and comment

UpdateStringValue ( char src, int srcOffset, int len ) : void

update stringValue and stringValueUppercase . It is possible that sbuf be changed

비공개 메소드들

메소드 설명
FromSQL2Chars ( string sql ) : char[]
NextTokenInternal ( ) : MySqlToken
ScanIdentifierFromNumber ( int initOffset, int initSize ) : void

NOTE: id dosn't include '.' for sake of performance issue (based on shaojin.wensj's design). However, it is not convenient for MySql compatibility. e.g. ".123f" will be regarded as ".123" and "f" in MySql, but in this MySqlLexer , it will be "." and "123f" because ".123f" may be part of "db1.123f" and "123f" is the table name.

메소드 상세

AddCacheToke() 공개 메소드

public AddCacheToke ( MySqlToken token ) : void
token MySqlToken must be a keyword
리턴 void

AppendStringContent() 공개 메소드

if GetStringValue returns "'abc\\'d'", then "abc\\'d" is appended
public AppendStringContent ( StringBuilder sb ) : void
sb StringBuilder
리턴 void

Eof() 보호된 메소드

protected Eof ( ) : bool
리턴 bool

Err() 보호된 메소드

always throw SqlSyntaxErrorException
protected Err ( string msg ) : SqlSyntaxErrorException
msg string
리턴 System.SqlSyntaxErrorException

GetDecimalValue() 공개 메소드

public GetDecimalValue ( ) : BigDecimal
리턴 BigDecimal

GetIntegerValue() 공개 메소드

token must be MySqlToken.LiteralNumPureDigit
public GetIntegerValue ( ) : Number
리턴 System.Number

GetStringValue() 공개 메소드

make sense for those types of token:
MySqlToken.UsrVar : e.g. "@var1", "@'mary''s'";
MySqlToken.SysVar : e.g. "var2";
MySqlToken.LiteralChars , MySqlToken.LiteralNchars : e.g. "'ab\\'c'";
MySqlToken.LiteralBit : e.g. "0101"
MySqlToken.Identifier
public GetStringValue ( ) : string
리턴 string

GetStringValueUppercase() 공개 메소드

for MySqlToken.Identifier , MySqlToken.SysVar
public GetStringValueUppercase ( ) : string
리턴 string

HasChars() 보호된 메소드

protected HasChars ( int howMany ) : bool
howMany int
리턴 bool

MySqlLexer() 공개 메소드

public MySqlLexer ( char sql ) : System
sql char
리턴 System

MySqlLexer() 공개 메소드

public MySqlLexer ( string sql ) : System
sql string
리턴 System

NextToken() 공개 메소드

public NextToken ( ) : MySqlToken
리턴 MySqlToken

PutChar() 보호된 메소드

Append a character to sbuf.
protected PutChar ( char ch, int index ) : void
ch char
index int
리턴 void

ScanBitField() 보호된 메소드

protected ScanBitField ( bool quoteMode ) : void
quoteMode bool /// if false: first 0b has been skipped; if /// true: first b' has been skipped ///
리턴 void

ScanChar() 보호된 메소드

protected ScanChar ( ) : char
리턴 char

ScanChar() 보호된 메소드

protected ScanChar ( int skip ) : char
skip int /// if 1, then equals to /// ///
리턴 char

ScanHexaDecimal() 보호된 메소드

protected ScanHexaDecimal ( bool quoteMode ) : void
quoteMode bool /// if false: first 0x has been skipped; if /// true: first x' has been skipped ///
리턴 void

ScanIdentifier() 보호된 메소드

id is NOT included in `.
protected ScanIdentifier ( ) : void
리턴 void

ScanIdentifierWithAccent() 보호된 메소드

id is included in `.
id is included in `. first ` is included
protected ScanIdentifierWithAccent ( ) : void
리턴 void

ScanNumber() 보호된 메소드

if first char is ., token may be MySqlToken.PuncDot if invalid char is presented after .
protected ScanNumber ( ) : void
리턴 void

ScanPlaceHolder() 보호된 메소드

not Sql syntax
protected ScanPlaceHolder ( ) : void
리턴 void

ScanString() 보호된 메소드

protected ScanString ( ) : void
리턴 void

ScanSystemVariable() 보호된 메소드

first @@ is included
protected ScanSystemVariable ( ) : void
리턴 void

ScanUserVariable() 보호된 메소드

first @ is included
protected ScanUserVariable ( ) : void
리턴 void

SetCStyleCommentVersion() 공개 정적인 메소드

public static SetCStyleCommentVersion ( int version ) : int
version int
리턴 int

SkipSeparator() 보호된 메소드

skip whitespace and comment
protected SkipSeparator ( ) : void
리턴 void

ToString() 공개 메소드

public ToString ( ) : string
리턴 string

Token() 공개 메소드

public Token ( ) : MySqlToken
리턴 MySqlToken

UpdateStringValue() 보호된 메소드

update stringValue and stringValueUppercase . It is possible that sbuf be changed
protected UpdateStringValue ( char src, int srcOffset, int len ) : void
src char
srcOffset int
len int
리턴 void

프로퍼티 상세

ch 보호되어 있는 프로퍼티

always be sql [ curIndex ]
protected char ch
리턴 char

curIndex 보호되어 있는 프로퍼티

current index of sql
protected int curIndex
리턴 int

eofIndex 보호되어 있는 프로퍼티

always be sql .length - 1
protected int eofIndex
리턴 int

inCStyleComment 보호되어 있는 프로퍼티

protected bool inCStyleComment
리턴 bool

inCStyleCommentIgnore 보호되어 있는 프로퍼티

protected bool inCStyleCommentIgnore
리턴 bool

offsetCache 보호되어 있는 프로퍼티

protected int offsetCache
리턴 int

sbuf 보호되어 있는 프로퍼티

protected char[] sbuf
리턴 char[]

sbufRef 보호되어 있는 정적으로 프로퍼티

A character buffer for literals.
protected static ThreadLocal sbufRef
리턴 ThreadLocal

sizeCache 보호되어 있는 프로퍼티

protected int sizeCache
리턴 int

sql 보호되어 있는 프로퍼티

protected char[] sql
리턴 char[]