亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? myldbexpressions.pas

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標(biāo)準(zhǔn)數(shù)據(jù)庫控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
unit MYLDBExpressions;

interface

{$I MYLDBVer.inc}

uses Classes, SysUtils, DB,
{$IFDEF D6H}
     Variants,
     DateUtils,
{$ELSE}
     MYLDBD4Routines,
{$ENDIF}

     {$IFDEF DEBUG_LOG}
     MYLDBDebug,
     {$ENDIF}

     MYLDBBase,
     MYLDBVariant,
     MYLDBLexer,
     MYLDBExcept,
     MYLDBConst,
     MYLDBTypes,
     MYLDBConverts,
     MYLDBRelationalAlgebra,
     MYLDBDateFormat;


type

 TMYLDBExprNodeType = (entField, entConst, entOperator, entSet, entNull);
 TSign = (sgnUndefined, sgnPlus, sgnMinus);

 TMYLDBQuantifier = (qUNDEFINED, qALL, qANY);


  // forward declarations
  TMYLDBExprNode = class;
  TMYLDBExprNodeComparison = class;
  TMYLDBExprNodeArray = array of TMYLDBExprNode;

////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBExpression
//
////////////////////////////////////////////////////////////////////////////////


  TMYLDBExpression = class (TObject)
   private
    LLex: TMYLDBLexer;   // lexer with expression to parse
    Token: TToken;     // current token
    LCursor: TMYLDBCursor;
    LDataset: TDataset;
    FRootExprNode: TMYLDBExprNode;
    FCaseInsensitive: Boolean;
    FPartialKey: Boolean;
    F3ValueLogic: Boolean;
    FInMemory:    Boolean;
    FDatabaseName: String;
    FSessionName: String;
   private
    // gets current token
    function GetCurrentToken: Boolean;
    // gets next token
    function GetNextToken: Boolean; overload;
    // gets next token
    //function GetNextToken(NativeErrorCode: integer): Boolean; overload;
    // gets token and lokks at next token with check for token type restrictions
    function GetNextToken(PermittedTypes: TTokenTypes;
                          RaiseExceptions: Boolean = False): Boolean; overload;

   private
    // saves internal state (to restore in case of not successful forward parsing)
    procedure SaveState(var SavedTokenNo: integer);// var SavedRootNode: TMYLDBExprNode);
    // restores internal state (in case of not successful forward parsing)
    procedure RestoreState(SavedTokenNo: integer);// SavedRootNode: TMYLDBExprNode);

    // parses <,>,=,<>,>=,<=
    function ParseCompOp: TMYLDBDataOperator;
    // parses ALL, ANY, SOME
    function ParseQuantifier: TMYLDBQuantifier;
    // parses <row value constructor element>
    function ParseRowValueConstructorElement: TMYLDBExprNode;
    // parses <row subquery>
    function ParseRowSubquery(MustHaveOneRow: Boolean; MustHaveOneField: Boolean=True): TMYLDBExprNode;
    // parses <row value constructor element> | <row subquery>
    function ParseRowValueConstructor: TMYLDBExprNode;
    // parses <row value constructor> <comp op> <quantifier> <row value constructor>
    function ParseQuantifiedComparisonPredicate: TMYLDBExprNode;
    // parses <row value constructor> <comp op> <row value constructor>
    function ParseComparisonPredicate: TMYLDBExprNode;
    // parses <match value> [ NOT ] LIKE <pattern> [ ESCAPE <escape character> ]
    function ParseLikePredicate: TMYLDBExprNode;
    // parses <row value constructor> IS [ NOT ] NULL
    function ParseNullPredicate: TMYLDBExprNode;
    // parses <between predicate>
    function ParseBetweenPredicate: TMYLDBExprNode;
    // parses <in predicate>
    function ParseInPredicate: TMYLDBExprNode;
    // parses <exists predicate>
    function ParseExistsPredicate: TMYLDBExprNode;
    // parses <true/false>
    function ParseTrueFalseConst: TMYLDBExprNode;
    // parses <NULL> const
    function ParseNullConst: TMYLDBExprNode;
    // parses <comparison predicate> | <between predicate> | <in predicate>  |
    // <like predicate>  | <null predicate> | <quantified comparison predicate> |
    // <exists predicate> | <unique predicate> | <match predicate> | <overlaps predicate>
    function ParsePredicate: TMYLDBExprNode;
    // parses <predicate>  | <left paren> <search condition> <right paren> | <row value constructor>
    function ParseBooleanPrimary: TMYLDBExprNode;
    // parses <boolean primary> [ IS [ NOT ] <truth value> ]
    function ParseBooleanTest: TMYLDBExprNode;
    // parses [ NOT ] <boolean test>
    function ParseBooleanFactor: TMYLDBExprNode;
    // parses <boolean factor> | <boolean term> AND <boolean factor>
    function ParseBooleanTerm: TMYLDBExprNode;
    // parses <boolean term> | <search condition> OR <boolean term>
    function ParseSearchCondition: TMYLDBExprNode;

    // parses <value expression>
    function ParseValueExpression: TMYLDBExprNode;
    // parses <numeric value expression>
    function ParseNumericValueExpression: TMYLDBExprNode;
    // parses <term>
    function ParseTerm: TMYLDBExprNode;
    // parses <factor>
    function ParseFactor: TMYLDBExprNode;
    // parses <sign> ('+' or '-')
    function ParseSign: TSign;
    // parses <numeric primary>
    function ParseNumericPrimary: TMYLDBExprNode;
    // parses <value expression primary>
    function ParseValueExpressionPrimary: TMYLDBExprNode;
    // parses <unsigned value specification>
    function ParseUnsignedValueSpecification: TMYLDBExprNode;
    // parses <unsigned literal>
    function ParseUnsignedLiteral: TMYLDBExprNode;
    // parses <unsigned numeric literal>
    function ParseUnsignedNumericLiteral: TMYLDBExprNode;
    // parses <column reference>
    function ParseColumnReference: TMYLDBExprNode;
    // parses <set function specification>
    function ParseSetFunctionSpecification: TMYLDBExprNode;
    // parses <general set function>
    function ParseGeneralSetFunction: TMYLDBExprNode;
    // parses <cast specification>
    function ParseCastSpecification: TMYLDBExprNode;
    // parses <cast operand>
    function ParseCastOperand: TMYLDBExprNode;

    // parses <numeric value function>
    function ParseNumericValueFunction: TMYLDBExprNode;
    // parses <position expression>
    function ParsePositionExpression: TMYLDBExprNode;
    // parses <extract expression>
    function ParseExtractExpression: TMYLDBExprNode;
    // parses <length expression>
    function ParseLengthExpression: TMYLDBExprNode;
    // parses <LastAutoInc expression>
    function ParseLastAutoIncExpression: TMYLDBExprNode;
    // parses <RowNum expression>
    function ParseRowNumExpression: TMYLDBExprNode;
    // parses <x(y) expression>
    function ParseSingleArgMathExpression(rw: TReservedWord;
                            op: TMYLDBDataOperator; OpText: String): TMYLDBExprNode;
    // parses <MYLDB expression>
    function ParseMYLDBExpression: TMYLDBExprNode;
    // parses <ACOS expression>
    function ParseACOSExpression: TMYLDBExprNode;
    // parses <ASIN expression>
    function ParseASINExpression: TMYLDBExprNode;
    // parses <ATAN expression>
    function ParseATANExpression: TMYLDBExprNode;
    // parses <CEIL expression>
    function ParseCEILExpression: TMYLDBExprNode;
    // parses <COS expression>
    function ParseCOSExpression: TMYLDBExprNode;
    // parses <EXP expression>
    function ParseEXPExpression: TMYLDBExprNode;
    // parses <FLOOR expression>
    function ParseFLOORExpression: TMYLDBExprNode;
    // parses <LOG expression>
    function ParseLOGExpression: TMYLDBExprNode;
    // parses <POWER expression>
    function ParsePOWERExpression: TMYLDBExprNode;
    // parses <RAND expression>
    function ParseRANDExpression: TMYLDBExprNode;
    // parses <ROUND expression>
    function ParseROUNDExpression: TMYLDBExprNode;
    // parses <SIGN expression>
    function ParseSIGNExpression: TMYLDBExprNode;
    // parses <SIN expression>
    function ParseSINExpression: TMYLDBExprNode;
    // parses <SQR expression>
    function ParseSQRExpression: TMYLDBExprNode;
    // parses <SQRT expression>
    function ParseSQRTExpression: TMYLDBExprNode;
    // parses <math expression>
    function ParseMathExpression: TMYLDBExprNode;

    // parses <string value expression>
    function ParseStringValueExpression: TMYLDBExprNode;
    // parses <character value expression>
    function ParseCharacterValueExpression: TMYLDBExprNode;
    // parses <concatenation>
    function ParseConcatination: TMYLDBExprNode;
    // parses <character factor>
    function ParseCharacterFactor: TMYLDBExprNode;
    // parses <character primary>
    function ParseCharacterPrimary: TMYLDBExprNode;
    // parses <general literal>
    function ParseGeneralLiteral: TMYLDBExprNode;
    // parses <character string literal>
    function ParseCharacterStringLiteral: TMYLDBExprNode;
    // parses <datetime literal>
    function ParseDateTimeLiteral: TMYLDBExprNode;
    // parses <date literal>
    function ParseDateLiteral: TMYLDBExprNode;
    // parses <date string>
    function ParseDateString: TMYLDBExprNode;
    // parses <time literal>
    function ParseTimeLiteral: TMYLDBExprNode;
    // parses <time string>
    function ParseTimeString: TMYLDBExprNode;
    // parses <timestamp literal>
    function ParseTimeStampLiteral: TMYLDBExprNode;
    // parses <timestamp string>
    function ParseTimeStampString: TMYLDBExprNode;
    // parses <string value function>
    function ParseStringValueFunction: TMYLDBExprNode;
    // parses <character value function>
    function ParseCharacterValueFunction: TMYLDBExprNode;

    // parse <datetime value expression>
    function ParseDatetimeValueExpression: TMYLDBExprNode;
    // parse <datetime sysdate function>
    function ParseSysdateFunction: TMYLDBExprNode;
    // parse <datetime CURRENT_TIME function>
    function ParseCurrentTimeFunction: TMYLDBExprNode;
    // parse <datetime CURRENT_DATE function>
    function ParseCurrentDateFunction: TMYLDBExprNode;
    // parse <datetime TODATE function>
    function ParseToDateFunction: TMYLDBExprNode;

    // parse <interval value expression>
    function ParseIntervalValueExpression: TMYLDBExprNode;

    // parse <case expression>
    function ParseCaseExpression: TMYLDBExprNode;
    // parse <case abbreviation>
    function ParseCaseAbbreviation: TMYLDBExprNode;
    // parse <coalesce>
    function ParseCoalesce: TMYLDBExprNode;
    // parse <case specification>
    function ParseCaseSpecification: TMYLDBExprNode;
    // parse <simple case>
    function ParseSimpleCase: TMYLDBExprNode;
    // parse <searched case>
    function ParseSearchedCase: TMYLDBExprNode;

    // parse Blob Expression
    function ParseBlobExpression: TMYLDBExprNode;
    // parse MimeToBin Function
    function ParseMimeToBinFunction: TMYLDBExprNode;



   private
    procedure Clear;
   public
    // Constructors
    constructor Create; overload;
    // creates
    constructor Create(RootNode: TMYLDBExprNode); overload;
    //constructor Create(Lexer: TMYLDBLexer); overload;
    // Destructor
    destructor Destroy; override;
   public
    // Parsing for Locate
    procedure ParseForLocate(
                              Cursor: TMYLDBCursor;
                              FieldNames: String;
                              KeyValues: Variant;
                              CaseInsensitive: boolean = true;
                              PartialKey: boolean = false
                            );
    // Parsing for Filter
    procedure ParseForFilter(
                              Cursor: TMYLDBCursor;
                              Filter: String;
                              CaseInsensitive: boolean = true;
                              PartialKey: boolean = false
                            );
    // parse for IsAnyRecordMatchCondition (for quantified subquery comparison)
    procedure ParseForIsAnyRecordMatchCondition(
                                           Cursor: TMYLDBCursor;
                                           const FieldName: string;
                                           const Operator: TMYLDBDataOperator;
                                           const Value: TMYLDBVariant
                                           );
    // Parse For Boolean Expression (Filter, Where-Clause)
    procedure ParseForBooleanExpression(
                                        Dataset: TDataset;
                                        Lexer: TMYLDBLexer
                                        //CaseInsensitive: boolean = true;
                                        //PartialKey: boolean = false
                                       );
    // Parse ValueExpression
    procedure ParseForValueExpression(
                                        Dataset: TDataset;
                                        Lexer: TMYLDBLexer
                                        //CaseInsensitive: boolean = true;
                                        //PartialKey: boolean = false
                                       );
    // default value: const or function
    function  ParseForDefaultValueExpression(DefaultValue: String): Boolean;
    // Parse RowSubqueryExpression
    procedure ParseForRowSubqueryExpression(
                                        Dataset: TDataset;
                                        Lexer: TMYLDBLexer
                                       );
    // Return Variant
    function GetValue(TrueFalseNullLogic: boolean = true): TMYLDBVariant;
    // Get Boolean result
    function GetResult: Boolean;
    // calc subquery field values again
    procedure ResetSubqueryFieldValues;
    // Return subquery field value
    function GetSubqueryFieldValue(FieldNo: Integer): TMYLDBVariant;


    // is expression contains aggregated function
    function IsAggregated: Boolean;
    function IsAggregatedCountAll: Boolean;
    // Init for aggregated functions
    procedure Init;
    // Accumulate for group functions
    procedure Accumulate;
    procedure SetCountAll(RecordCount: Integer);
    // process assign AO
    procedure AssignAO(AO, ParentQueryAO: TMYLDBAO; ParentCursor: TMYLDBCursor);
    // process assign Cursor and its RecordBuffer
    procedure AssignCursor(Cursor: TMYLDBCursor; ParentQueryAO: TMYLDBAO; ParentCursor: TMYLDBCursor);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲日韩在线| 精品一二三四区| 蜜臀av性久久久久av蜜臀妖精| 激情久久久久久久久久久久久久久久| 国产精品一区免费视频| 91天堂素人约啪| 欧美精品黑人性xxxx| 国产亚洲欧美激情| 亚洲综合在线电影| 久久99精品视频| 色综合色狠狠综合色| 日本一区二区动态图| 午夜国产不卡在线观看视频| 国产精品资源网| 欧美午夜精品一区二区三区| 亚洲精品一区二区三区福利 | 成人av网站在线| 欧美丰满美乳xxx高潮www| 久久久不卡网国产精品一区| 一区二区三区免费在线观看| 国内精品久久久久影院薰衣草| 99vv1com这只有精品| 日韩一区二区三区在线| 最新久久zyz资源站| 久久国产尿小便嘘嘘| 在线视频亚洲一区| 国产亚洲1区2区3区| 天天色图综合网| av不卡一区二区三区| 久久综合资源网| 亚洲成人免费在线| 99在线精品一区二区三区| 日韩视频免费观看高清完整版在线观看 | 亚洲精品va在线观看| 国产乱子伦一区二区三区国色天香| 精品视频色一区| 亚洲欧美视频在线观看| 国产精一区二区三区| 91精品欧美久久久久久动漫| 亚洲啪啪综合av一区二区三区| 国产在线精品一区二区夜色 | 日本成人在线网站| 欧亚一区二区三区| 中文字幕一区二区三区四区| 韩国精品主播一区二区在线观看| 欧美少妇bbb| 亚洲欧美区自拍先锋| 成人深夜在线观看| 久久久久久久久伊人| 久久99精品国产麻豆婷婷| 欧美二区三区91| 亚洲与欧洲av电影| 97久久精品人人澡人人爽| 国产偷国产偷精品高清尤物| 欧美日韩色综合| 亚洲码国产岛国毛片在线| 懂色av噜噜一区二区三区av| 欧美精品一区二区三区视频| 青青青伊人色综合久久| 欧美日本一区二区三区四区| 亚洲福利视频导航| 欧美三级在线播放| 亚洲v中文字幕| 欧美精品久久久久久久久老牛影院| 亚洲一区视频在线观看视频| 91色.com| 亚洲欧美二区三区| 色爱区综合激月婷婷| 亚洲摸摸操操av| 色婷婷av一区二区三区大白胸| 亚洲精品国产精品乱码不99| 91麻豆精品视频| 一区二区三区免费| 欧美在线免费观看视频| 亚洲高清免费视频| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品一二一区| 久久精品视频一区| 成人激情文学综合网| 国产精品久久久久久久久动漫| 成人在线视频一区二区| 国产精品久久久久一区| 色婷婷久久综合| 亚洲成av人综合在线观看| 在线成人午夜影院| 另类小说欧美激情| 久久精品视频一区二区三区| av资源网一区| 一区二区三区四区不卡在线| 欧美日韩国产首页在线观看| 五月天婷婷综合| 欧美成人国产一区二区| 国产盗摄一区二区三区| 国产精品不卡一区二区三区| 91国产免费看| 日本aⅴ精品一区二区三区| xfplay精品久久| aaa欧美色吧激情视频| 亚洲国产日韩a在线播放性色| 宅男噜噜噜66一区二区66| 韩国三级中文字幕hd久久精品| 国产日韩v精品一区二区| 91香蕉视频在线| 五月婷婷久久丁香| 久久先锋影音av| 99视频有精品| 亚洲国产日韩av| 久久丝袜美腿综合| 色综合中文字幕国产| 亚洲一区二区影院| 精品精品欲导航| 9色porny自拍视频一区二区| 午夜精品久久久久久| 精品av久久707| 99国产精品国产精品久久| 日韩高清在线一区| 日本一区二区在线不卡| 在线国产亚洲欧美| 国产在线精品一区二区夜色| 亚洲精品菠萝久久久久久久| 欧美精品一区二| 色噜噜久久综合| 久久99精品国产.久久久久| 亚洲男同性视频| 欧美精品一区在线观看| 国产亚洲成av人在线观看导航| 色综合久久中文综合久久97| 老司机精品视频线观看86| 亚洲视频一二三| 欧美成人精品二区三区99精品| 91老师国产黑色丝袜在线| 久久不见久久见中文字幕免费| 亚洲色欲色欲www| 亚洲精品一区二区三区四区高清 | 首页欧美精品中文字幕| www欧美成人18+| 欧美日韩一级视频| 成人动漫视频在线| 久久精品国产99| 亚洲午夜影视影院在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 91精品国产综合久久婷婷香蕉 | 国产精品久久影院| 日韩午夜精品电影| 91成人网在线| 成人一区二区三区中文字幕| 美女在线视频一区| 亚洲福利视频三区| 亚洲欧美日韩国产综合在线| 久久精品视频一区二区三区| 日韩欧美国产系列| 欧美日韩午夜在线视频| 99国内精品久久| 国产suv一区二区三区88区| 蜜臀av性久久久久蜜臀av麻豆| 亚洲成av人片观看| 亚洲美女在线一区| 中文字幕一区二区在线观看| 国产亚洲精品精华液| 日韩欧美在线1卡| 欧美精品123区| 欧美日韩精品系列| 欧美在线看片a免费观看| 99热这里都是精品| 高清成人免费视频| 国产suv精品一区二区6| 另类调教123区| 蓝色福利精品导航| 麻豆一区二区在线| 美女被吸乳得到大胸91| 日韩成人免费电影| 水蜜桃久久夜色精品一区的特点 | 91精品国产综合久久香蕉的特点| 欧美三级韩国三级日本三斤| 在线亚洲精品福利网址导航| 日本电影亚洲天堂一区| 在线视频你懂得一区二区三区| 色综合天天综合网天天狠天天| 99麻豆久久久国产精品免费优播| 欧美一区二区三区免费视频| 在线不卡欧美精品一区二区三区| 欧美色综合久久| 欧美日韩国产免费| 欧美精品乱码久久久久久| 678五月天丁香亚洲综合网| 91麻豆精品国产91久久久久久| 4438x亚洲最大成人网| 正在播放一区二区| 日韩美女主播在线视频一区二区三区 | 国产精品网站在线播放| 国产精品伦一区二区三级视频| 中文天堂在线一区| 亚洲精品一二三| 亚洲午夜视频在线| 日本中文一区二区三区| 国内精品写真在线观看| 高清成人免费视频| 91久久精品一区二区| 欧美另类久久久品| 欧美v亚洲v综合ⅴ国产v|