Files
HeidiSQL/components/synedit/Source/SynHighlighterDml.pas
2021-03-16 20:12:46 +01:00

3441 lines
102 KiB
ObjectPascal

{-------------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
the specific language governing rights and limitations under the License.
The Original Code is: SynHighlighterDml.pas, released 2000-04-17.
The Original Code is based on the mwDmlSyn.pas file from the
mwEdit component suite by Martin Waldenburg and other developers, the Initial
Author of this file is Peter Adam.
Unicode translation by Maël Hörz.
All Rights Reserved.
Contributors to the SynEdit and mwEdit projects are listed in the
Contributors.txt file.
Alternatively, the contents of this file may be used under the terms of the
GNU General Public License Version 2 or later (the "GPL"), in which case
the provisions of the GPL are applicable instead of those above.
If you wish to allow use of your version of this file only under the terms
of the GPL and not to allow others to use your version of this file
under the MPL, indicate your decision by deleting the provisions above and
replace them with the notice and other provisions required by the GPL.
If you do not delete the provisions above, a recipient may use your version
of this file under either the MPL or the GPL.
$Id: SynHighlighterDml.pas,v 1.11.2.7 2008/09/14 16:25:00 maelh Exp $
You may retrieve the latest version of this file at the SynEdit home page,
located at http://SynEdit.SourceForge.net
Known Issues:
- There are no metadata qualifiers.
-------------------------------------------------------------------------------}
{
@abstract(Provides a Dml highlighter for SynEdit)
@author(Peter Adam)
@created(1999)
@lastmod(2000-06-23)
The SynHighlighterDml unit provides SynEdit with a Dml highlighter.
}
unit SynHighlighterDml;
{$I SynEdit.inc}
interface
uses
Graphics,
SynEditTypes,
SynEditHighlighter,
SynUnicode,
SysUtils,
Classes;
type
TtkTokenKind = (tkBlock, tkComment, tkForm, tkFunction, tkIdentifier, tkKey,
tkNull, tkNumber, tkQualifier, tkSpace, tkSpecial, tkString, tkSymbol,
tkUnknown, tkVariable);
TRangeState = (rsANil, rsAdd, rsFind, rsUnknown);
PIdentFuncTableFunc = ^TIdentFuncTableFunc;
TIdentFuncTableFunc = function (Index: Integer): TtkTokenKind of object;
TSynDmlSyn = class(TSynCustomHighlighter)
private
FRange: TRangeState;
FIdentFuncTable: array[0..2438] of TIdentFuncTableFunc;
FTokenID: TtkTokenKind;
FFormAttri: TSynHighlighterAttributes;
FBlockAttri: TSynHighlighterAttributes;
FKeyAttri: TSynHighlighterAttributes;
FQualiAttri: TSynHighlighterAttributes;
FCommentAttri: TSynHighlighterAttributes;
FFunctionAttri: TSynHighlighterAttributes;
FVariableAttri: TSynHighlighterAttributes;
FSpecialAttri: TSynHighlighterAttributes;
FStringAttri: TSynHighlighterAttributes;
FNumberAttri: TSynHighlighterAttributes;
FSymbolAttri: TSynHighlighterAttributes;
FIdentifierAttri: TSynHighlighterAttributes;
FSpaceAttri: TSynHighlighterAttributes;
function AltFunc(Index: Integer): TtkTokenKind;
function FuncAbs(Index: Integer): TtkTokenKind;
function FuncAbsolute_position(Index: Integer): TtkTokenKind;
function FuncAccount(Index: Integer): TtkTokenKind;
function FuncAcos(Index: Integer): TtkTokenKind;
function FuncActual_break(Index: Integer): TtkTokenKind;
function FuncAdd(Index: Integer): TtkTokenKind;
function FuncAdd_form(Index: Integer): TtkTokenKind;
function FuncAlternate_form(Index: Integer): TtkTokenKind;
function FuncAscii(Index: Integer): TtkTokenKind;
function FuncAsin(Index: Integer): TtkTokenKind;
function FuncAtan(Index: Integer): TtkTokenKind;
function FuncAtan2(Index: Integer): TtkTokenKind;
function FuncAttributes(Index: Integer): TtkTokenKind;
function FuncBack(Index: Integer): TtkTokenKind;
function FuncBase(Index: Integer): TtkTokenKind;
function FuncBatch(Index: Integer): TtkTokenKind;
function FuncBegin_block(Index: Integer): TtkTokenKind;
function FuncBegin_case(Index: Integer): TtkTokenKind;
function FuncBegin_disable_trigger(Index: Integer): TtkTokenKind;
function FuncBegin_row(Index: Integer): TtkTokenKind;
function FuncBegin_signal_to_status(Index: Integer): TtkTokenKind;
function FuncBell(Index: Integer): TtkTokenKind;
function FuncBinary_to_poly(Index: Integer): TtkTokenKind;
function FuncBottom_line(Index: Integer): TtkTokenKind;
function FuncBreak(Index: Integer): TtkTokenKind;
function FuncBreak0(Index: Integer): TtkTokenKind;
function FuncCall(Index: Integer): TtkTokenKind;
function FuncCase(Index: Integer): TtkTokenKind;
function FuncCeil(Index: Integer): TtkTokenKind;
function FuncCheck(Index: Integer): TtkTokenKind;
function FuncCheck_domain(Index: Integer): TtkTokenKind;
function FuncChr(Index: Integer): TtkTokenKind;
function FuncClear_buffer(Index: Integer): TtkTokenKind;
function FuncCli(Index: Integer): TtkTokenKind;
function FuncClose(Index: Integer): TtkTokenKind;
function FuncClose_text(Index: Integer): TtkTokenKind;
function FuncCol(Index: Integer): TtkTokenKind;
function FuncColumn_heading_row(Index: Integer): TtkTokenKind;
function FuncColumn_headings(Index: Integer): TtkTokenKind;
function FuncColumn_spacing(Index: Integer): TtkTokenKind;
function FuncCommit(Index: Integer): TtkTokenKind;
function FuncCommit_rate(Index: Integer): TtkTokenKind;
function FuncCompile(Index: Integer): TtkTokenKind;
function FuncCompress(Index: Integer): TtkTokenKind;
function FuncCompress_all(Index: Integer): TtkTokenKind;
function FuncConfirm(Index: Integer): TtkTokenKind;
function FuncConnect(Index: Integer): TtkTokenKind;
function FuncContinue(Index: Integer): TtkTokenKind;
function FuncCos(Index: Integer): TtkTokenKind;
function FuncCosh(Index: Integer): TtkTokenKind;
function FuncCross_reference(Index: Integer): TtkTokenKind;
function FuncDate(Index: Integer): TtkTokenKind;
function FuncDate_seconds(Index: Integer): TtkTokenKind;
function FuncDay_of_week(Index: Integer): TtkTokenKind;
function FuncDays(Index: Integer): TtkTokenKind;
function FuncDcl(Index: Integer): TtkTokenKind;
function FuncDefault_tag(Index: Integer): TtkTokenKind;
function FuncDelete(Index: Integer): TtkTokenKind;
function FuncDelete_form(Index: Integer): TtkTokenKind;
function FuncDescription(Index: Integer): TtkTokenKind;
function FuncDir(Index: Integer): TtkTokenKind;
function FuncDisconnect(Index: Integer): TtkTokenKind;
function FuncDisplay(Index: Integer): TtkTokenKind;
function FuncDisplay_length(Index: Integer): TtkTokenKind;
function FuncDocumentation(Index: Integer): TtkTokenKind;
function FuncDomain(Index: Integer): TtkTokenKind;
function FuncEdit(Index: Integer): TtkTokenKind;
function FuncElse(Index: Integer): TtkTokenKind;
function FuncElse_if(Index: Integer): TtkTokenKind;
function FuncEnd_block(Index: Integer): TtkTokenKind;
function FuncEnd_case(Index: Integer): TtkTokenKind;
function FuncEnd_disable_trigger(Index: Integer): TtkTokenKind;
function FuncEnd_execute(Index: Integer): TtkTokenKind;
function FuncEnd_form(Index: Integer): TtkTokenKind;
function FuncEnd_if(Index: Integer): TtkTokenKind;
function FuncEnd_row(Index: Integer): TtkTokenKind;
function FuncEnd_signal_to_status(Index: Integer): TtkTokenKind;
function FuncEnd_while(Index: Integer): TtkTokenKind;
function FuncErase(Index: Integer): TtkTokenKind;
function FuncError(Index: Integer): TtkTokenKind;
function FuncExecute(Index: Integer): TtkTokenKind;
function FuncExit(Index: Integer): TtkTokenKind;
function FuncExit_forward(Index: Integer): TtkTokenKind;
function FuncExpand(Index: Integer): TtkTokenKind;
function FuncExternal(Index: Integer): TtkTokenKind;
function FuncFacility(Index: Integer): TtkTokenKind;
function FuncFailure(Index: Integer): TtkTokenKind;
function FuncFetch(Index: Integer): TtkTokenKind;
function FuncFiles(Index: Integer): TtkTokenKind;
function FuncFind(Index: Integer): TtkTokenKind;
function FuncFind_form(Index: Integer): TtkTokenKind;
function FuncFinish(Index: Integer): TtkTokenKind;
function FuncFirst(Index: Integer): TtkTokenKind;
function FuncFloor(Index: Integer): TtkTokenKind;
function FuncFooting(Index: Integer): TtkTokenKind;
function FuncFooting_form(Index: Integer): TtkTokenKind;
function FuncForm(Index: Integer): TtkTokenKind;
function FuncGenerate(Index: Integer): TtkTokenKind;
function FuncGoto(Index: Integer): TtkTokenKind;
function FuncGrouped_by(Index: Integer): TtkTokenKind;
function FuncHeading(Index: Integer): TtkTokenKind;
function FuncHeading_form(Index: Integer): TtkTokenKind;
function FuncHeight(Index: Integer): TtkTokenKind;
function FuncIdentifier(Index: Integer): TtkTokenKind;
function FuncIf(Index: Integer): TtkTokenKind;
function FuncIn(Index: Integer): TtkTokenKind;
function FuncInput_block(Index: Integer): TtkTokenKind;
function FuncInput_mask(Index: Integer): TtkTokenKind;
function FuncInput_row_height(Index: Integer): TtkTokenKind;
function FuncInt(Index: Integer): TtkTokenKind;
function FuncInvoke(Index: Integer): TtkTokenKind;
function FuncItem(Index: Integer): TtkTokenKind;
function FuncItem_block(Index: Integer): TtkTokenKind;
function FuncItem_if(Index: Integer): TtkTokenKind;
function FuncJoined_to(Index: Integer): TtkTokenKind;
function FuncLeft(Index: Integer): TtkTokenKind;
function FuncLen(Index: Integer): TtkTokenKind;
function FuncLfooting(Index: Integer): TtkTokenKind;
function FuncLheading(Index: Integer): TtkTokenKind;
function FuncLine(Index: Integer): TtkTokenKind;
function FuncLines_after(Index: Integer): TtkTokenKind;
function FuncLines_before(Index: Integer): TtkTokenKind;
function FuncList(Index: Integer): TtkTokenKind;
function FuncLoad(Index: Integer): TtkTokenKind;
function FuncLock(Index: Integer): TtkTokenKind;
function FuncLog(Index: Integer): TtkTokenKind;
function FuncLog10(Index: Integer): TtkTokenKind;
function FuncLov(Index: Integer): TtkTokenKind;
function FuncLov_auto_select(Index: Integer): TtkTokenKind;
function FuncLov_col(Index: Integer): TtkTokenKind;
function FuncLov_data(Index: Integer): TtkTokenKind;
function FuncLov_first(Index: Integer): TtkTokenKind;
function FuncLov_height(Index: Integer): TtkTokenKind;
function FuncLov_noheading(Index: Integer): TtkTokenKind;
function FuncLov_nosearch(Index: Integer): TtkTokenKind;
function FuncLov_reduced_to(Index: Integer): TtkTokenKind;
function FuncLov_row(Index: Integer): TtkTokenKind;
function FuncLov_secondary(Index: Integer): TtkTokenKind;
function FuncLov_selection(Index: Integer): TtkTokenKind;
function FuncLov_sorted_by(Index: Integer): TtkTokenKind;
function FuncLov_width(Index: Integer): TtkTokenKind;
function FuncLov_with(Index: Integer): TtkTokenKind;
function FuncLowercase(Index: Integer): TtkTokenKind;
function FuncLtrim(Index: Integer): TtkTokenKind;
function FuncMail(Index: Integer): TtkTokenKind;
function FuncMenu(Index: Integer): TtkTokenKind;
function FuncMenu_block(Index: Integer): TtkTokenKind;
function FuncMenu_form(Index: Integer): TtkTokenKind;
function FuncMessage(Index: Integer): TtkTokenKind;
function FuncMid(Index: Integer): TtkTokenKind;
function FuncMod(Index: Integer): TtkTokenKind;
function FuncModify_form(Index: Integer): TtkTokenKind;
function FuncNew(Index: Integer): TtkTokenKind;
function FuncNo_domain(Index: Integer): TtkTokenKind;
function FuncNobell(Index: Integer): TtkTokenKind;
function FuncNoclear_buffer(Index: Integer): TtkTokenKind;
function FuncNodeadlock_exit(Index: Integer): TtkTokenKind;
function FuncNoerase(Index: Integer): TtkTokenKind;
function FuncNoerror(Index: Integer): TtkTokenKind;
function FuncNoexit_forward(Index: Integer): TtkTokenKind;
function FuncNoheading(Index: Integer): TtkTokenKind;
function FuncNolov_data(Index: Integer): TtkTokenKind;
function FuncNorepeat(Index: Integer): TtkTokenKind;
function FuncNostatus(Index: Integer): TtkTokenKind;
function FuncNototals(Index: Integer): TtkTokenKind;
function FuncNounderlines(Index: Integer): TtkTokenKind;
function FuncNowait(Index: Integer): TtkTokenKind;
function FuncOpen(Index: Integer): TtkTokenKind;
function FuncOpen_text(Index: Integer): TtkTokenKind;
function FuncOpt(Index: Integer): TtkTokenKind;
function FuncOptions(Index: Integer): TtkTokenKind;
function FuncOutput(Index: Integer): TtkTokenKind;
function FuncOutput_block(Index: Integer): TtkTokenKind;
function FuncOutput_mask(Index: Integer): TtkTokenKind;
function FuncPause(Index: Integer): TtkTokenKind;
function FuncPause_block(Index: Integer): TtkTokenKind;
function FuncPerform(Index: Integer): TtkTokenKind;
function FuncPoly_to_binary(Index: Integer): TtkTokenKind;
function FuncPos(Index: Integer): TtkTokenKind;
function FuncPrint(Index: Integer): TtkTokenKind;
function FuncProcedure_form(Index: Integer): TtkTokenKind;
function FuncPrompt(Index: Integer): TtkTokenKind;
function FuncProtect(Index: Integer): TtkTokenKind;
function FuncQuery(Index: Integer): TtkTokenKind;
function FuncQuery_form(Index: Integer): TtkTokenKind;
function FuncRandom(Index: Integer): TtkTokenKind;
function FuncRead_line(Index: Integer): TtkTokenKind;
function FuncRead_only(Index: Integer): TtkTokenKind;
function FuncReceive(Index: Integer): TtkTokenKind;
function FuncReceive_arguments(Index: Integer): TtkTokenKind;
function FuncReceive_data(Index: Integer): TtkTokenKind;
function FuncReceive_table(Index: Integer): TtkTokenKind;
function FuncReduced_to(Index: Integer): TtkTokenKind;
function FuncRelease(Index: Integer): TtkTokenKind;
function FuncRemain(Index: Integer): TtkTokenKind;
function FuncRepeat(Index: Integer): TtkTokenKind;
function FuncReport(Index: Integer): TtkTokenKind;
function FuncReport_form(Index: Integer): TtkTokenKind;
function FuncReposition(Index: Integer): TtkTokenKind;
function FuncRewind_text(Index: Integer): TtkTokenKind;
function FuncRfooting(Index: Integer): TtkTokenKind;
function FuncRheading(Index: Integer): TtkTokenKind;
function FuncRight(Index: Integer): TtkTokenKind;
function FuncRollback(Index: Integer): TtkTokenKind;
function FuncRound(Index: Integer): TtkTokenKind;
function FuncRow(Index: Integer): TtkTokenKind;
function FuncRow_height(Index: Integer): TtkTokenKind;
function FuncSearch(Index: Integer): TtkTokenKind;
function FuncSecondary(Index: Integer): TtkTokenKind;
function FuncSeconds(Index: Integer): TtkTokenKind;
function FuncSelection(Index: Integer): TtkTokenKind;
function FuncSend(Index: Integer): TtkTokenKind;
function FuncSend_data(Index: Integer): TtkTokenKind;
function FuncSend_message(Index: Integer): TtkTokenKind;
function FuncSend_table(Index: Integer): TtkTokenKind;
function FuncSequence(Index: Integer): TtkTokenKind;
function FuncSeverity(Index: Integer): TtkTokenKind;
function FuncSin(Index: Integer): TtkTokenKind;
function FuncSinh(Index: Integer): TtkTokenKind;
function FuncSorted_by(Index: Integer): TtkTokenKind;
function FuncSource(Index: Integer): TtkTokenKind;
function FuncSource_if(Index: Integer): TtkTokenKind;
function FuncSqrt(Index: Integer): TtkTokenKind;
function FuncStart_stream(Index: Integer): TtkTokenKind;
function FuncStart_transaction(Index: Integer): TtkTokenKind;
function FuncStatistic(Index: Integer): TtkTokenKind;
function FuncStatus(Index: Integer): TtkTokenKind;
function FuncStream_name(Index: Integer): TtkTokenKind;
function FuncString(Index: Integer): TtkTokenKind;
function FuncSuccess(Index: Integer): TtkTokenKind;
function FuncSwitch(Index: Integer): TtkTokenKind;
function FuncSwitch_base(Index: Integer): TtkTokenKind;
function FuncSystem(Index: Integer): TtkTokenKind;
function FuncTable(Index: Integer): TtkTokenKind;
function FuncTable_form(Index: Integer): TtkTokenKind;
function FuncTable_search(Index: Integer): TtkTokenKind;
function FuncTag(Index: Integer): TtkTokenKind;
function FuncTag_length(Index: Integer): TtkTokenKind;
function FuncTan(Index: Integer): TtkTokenKind;
function FuncTanh(Index: Integer): TtkTokenKind;
function FuncTarget(Index: Integer): TtkTokenKind;
function FuncText(Index: Integer): TtkTokenKind;
function FuncText_only(Index: Integer): TtkTokenKind;
function FuncTitle(Index: Integer): TtkTokenKind;
function FuncTo(Index: Integer): TtkTokenKind;
function FuncTop_line(Index: Integer): TtkTokenKind;
function FuncTotal(Index: Integer): TtkTokenKind;
function FuncTransfer(Index: Integer): TtkTokenKind;
function FuncTrigger(Index: Integer): TtkTokenKind;
function FuncTrim(Index: Integer): TtkTokenKind;
function FuncTsuppress(Index: Integer): TtkTokenKind;
function FuncUnload(Index: Integer): TtkTokenKind;
function FuncUppercase(Index: Integer): TtkTokenKind;
function FuncUse_if(Index: Integer): TtkTokenKind;
function FuncUser_key(Index: Integer): TtkTokenKind;
function FuncUsing(Index: Integer): TtkTokenKind;
function FuncUtilities(Index: Integer): TtkTokenKind;
function FuncWait(Index: Integer): TtkTokenKind;
function FuncWhile(Index: Integer): TtkTokenKind;
function FuncWidth(Index: Integer): TtkTokenKind;
function FuncWith(Index: Integer): TtkTokenKind;
function FuncWrite(Index: Integer): TtkTokenKind;
function FuncWrite_line(Index: Integer): TtkTokenKind;
function FuncYesno_block(Index: Integer): TtkTokenKind;
function HashKey(Str: PWideChar): Cardinal;
function IdentKind(MayBe: PWideChar): TtkTokenKind;
procedure InitIdent;
procedure SymbolProc;
procedure AddressOpProc;
procedure AsciiCharProc;
procedure CRProc;
procedure GreaterProc;
procedure IdentProc;
procedure LFProc;
procedure LowerProc;
procedure NullProc;
procedure NumberProc;
procedure PointProc;
procedure SpaceProc;
procedure StringProc;
procedure UnknownProc;
procedure RemProc;
function IsQuali: Boolean;
function IsSpecial: Boolean;
protected
function IsFilterStored: Boolean; override;
public
class function GetLanguageName: string; override;
class function GetFriendlyLanguageName: UnicodeString; override;
public
constructor Create(AOwner: TComponent); override;
function GetDefaultAttribute(Index: Integer): TSynHighlighterAttributes;
override;
function GetEol: Boolean; override;
function GetRange: Pointer; override;
function GetTokenID: TtkTokenKind;
function GetTokenAttribute: TSynHighlighterAttributes; override;
function GetTokenKind: Integer; override;
procedure Next; override;
procedure SetRange(Value: Pointer); override;
procedure ResetRange; override;
published
property BlockAttri: TSynHighlighterAttributes read FBlockAttri
write FBlockAttri;
property CommentAttri: TSynHighlighterAttributes read FCommentAttri
write FCommentAttri;
property FormAttri: TSynHighlighterAttributes read FFormAttri
write FFormAttri;
property FunctionAttri: TSynHighlighterAttributes read FFunctionAttri
write FFunctionAttri;
property IdentifierAttri: TSynHighlighterAttributes read FIdentifierAttri
write FIdentifierAttri;
property KeyAttri: TSynHighlighterAttributes read FKeyAttri write FKeyAttri;
property NumberAttri: TSynHighlighterAttributes read FNumberAttri
write FNumberAttri;
property QualiAttri: TSynHighlighterAttributes read FQualiAttri
write FQualiAttri;
property SpaceAttri: TSynHighlighterAttributes read FSpaceAttri
write FSpaceAttri;
property SpecialAttri: TSynHighlighterAttributes read FSpecialAttri
write FSpecialAttri;
property StringAttri: TSynHighlighterAttributes read FStringAttri
write FStringAttri;
property SymbolAttri: TSynHighlighterAttributes read FSymbolAttri
write FSymbolAttri;
property VariableAttri: TSynHighlighterAttributes read FVariableAttri
write FVariableAttri;
end;
implementation
uses
SynEditStrConst;
const
KeyWords: array[0..263] of UnicodeString = (
'abs', 'absolute_position', 'account', 'acos', 'actual_break', 'add',
'add_form', 'alternate_form', 'ascii', 'asin', 'atan', 'atan2',
'attributes', 'back', 'base', 'batch', 'begin_block', 'begin_case',
'begin_disable_trigger', 'begin_row', 'begin_signal_to_status', 'bell',
'binary_to_poly', 'bottom_line', 'break', 'break0', 'call', 'case', 'ceil',
'check', 'check_domain', 'chr', 'clear_buffer', 'cli', 'close',
'close_text', 'col', 'column_heading_row', 'column_headings',
'column_spacing', 'commit', 'commit_rate', 'compile', 'compress',
'compress_all', 'confirm', 'connect', 'continue', 'cos', 'cosh',
'cross_reference', 'date', 'date_seconds', 'day_of_week', 'days', 'dcl',
'default_tag', 'delete', 'delete_form', 'description', 'dir', 'disconnect',
'display', 'display_length', 'documentation', 'domain', 'edit', 'else',
'else_if', 'end_block', 'end_case', 'end_disable_trigger', 'end_execute',
'end_form', 'end_if', 'end_row', 'end_signal_to_status', 'end_while',
'erase', 'error', 'execute', 'exit', 'exit_forward', 'expand', 'external',
'facility', 'failure', 'fetch', 'files', 'find', 'find_form', 'finish',
'first', 'floor', 'footing', 'footing_form', 'form', 'generate', 'goto',
'grouped_by', 'heading', 'heading_form', 'height', 'identifier', 'if', 'in',
'input_block', 'input_mask', 'input_row_height', 'int', 'invoke', 'item',
'item_block', 'item_if', 'joined_to', 'left', 'len', 'lfooting', 'lheading',
'line', 'lines_after', 'lines_before', 'list', 'load', 'lock', 'log',
'log10', 'lov', 'lov_auto_select', 'lov_col', 'lov_data', 'lov_first',
'lov_height', 'lov_noheading', 'lov_nosearch', 'lov_reduced_to', 'lov_row',
'lov_secondary', 'lov_selection', 'lov_sorted_by', 'lov_width', 'lov_with',
'lowercase', 'ltrim', 'mail', 'menu', 'menu_block', 'menu_form', 'message',
'mid', 'mod', 'modify_form', 'new', 'no_domain', 'nobell', 'noclear_buffer',
'nodeadlock_exit', 'noerase', 'noerror', 'noexit_forward', 'noheading',
'nolov_data', 'norepeat', 'nostatus', 'nototals', 'nounderlines', 'nowait',
'open', 'open_text', 'opt', 'options', 'output', 'output_block',
'output_mask', 'pause', 'pause_block', 'perform', 'poly_to_binary', 'pos',
'print', 'procedure_form', 'prompt', 'protect', 'query', 'query_form',
'random', 'read_line', 'read_only', 'receive', 'receive_arguments',
'receive_data', 'receive_table', 'reduced_to', 'release', 'remain',
'repeat', 'report', 'report_form', 'reposition', 'rewind_text', 'rfooting',
'rheading', 'right', 'rollback', 'round', 'row', 'row_height', 'search',
'secondary', 'seconds', 'selection', 'send', 'send_data', 'send_message',
'send_table', 'sequence', 'severity', 'sin', 'sinh', 'sorted_by', 'source',
'source_if', 'sqrt', 'start_stream', 'start_transaction', 'statistic',
'status', 'stream_name', 'string', 'success', 'switch', 'switch_base',
'system', 'table', 'table_form', 'table_search', 'tag', 'tag_length', 'tan',
'tanh', 'target', 'text', 'text_only', 'title', 'to', 'top_line', 'total',
'transfer', 'trigger', 'trim', 'tsuppress', 'unload', 'uppercase', 'use_if',
'user_key', 'using', 'utilities', 'wait', 'while', 'width', 'with', 'write',
'write_line', 'yesno_block'
);
KeyIndices: array[0..2438] of Integer = (
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 261, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 230, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 217, -1, -1, -1, -1, -1, 183, -1, 246, -1, 134, -1, -1, -1, -1,
-1, 65, -1, -1, 223, -1, -1, -1, -1, -1, 213, -1, -1, -1, 46, -1, -1, 262,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 111, 157, -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, -1,
-1, -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 123, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 84, -1, 154, -1, 96, -1, -1, -1, 176, -1, -1, -1, 120, 178, -1, -1, -1,
-1, 74, -1, -1, -1, -1, 241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, 147, -1, -1, -1, 122,
-1, 58, -1, 87, 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 5, -1, -1, 194, -1, -1, -1, 243, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, -1, -1,
-1, 28, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 239, -1, -1, -1, -1, 20, -1, -1, -1, -1, 79,
116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 192,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 0, -1, -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 196, -1, -1, 85, -1, -1, -1, 104, -1, 103, -1, -1, 14, -1, -1,
131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1,
-1, 6, -1, 182, -1, -1, 171, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, 41, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 142, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 204, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 185, -1, -1, -1, -1,
-1, -1, -1, 115, -1, -1, 108, -1, 150, -1, -1, 42, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 224, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 143, 166, -1, -1,
-1, -1, -1, -1, 225, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, 92, -1, -1,
226, -1, 161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, -1, -1, 237, -1, -1, -1, -1,
-1, 100, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, -1, -1, -1, -1,
-1, 151, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, 146, 210, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 245, -1, -1, -1, -1, -1, 68, -1,
231, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57,
-1, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7,
-1, -1, 75, -1, 252, 212, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
149, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, -1, -1, -1, -1, 78, -1, -1,
-1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, 164, 35, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
234, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, -1, -1,
-1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 240, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, -1, -1, 229, 11,
-1, -1, 43, -1, -1, -1, -1, -1, 236, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 159, -1, -1, 238, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 181, -1, 139, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 15, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69,
258, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, 153,
-1, -1, 36, -1, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1,
-1, -1, -1, -1, 48, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, 232, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 199, -1, -1, -1, -1, -1, 9, -1, -1, 140, 193, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 177, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 188, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1,
-1, -1, 228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
19, -1, 66, -1, -1, -1, 24, -1, -1, -1, -1, 186, -1, -1, -1, -1, 99, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 54, -1, -1, -1, -1, 259, -1, 32, -1, -1, -1, -1, -1,
121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, 209, 260, -1,
-1, -1, -1, -1, -1, -1, 76, 257, -1, -1, -1, -1, 211, -1, 90, -1, -1, -1,
-1, -1, -1, 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, 70,
-1, -1, -1, -1, -1, 63, -1, -1, -1, 25, 207, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 174, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, -1, -1, -1, -1, -1, 179, -1,
189, -1, -1, -1, 113, -1, -1, -1, 110, -1, 205, -1, 56, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 51, -1, -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1,
-1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, 254, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1,
235, -1, 34, -1, 218, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, 220, -1,
-1, -1, 141, -1, -1, -1, -1, 195, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 129, -1, -1, -1, -1, 160, -1,
-1, -1, -1, 227, -1, -1, -1, -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 203,
-1, -1, -1, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 219, -1, -1, -1, -1, -1, 61, -1, -1, 30, -1, -1, 130, -1, -1, -1,
-1, -1, -1, -1, -1, 12, -1, 202, -1, -1, -1, -1, -1, 200, -1, -1, 169, -1,
-1, -1, -1, -1, -1, 16, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 162, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 247, -1, -1, -1, -1, -1, -1, 242, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, 251, -1, -1, -1, -1, -1,
-1, -1, -1, 216, -1, -1, -1, -1, 128, 27, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, -1, -1, -1,
-1, 158, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, -1, 173, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 73, -1, -1, -1, -1, 17, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 135, -1, -1, 190, -1, -1, -1, 222, 60, -1, -1, -1, -1,
-1, -1, -1, -1, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 136, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 168, -1, -1, -1, -1, -1, -1, 144, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 94, -1, 95, -1, -1, -1, -1, -1, 215, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 145, -1,
-1, -1, 10, 250, -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, 197,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 201, -1, -1, -1,
233, -1, -1, -1, -1, -1, 249, -1, -1, 184, -1, -1, -1, -1, -1, 263, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 26, 138, -1, -1, -1, -1, -1, -1, -1, -1, 64,
-1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 127, 206, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1,
-1, 244, -1, -1, -1, -1, -1, -1, -1, -1
);
{$Q-}
function TSynDmlSyn.HashKey(Str: PWideChar): Cardinal;
begin
Result := 0;
while IsIdentChar(Str^) do
begin
Result := Result * 798 + Ord(Str^) * 3;
Inc(Str);
end;
Result := Result mod 2439;
FStringLen := Str - FToIdent;
end;
{$Q+}
function TSynDmlSyn.IdentKind(MayBe: PWideChar): TtkTokenKind;
var
Key: Cardinal;
begin
FToIdent := MayBe;
Key := HashKey(MayBe);
if Key <= High(FIdentFuncTable) then
Result := FIdentFuncTable[Key](KeyIndices[Key])
else
Result := tkIdentifier;
end;
procedure TSynDmlSyn.InitIdent;
var
i: Integer;
begin
for i := Low(FIdentFuncTable) to High(FIdentFuncTable) do
if KeyIndices[i] = -1 then
FIdentFuncTable[i] := AltFunc;
FIdentFuncTable[435] := FuncAbs;
FIdentFuncTable[41] := FuncAbsolute_position;
FIdentFuncTable[13] := FuncAccount;
FIdentFuncTable[2405] := FuncAcos;
FIdentFuncTable[1707] := FuncActual_break;
FIdentFuncTable[300] := FuncAdd;
FIdentFuncTable[486] := FuncAdd_form;
FIdentFuncTable[839] := FuncAlternate_form;
FIdentFuncTable[735] := FuncAscii;
FIdentFuncTable[1265] := FuncAsin;
FIdentFuncTable[2300] := FuncAtan;
FIdentFuncTable[1065] := FuncAtan2;
FIdentFuncTable[1930] := FuncAttributes;
FIdentFuncTable[1202] := FuncBack;
FIdentFuncTable[464] := FuncBase;
FIdentFuncTable[1118] := FuncBatch;
FIdentFuncTable[1948] := FuncBegin_block;
FIdentFuncTable[2124] := FuncBegin_case;
FIdentFuncTable[2068] := FuncBegin_disable_trigger;
FIdentFuncTable[1385] := FuncBegin_row;
FIdentFuncTable[387] := FuncBegin_signal_to_status;
FIdentFuncTable[1061] := FuncBell;
FIdentFuncTable[166] := FuncBinary_to_poly;
FIdentFuncTable[776] := FuncBottom_line;
FIdentFuncTable[1391] := FuncBreak;
FIdentFuncTable[1524] := FuncBreak0;
FIdentFuncTable[2380] := FuncCall;
FIdentFuncTable[2044] := FuncCase;
FIdentFuncTable[337] := FuncCeil;
FIdentFuncTable[644] := FuncCheck;
FIdentFuncTable[1918] := FuncCheck_domain;
FIdentFuncTable[1512] := FuncChr;
FIdentFuncTable[1454] := FuncClear_buffer;
FIdentFuncTable[1305] := FuncCli;
FIdentFuncTable[1761] := FuncClose;
FIdentFuncTable[908] := FuncClose_text;
FIdentFuncTable[1179] := FuncCol;
FIdentFuncTable[1114] := FuncColumn_heading_row;
FIdentFuncTable[2183] := FuncColumn_headings;
FIdentFuncTable[1007] := FuncColumn_spacing;
FIdentFuncTable[697] := FuncCommit;
FIdentFuncTable[521] := FuncCommit_rate;
FIdentFuncTable[591] := FuncCompile;
FIdentFuncTable[1068] := FuncCompress;
FIdentFuncTable[1359] := FuncCompress_all;
FIdentFuncTable[1637] := FuncConfirm;
FIdentFuncTable[89] := FuncConnect;
FIdentFuncTable[898] := FuncContinue;
FIdentFuncTable[1200] := FuncCos;
FIdentFuncTable[1747] := FuncCosh;
FIdentFuncTable[954] := FuncCross_reference;
FIdentFuncTable[1630] := FuncDate;
FIdentFuncTable[320] := FuncDate_seconds;
FIdentFuncTable[368] := FuncDay_of_week;
FIdentFuncTable[1447] := FuncDays;
FIdentFuncTable[2394] := FuncDcl;
FIdentFuncTable[1583] := FuncDefault_tag;
FIdentFuncTable[820] := FuncDelete;
FIdentFuncTable[261] := FuncDelete_form;
FIdentFuncTable[608] := FuncDescription;
FIdentFuncTable[2142] := FuncDir;
FIdentFuncTable[1915] := FuncDisconnect;
FIdentFuncTable[1889] := FuncDisplay;
FIdentFuncTable[1520] := FuncDisplay_length;
FIdentFuncTable[2390] := FuncDocumentation;
FIdentFuncTable[76] := FuncDomain;
FIdentFuncTable[1387] := FuncEdit;
FIdentFuncTable[1414] := FuncElse;
FIdentFuncTable[801] := FuncElse_if;
FIdentFuncTable[1158] := FuncEnd_block;
FIdentFuncTable[1514] := FuncEnd_case;
FIdentFuncTable[1734] := FuncEnd_disable_trigger;
FIdentFuncTable[1043] := FuncEnd_execute;
FIdentFuncTable[2119] := FuncEnd_form;
FIdentFuncTable[224] := FuncEnd_if;
FIdentFuncTable[842] := FuncEnd_row;
FIdentFuncTable[1484] := FuncEnd_signal_to_status;
FIdentFuncTable[338] := FuncEnd_while;
FIdentFuncTable[893] := FuncErase;
FIdentFuncTable[392] := FuncError;
FIdentFuncTable[503] := FuncExecute;
FIdentFuncTable[253] := FuncExit;
FIdentFuncTable[1280] := FuncExit_forward;
FIdentFuncTable[1146] := FuncExpand;
FIdentFuncTable[206] := FuncExternal;
FIdentFuncTable[455] := FuncFacility;
FIdentFuncTable[176] := FuncFailure;
FIdentFuncTable[263] := FuncFetch;
FIdentFuncTable[2106] := FuncFiles;
FIdentFuncTable[1191] := FuncFind;
FIdentFuncTable[1492] := FuncFind_form;
FIdentFuncTable[1868] := FuncFinish;
FIdentFuncTable[651] := FuncFirst;
FIdentFuncTable[2081] := FuncFloor;
FIdentFuncTable[2267] := FuncFooting;
FIdentFuncTable[2269] := FuncFooting_form;
FIdentFuncTable[210] := FuncForm;
FIdentFuncTable[516] := FuncGenerate;
FIdentFuncTable[2196] := FuncGoto;
FIdentFuncTable[1401] := FuncGrouped_by;
FIdentFuncTable[711] := FuncHeading;
FIdentFuncTable[1173] := FuncHeading_form;
FIdentFuncTable[194] := FuncHeight;
FIdentFuncTable[461] := FuncIdentifier;
FIdentFuncTable[459] := FuncIf;
FIdentFuncTable[483] := FuncIn;
FIdentFuncTable[2151] := FuncInput_block;
FIdentFuncTable[947] := FuncInput_mask;
FIdentFuncTable[586] := FuncInput_row_height;
FIdentFuncTable[420] := FuncInt;
FIdentFuncTable[1579] := FuncInvoke;
FIdentFuncTable[134] := FuncItem;
FIdentFuncTable[824] := FuncItem_block;
FIdentFuncTable[1575] := FuncItem_if;
FIdentFuncTable[1988] := FuncJoined_to;
FIdentFuncTable[583] := FuncLeft;
FIdentFuncTable[393] := FuncLen;
FIdentFuncTable[1698] := FuncLfooting;
FIdentFuncTable[142] := FuncLheading;
FIdentFuncTable[439] := FuncLine;
FIdentFuncTable[218] := FuncLines_after;
FIdentFuncTable[1460] := FuncLines_before;
FIdentFuncTable[259] := FuncList;
FIdentFuncTable[193] := FuncLoad;
FIdentFuncTable[124] := FuncLock;
FIdentFuncTable[2361] := FuncLog;
FIdentFuncTable[807] := FuncLog10;
FIdentFuncTable[2406] := FuncLov;
FIdentFuncTable[2043] := FuncLov_auto_select;
FIdentFuncTable[1806] := FuncLov_col;
FIdentFuncTable[1921] := FuncLov_data;
FIdentFuncTable[467] := FuncLov_first;
FIdentFuncTable[1673] := FuncLov_height;
FIdentFuncTable[1499] := FuncLov_noheading;
FIdentFuncTable[70] := FuncLov_nosearch;
FIdentFuncTable[2134] := FuncLov_reduced_to;
FIdentFuncTable[2208] := FuncLov_row;
FIdentFuncTable[1788] := FuncLov_secondary;
FIdentFuncTable[2381] := FuncLov_selection;
FIdentFuncTable[1107] := FuncLov_sorted_by;
FIdentFuncTable[1268] := FuncLov_width;
FIdentFuncTable[1779] := FuncLov_with;
FIdentFuncTable[538] := FuncLowercase;
FIdentFuncTable[631] := FuncLtrim;
FIdentFuncTable[2233] := FuncMail;
FIdentFuncTable[2296] := FuncMenu;
FIdentFuncTable[743] := FuncMenu_block;
FIdentFuncTable[255] := FuncMenu_form;
FIdentFuncTable[1824] := FuncMessage;
FIdentFuncTable[858] := FuncMid;
FIdentFuncTable[588] := FuncMod;
FIdentFuncTable[729] := FuncModify_form;
FIdentFuncTable[1770] := FuncNew;
FIdentFuncTable[1176] := FuncNo_domain;
FIdentFuncTable[208] := FuncNobell;
FIdentFuncTable[1756] := FuncNoclear_buffer;
FIdentFuncTable[1858] := FuncNodeadlock_exit;
FIdentFuncTable[135] := FuncNoerase;
FIdentFuncTable[2073] := FuncNoerror;
FIdentFuncTable[1092] := FuncNoexit_forward;
FIdentFuncTable[1811] := FuncNoheading;
FIdentFuncTable[656] := FuncNolov_data;
FIdentFuncTable[1959] := FuncNorepeat;
FIdentFuncTable[1319] := FuncNostatus;
FIdentFuncTable[907] := FuncNototals;
FIdentFuncTable[2427] := FuncNounderlines;
FIdentFuncTable[632] := FuncNowait;
FIdentFuncTable[1560] := FuncOpen;
FIdentFuncTable[2226] := FuncOpen_text;
FIdentFuncTable[1941] := FuncOpt;
FIdentFuncTable[290] := FuncOptions;
FIdentFuncTable[491] := FuncOutput;
FIdentFuncTable[1952] := FuncOutput_block;
FIdentFuncTable[2108] := FuncOutput_mask;
FIdentFuncTable[1539] := FuncPause;
FIdentFuncTable[1182] := FuncPause_block;
FIdentFuncTable[214] := FuncPerform;
FIdentFuncTable[1294] := FuncPoly_to_binary;
FIdentFuncTable[219] := FuncPos;
FIdentFuncTable[1569] := FuncPrint;
FIdentFuncTable[1719] := FuncProcedure_form;
FIdentFuncTable[1105] := FuncPrompt;
FIdentFuncTable[488] := FuncProtect;
FIdentFuncTable[66] := FuncQuery;
FIdentFuncTable[2344] := FuncQuery_form;
FIdentFuncTable[575] := FuncRandom;
FIdentFuncTable[1396] := FuncRead_line;
FIdentFuncTable[885] := FuncRead_only;
FIdentFuncTable[1353] := FuncReceive;
FIdentFuncTable[1571] := FuncReceive_arguments;
FIdentFuncTable[2137] := FuncReceive_data;
FIdentFuncTable[264] := FuncReceive_table;
FIdentFuncTable[410] := FuncReduced_to;
FIdentFuncTable[1269] := FuncRelease;
FIdentFuncTable[303] := FuncRemain;
FIdentFuncTable[1784] := FuncRepeat;
FIdentFuncTable[452] := FuncReport;
FIdentFuncTable[2315] := FuncReport_form;
FIdentFuncTable[2025] := FuncReposition;
FIdentFuncTable[1259] := FuncRewind_text;
FIdentFuncTable[1938] := FuncRfooting;
FIdentFuncTable[2331] := FuncRheading;
FIdentFuncTable[1932] := FuncRight;
FIdentFuncTable[1849] := FuncRollback;
FIdentFuncTable[553] := FuncRound;
FIdentFuncTable[1581] := FuncRow;
FIdentFuncTable[2407] := FuncRow_height;
FIdentFuncTable[1525] := FuncSearch;
FIdentFuncTable[151] := FuncSecondary;
FIdentFuncTable[1475] := FuncSeconds;
FIdentFuncTable[744] := FuncSelection;
FIdentFuncTable[1490] := FuncSend;
FIdentFuncTable[845] := FuncSend_data;
FIdentFuncTable[85] := FuncSend_message;
FIdentFuncTable[720] := FuncSend_table;
FIdentFuncTable[2275] := FuncSequence;
FIdentFuncTable[2038] := FuncSeverity;
FIdentFuncTable[60] := FuncSin;
FIdentFuncTable[1763] := FuncSinh;
FIdentFuncTable[1909] := FuncSorted_by;
FIdentFuncTable[1775] := FuncSource;
FIdentFuncTable[1474] := FuncSource_if;
FIdentFuncTable[2141] := FuncSqrt;
FIdentFuncTable[79] := FuncStart_stream;
FIdentFuncTable[604] := FuncStart_transaction;
FIdentFuncTable[639] := FuncStatistic;
FIdentFuncTable[654] := FuncStatus;
FIdentFuncTable[1816] := FuncStream_name;
FIdentFuncTable[1368] := FuncString;
FIdentFuncTable[1064] := FuncSuccess;
FIdentFuncTable[39] := FuncSwitch;
FIdentFuncTable[803] := FuncSwitch_base;
FIdentFuncTable[1212] := FuncSystem;
FIdentFuncTable[2335] := FuncTable;
FIdentFuncTable[934] := FuncTable_form;
FIdentFuncTable[1759] := FuncTable_search;
FIdentFuncTable[1074] := FuncTag;
FIdentFuncTable[705] := FuncTag_length;
FIdentFuncTable[1095] := FuncTan;
FIdentFuncTable[382] := FuncTanh;
FIdentFuncTable[975] := FuncTarget;
FIdentFuncTable[229] := FuncText;
FIdentFuncTable[2007] := FuncText_only;
FIdentFuncTable[307] := FuncTitle;
FIdentFuncTable[2430] := FuncTo;
FIdentFuncTable[795] := FuncTop_line;
FIdentFuncTable[68] := FuncTotal;
FIdentFuncTable[2000] := FuncTransfer;
FIdentFuncTable[333] := FuncTrigger;
FIdentFuncTable[2341] := FuncTrim;
FIdentFuncTable[2301] := FuncTsuppress;
FIdentFuncTable[2029] := FuncUnload;
FIdentFuncTable[844] := FuncUppercase;
FIdentFuncTable[1437] := FuncUse_if;
FIdentFuncTable[1736] := FuncUser_key;
FIdentFuncTable[353] := FuncUsing;
FIdentFuncTable[2305] := FuncUtilities;
FIdentFuncTable[1485] := FuncWait;
FIdentFuncTable[1159] := FuncWhile;
FIdentFuncTable[1452] := FuncWidth;
FIdentFuncTable[1476] := FuncWith;
FIdentFuncTable[27] := FuncWrite;
FIdentFuncTable[92] := FuncWrite_line;
FIdentFuncTable[2350] := FuncYesno_block;
end;
function TSynDmlSyn.IsQuali: Boolean;
begin
Result:= False;
if Run > 0 then
if FLine[Run - 1] = '/' then Result:= True;
end;
function TSynDmlSyn.IsSpecial: Boolean;
begin
Result:= False;
if Run > 0 then
if FLine[Run - 1] = '%' then Result:= True;
end;
function TSynDmlSyn.FuncAbs(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAbsolute_position(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAccount(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAcos(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncActual_break(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAdd(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsSpecial then
Result := tkSpecial
else
begin
Result := tkKey;
FRange := rsAdd;
end;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAdd_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAlternate_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAscii(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAsin(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAtan(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAtan2(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncAttributes(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBack(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBase(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBatch(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBegin_block(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkBlock
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBegin_case(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBegin_disable_trigger(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBegin_row(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBegin_signal_to_status(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBell(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBinary_to_poly(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBottom_line(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBreak(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncBreak0(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCall(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCase(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCeil(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCheck(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCheck_domain(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncChr(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncClear_buffer(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCli(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncClose(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncClose_text(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCol(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsQuali then
Result := tkQualifier
else if IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncColumn_heading_row(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncColumn_headings(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncColumn_spacing(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCommit(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCommit_rate(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCompile(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCompress(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCompress_all(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncConfirm(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncConnect(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncContinue(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCos(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCosh(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncCross_reference(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDate(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDate_seconds(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDay_of_week(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDays(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDcl(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDefault_tag(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDelete(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDelete_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDescription(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDir(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDisconnect(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDisplay(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDisplay_length(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDocumentation(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncDomain(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncEdit(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncElse(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncElse_if(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncEnd_block(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkBlock
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncEnd_case(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncEnd_disable_trigger(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncEnd_execute(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncEnd_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkForm
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncEnd_if(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncEnd_row(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncEnd_signal_to_status(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncEnd_while(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncErase(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncError(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsQuali then
Result := tkQualifier
else
Result := tkKey;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncExecute(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncExit(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncExit_forward(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncExpand(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncExternal(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFacility(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFailure(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsQuali then
Result := tkQualifier
else if IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFetch(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFiles(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFind(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
Result := tkKey;
FRange := rsFind;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFind_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFinish(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFirst(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFloor(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFooting(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncFooting_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncForm(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsSpecial then
Result := tkSpecial
else
Result := tkForm;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncGenerate(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncGoto(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncGrouped_by(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncHeading(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncHeading_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncHeight(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncIdentifier(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncIf(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncIn(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and (FRange = rsFind) then
begin
Result := tkKey;
FRange := rsUnknown;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncInput_block(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkBlock
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncInput_mask(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncInput_row_height(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncInt(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncInvoke(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncItem(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncItem_block(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkBlock
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncItem_if(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncJoined_to(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLeft(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLen(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsQuali then
Result := tkQualifier
else
Result := tkFunction;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLfooting(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLheading(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLine(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLines_after(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else if IsCurrentToken(KeyWords[Index]) and IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLines_before(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncList(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLoad(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLock(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLog(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsQuali then
Result := tkQualifier
else
Result := tkFunction;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLog10(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_auto_select(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_col(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_data(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_first(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_height(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_noheading(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_nosearch(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_reduced_to(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_row(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_secondary(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_selection(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_sorted_by(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_width(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLov_with(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLowercase(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncLtrim(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncMail(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncMenu(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncMenu_block(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkBlock
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncMenu_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkForm
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncMessage(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncMid(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncMod(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncModify_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNew(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNo_domain(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNobell(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNoclear_buffer(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNodeadlock_exit(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNoerase(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNoerror(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNoexit_forward(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNoheading(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNolov_data(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNorepeat(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNostatus(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNototals(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNounderlines(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsQuali then
Result := tkQualifier
else if IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncNowait(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncOpen(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncOpen_text(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncOpt(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncOptions(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncOutput(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncOutput_block(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkBlock
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncOutput_mask(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncPause(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncPause_block(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkBlock
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncPerform(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncPoly_to_binary(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncPos(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncPrint(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncProcedure_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkForm
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncPrompt(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncProtect(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncQuery(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncQuery_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkForm
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRandom(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRead_line(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRead_only(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncReceive(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncReceive_arguments(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncReceive_data(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncReceive_table(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncReduced_to(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRelease(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRemain(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRepeat(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsQuali then
Result := tkQualifier
else
Result := tkKey;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncReport(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncReport_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkForm
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncReposition(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRewind_text(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRfooting(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRheading(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRight(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRollback(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRound(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRow(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else if IsCurrentToken(KeyWords[Index]) and IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncRow_height(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSearch(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSecondary(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSeconds(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSelection(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSend(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSend_data(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSend_message(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSend_table(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSequence(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSeverity(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSin(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSinh(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSorted_by(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSource(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSource_if(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSqrt(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncStart_stream(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncStart_transaction(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncStatistic(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncStatus(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsQuali then
Result := tkQualifier
else if IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncStream_name(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncString(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSuccess(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsQuali then
Result := tkQualifier
else if IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSwitch(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSwitch_base(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncSystem(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTable(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTable_form(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkForm
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTable_search(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTag(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTag_length(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTan(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTanh(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTarget(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncText(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsSpecial then
Result := tkSpecial
else
Result := tkKey;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncText_only(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTitle(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
begin
if IsQuali then
Result := tkQualifier
else
Result := tkKey;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTo(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and (FRange = rsAdd) then
begin
Result := tkKey;
FRange := rsUnknown;
end
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTop_line(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTotal(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTransfer(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTrigger(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTrim(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncTsuppress(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsSpecial then
Result := tkSpecial
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncUnload(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncUppercase(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkFunction
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncUse_if(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncUser_key(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncUsing(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncUtilities(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncWait(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncWhile(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncWidth(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncWith(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) and IsQuali then
Result := tkQualifier
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncWrite(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncWrite_line(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkKey
else
Result := tkIdentifier;
end;
function TSynDmlSyn.FuncYesno_block(Index: Integer): TtkTokenKind;
begin
if IsCurrentToken(KeyWords[Index]) then
Result := tkBlock
else
Result := tkIdentifier;
end;
function TSynDmlSyn.AltFunc(Index: Integer): TtkTokenKind;
begin
Result := tkIdentifier;
end;
constructor TSynDmlSyn.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCaseSensitive := False;
FFormAttri:= TSynHighlighterAttributes.Create(SYNS_AttrForm, SYNS_FriendlyAttrForm);
FFormAttri.Style:= [fsBold];
FFormAttri.Foreground:= clBlue;
AddAttribute(FFormAttri);
FBlockAttri:= TSynHighlighterAttributes.Create(SYNS_AttrBlock, SYNS_FriendlyAttrBlock);
FBlockAttri.Style:= [fsBold];
FBlockAttri.Foreground:= clGreen;
AddAttribute(FBlockAttri);
FKeyAttri := TSynHighlighterAttributes.Create(SYNS_AttrKey, SYNS_FriendlyAttrKey);
FKeyAttri.Style:= [fsBold];
AddAttribute(FKeyAttri);
FCommentAttri := TSynHighlighterAttributes.Create(SYNS_AttrComment, SYNS_FriendlyAttrComment);
FCommentAttri.Style:= [fsBold];
FCommentAttri.Foreground:= clRed;
AddAttribute(FCommentAttri);
FQualiAttri:= TSynHighlighterAttributes.Create(SYNS_AttrQualifier, SYNS_FriendlyAttrQualifier);
FQualiAttri.Style:= [fsItalic];
FQualiAttri.Foreground:= clGreen;
AddAttribute(FQualiAttri);
FFunctionAttri:= TSynHighlighterAttributes.Create(SYNS_AttrFunction, SYNS_FriendlyAttrFunction);
FFunctionAttri.Style:= [fsItalic];
FFunctionAttri.Foreground:= clBlack;
AddAttribute(FFunctionAttri);
FVariableAttri:= TSynHighlighterAttributes.Create(SYNS_AttrVariable, SYNS_FriendlyAttrVariable);
FVariableAttri.Style:= [fsBold, fsItalic];
FVariableAttri.Foreground:= clBlack;
AddAttribute(FVariableAttri);
FSpecialAttri:= TSynHighlighterAttributes.Create(SYNS_AttrSpecialVariable, SYNS_FriendlyAttrSpecialVariable);
FSpecialAttri.Style:= [fsItalic];
FSpecialAttri.Foreground:= clBlack;
AddAttribute(FSpecialAttri);
FIdentifierAttri := TSynHighlighterAttributes.Create(SYNS_AttrIdentifier, SYNS_FriendlyAttrIdentifier);
AddAttribute(FIdentifierAttri);
FNumberAttri := TSynHighlighterAttributes.Create(SYNS_AttrNumber, SYNS_FriendlyAttrNumber);
AddAttribute(FNumberAttri);
FSpaceAttri := TSynHighlighterAttributes.Create(SYNS_AttrSpace, SYNS_FriendlyAttrSpace);
AddAttribute(FSpaceAttri);
FStringAttri := TSynHighlighterAttributes.Create(SYNS_AttrString, SYNS_FriendlyAttrString);
AddAttribute(FStringAttri);
FSymbolAttri := TSynHighlighterAttributes.Create(SYNS_AttrSymbol, SYNS_FriendlyAttrSymbol);
AddAttribute(FSymbolAttri);
SetAttributesOnChange(DefHighlightChange);
InitIdent;
FRange := rsUnknown;
FDefaultFilter := SYNS_FilterGembase;
end;
procedure TSynDmlSyn.AddressOpProc;
begin
FTokenID := tkSymbol;
Inc(Run);
if FLine[Run] = '@' then Inc(Run);
end;
procedure TSynDmlSyn.AsciiCharProc;
function IsAsciiChar: Boolean;
begin
case FLine[Run] of
'_', '0'..'9', 'A'..'Z', 'a'..'z':
Result := True;
else
Result := False;
end;
end;
begin
// variables...
FTokenID := tkVariable;
repeat
Inc(Run);
until not IsAsciiChar;
end;
procedure TSynDmlSyn.SymbolProc;
begin
Inc(Run);
FTokenID := tkSymbol;
end;
procedure TSynDmlSyn.CRProc;
begin
FTokenID := tkSpace;
Inc(Run);
if FLine[Run] = #10 then Inc(Run);
end;
procedure TSynDmlSyn.GreaterProc;
begin
FTokenID := tkSymbol;
Inc(Run);
if FLine[Run] = '=' then Inc(Run);
end;
procedure TSynDmlSyn.IdentProc;
begin
FTokenID := IdentKind((FLine + Run));
Inc(Run, FStringLen);
while IsIdentChar(FLine[Run]) do Inc(Run);
end;
procedure TSynDmlSyn.LFProc;
begin
FTokenID := tkSpace;
Inc(Run);
end;
procedure TSynDmlSyn.LowerProc;
begin
FTokenID := tkSymbol;
Inc(Run);
if (FLine[Run]= '=') or (FLine[Run]= '>') then Inc(Run);
end;
procedure TSynDmlSyn.NullProc;
begin
FTokenID := tkNull;
Inc(Run);
end;
procedure TSynDmlSyn.NumberProc;
begin
Inc(Run);
FTokenID := tkNumber;
while CharInSet(FLine[Run], ['0'..'9', '.']) do
begin
case FLine[Run] of
'.':
if FLine[Run + 1] = '.' then
Break;
end;
Inc(Run);
end;
end;
procedure TSynDmlSyn.PointProc;
begin
FTokenID := tkSymbol;
Inc(Run);
if (FLine[Run]='.') or (FLine[Run]=')') then Inc(Run);
end;
procedure TSynDmlSyn.RemProc;
var
p: PWideChar;
begin
p := PWideChar(@FLine[Run - 1]);
while p >= FLine do
begin
if not CharInSet(p^, [#9, #32]) then
begin
Inc(Run);
FTokenID := tkSymbol;
Exit;
end;
Dec(p);
end;
// it is a comment...
FTokenID := tkComment;
repeat
Inc(Run);
until IsLineEnd(Run);
end;
procedure TSynDmlSyn.SpaceProc;
begin
FTokenID := tkSpace;
while (FLine[Run] <= #32) and not IsLineEnd(Run) do Inc(Run);
end;
procedure TSynDmlSyn.StringProc;
begin
FTokenID := tkString;
if (FLine[Run + 1] = '"') and (FLine[Run + 2] = '"') then Inc(Run, 2);
repeat
Inc(Run);
until (FLine[Run] = '"') or IsLineEnd(Run);
if FLine[Run] <> #0 then Inc(Run);
end;
procedure TSynDmlSyn.UnknownProc;
begin
Inc(Run);
FTokenID := tkUnknown;
end;
procedure TSynDmlSyn.Next;
begin
FTokenPos := Run;
case FLine[Run] of
#0: NullProc;
#10: LFProc;
#13: CRProc;
#1..#9, #11, #12, #14..#32:
SpaceProc;
'#': AsciiCharProc;
'"': StringProc;
'0'..'9': NumberProc;
'A'..'Z', 'a'..'z', '_':
IdentProc;
'{': SymbolProc;
'}': SymbolProc;
'!': RemProc;
'.': PointProc;
'<': LowerProc;
'>': GreaterProc;
'@': AddressOpProc;
#39, '&', '('..'-', '/', ':', ';', '=', '?', '['..'^', '`', '~':
SymbolProc;
else
UnknownProc;
end;
inherited;
end;
function TSynDmlSyn.GetDefaultAttribute(Index: Integer): TSynHighlighterAttributes;
begin
case Index of
SYN_ATTR_COMMENT: Result := FCommentAttri;
SYN_ATTR_IDENTIFIER: Result := FIdentifierAttri;
SYN_ATTR_KEYWORD: Result := FKeyAttri;
SYN_ATTR_STRING: Result := FStringAttri;
SYN_ATTR_WHITESPACE: Result := FSpaceAttri;
SYN_ATTR_SYMBOL: Result := FSymbolAttri;
else
Result := nil;
end;
end;
function TSynDmlSyn.GetEol: Boolean;
begin
Result := Run = FLineLen + 1;
end;
function TSynDmlSyn.GetTokenID: TtkTokenKind;
begin
Result:= FTokenID;
end;
function TSynDmlSyn.GetTokenAttribute: TSynHighlighterAttributes;
begin
case GetTokenID of
tkForm: Result := FFormAttri;
tkBlock: Result := FBlockAttri;
tkKey: Result := FKeyAttri;
tkComment: Result := FCommentAttri;
tkQualifier: Result := FQualiAttri;
tkFunction: Result := FFunctionAttri;
tkIdentifier: Result := FIdentifierAttri;
tkNumber: Result := FNumberAttri;
tkSpecial: Result := FSpecialAttri;
tkSpace: Result := FSpaceAttri;
tkString: Result := FStringAttri;
tkVariable: Result := FVariableAttri;
tkSymbol: Result := FSymbolAttri;
tkUnknown: Result := FSymbolAttri;
else Result := nil;
end;
end;
function TSynDmlSyn.GetTokenKind: Integer;
begin
Result := Ord(GetTokenID);
end;
function TSynDmlSyn.GetRange: Pointer;
begin
Result := Pointer(FRange);
end;
procedure TSynDmlSyn.SetRange(Value: Pointer);
begin
FRange := TRangeState(Value);
end;
procedure TSynDmlSyn.ResetRange;
begin
FRange:= rsUnknown;
end;
function TSynDmlSyn.IsFilterStored: Boolean;
begin
Result := FDefaultFilter <> SYNS_FilterGembase;
end;
class function TSynDmlSyn.GetLanguageName: string;
begin
Result := SYNS_LangGembase;
end;
class function TSynDmlSyn.GetFriendlyLanguageName: UnicodeString;
begin
Result := SYNS_FriendlyLangGembase;
end;
initialization
{$IFNDEF SYN_CPPB_1}
RegisterPlaceableHighlighter(TSynDmlSyn);
{$ENDIF}
end.