Add built local::lib
[catagits/Gitalist.git] / local-lib5 / lib / perl5 / Syntax / Highlight / Engine / Kate / SQL_MySQL.pm
1 # Copyright (c) 2005 - 2006 Hans Jeuken. All rights reserved.
2 # This program is free software; you can redistribute it and/or
3 # modify it under the same terms as Perl itself.
4
5 # This file was generated from the 'sql-mysql.xml' file of the syntax highlight
6 # engine of the kate text editor (http://www.kate-editor.org
7
8 #kate xml version 1.08
9 #kate version 2.4
10 #kate author Shane Wright (me@shanewright.co.uk)
11 #generated: Sun Feb  3 22:02:06 2008, localtime
12
13 package Syntax::Highlight::Engine::Kate::SQL_MySQL;
14
15 our $VERSION = '0.06';
16
17 use strict;
18 use warnings;
19 use base('Syntax::Highlight::Engine::Kate::Template');
20
21 sub new {
22    my $proto = shift;
23    my $class = ref($proto) || $proto;
24    my $self = $class->SUPER::new(@_);
25    $self->attributes({
26       'Comment' => 'Comment',
27       'Data Type' => 'DataType',
28       'Decimal' => 'DecVal',
29       'Float' => 'Float',
30       'Function' => 'Function',
31       'Identifier' => 'Others',
32       'Keyword' => 'Keyword',
33       'Normal Text' => 'Normal',
34       'Operator' => 'Normal',
35       'Preprocessor' => 'Others',
36       'String' => 'String',
37       'String Char' => 'Char',
38       'Symbol' => 'Char',
39    });
40    $self->listAdd('functions',
41       'ABS',
42       'ACOS',
43       'ADDDATE',
44       'AES_DECRYPT',
45       'AES_ENCRYPT',
46       'ASCII',
47       'ASIN',
48       'ATAN',
49       'ATAN2',
50       'AVG',
51       'BENCHMARK',
52       'BIN',
53       'BIT_AND',
54       'BIT_COUNT',
55       'BIT_LENGTH',
56       'BIT_OR',
57       'CAST',
58       'CEILING',
59       'CHAR',
60       'CHARACTER_LENGTH',
61       'CHAR_LENGTH',
62       'CONCAT',
63       'CONCAT_WS',
64       'CONNECTION_ID',
65       'CONV',
66       'CONVERT',
67       'COS',
68       'COT',
69       'COUNT',
70       'CURDATE',
71       'CURRENT_DATE',
72       'CURRENT_TIME',
73       'CURRENT_TIMESTAMP',
74       'CURTIME',
75       'DATABASE',
76       'DATE_ADD',
77       'DATE_FORMAT',
78       'DATE_SUB',
79       'DAYNAME',
80       'DAYOFMONTH',
81       'DAYOFWEEK',
82       'DAYOFYEAR',
83       'DECODE',
84       'DEGREES',
85       'DES_DECRYPT',
86       'DES_ENCRYPT',
87       'ELT',
88       'ENCODE',
89       'ENCRYPT',
90       'EXP',
91       'EXPORT_SET',
92       'EXTRACT',
93       'FIELD',
94       'FIND_IN_SET',
95       'FLOOR',
96       'FORMAT',
97       'FOUND_ROWS',
98       'FROM_DAYS',
99       'FROM_UNIXTIME',
100       'GET_LOCK',
101       'GREATEST',
102       'HEX',
103       'HOUR',
104       'INET_ATON',
105       'INET_NTOA',
106       'INSERT',
107       'INSTR',
108       'IS_FREE_LOCK',
109       'LAST_INSERT_ID',
110       'LCASE',
111       'LEAST',
112       'LEFT',
113       'LENGTH',
114       'LN',
115       'LOAD_FILE',
116       'LOCATE',
117       'LOG',
118       'LOG10',
119       'LOG2',
120       'LOWER',
121       'LPAD',
122       'LTRIM',
123       'MAKE_SET',
124       'MASTER_POS_WAIT',
125       'MAX',
126       'MD5',
127       'MID',
128       'MIN',
129       'MINUTE',
130       'MOD',
131       'MONTH',
132       'MONTHNAME',
133       'NOW',
134       'OCT',
135       'OCTET_LENGTH',
136       'ORD',
137       'PASSWORD',
138       'PERIOD_ADD',
139       'PERIOD_DIFF',
140       'PI',
141       'POSITION',
142       'POW',
143       'POWER',
144       'QUARTER',
145       'QUOTE',
146       'RADIANS',
147       'RAND',
148       'RELEASE_LOCK',
149       'REPEAT',
150       'REPLACE',
151       'REVERSE',
152       'RIGHT',
153       'ROUND',
154       'RPAD',
155       'RTRIM',
156       'SECOND',
157       'SEC_TO_TIME',
158       'SESSION_USER',
159       'SHA',
160       'SHA1',
161       'SIGN',
162       'SIN',
163       'SOUNDEX',
164       'SPACE',
165       'SQRT',
166       'STD',
167       'STDDEV',
168       'SUBDATE',
169       'SUBSTRING',
170       'SUBSTRING_INDEX',
171       'SUM',
172       'SYSDATE',
173       'SYSTEM_USER',
174       'TAN',
175       'TIME_FORMAT',
176       'TIME_TO_SEC',
177       'TO_DAYS',
178       'TRIM',
179       'TRUNCATE',
180       'UCASE',
181       'UNIX_TIMESTAMP',
182       'UPPER',
183       'USER',
184       'VERSION',
185       'WEEK',
186       'WEEKDAY',
187       'YEAR',
188       'YEARWEEK',
189    );
190    $self->listAdd('keywords',
191       'ACCESS',
192       'ADD',
193       'ALL',
194       'ALTER',
195       'ANALYZE',
196       'AND',
197       'AS',
198       'ASC',
199       'AUTO_INCREMENT',
200       'BDB',
201       'BERKELEYDB',
202       'BETWEEN',
203       'BOTH',
204       'BY',
205       'CASCADE',
206       'CASE',
207       'CHANGE',
208       'COLUMN',
209       'COLUMNS',
210       'CONSTRAINT',
211       'CREATE',
212       'CROSS',
213       'CURRENT_DATE',
214       'CURRENT_TIME',
215       'CURRENT_TIMESTAMP',
216       'DATABASE',
217       'DATABASES',
218       'DAY_HOUR',
219       'DAY_MINUTE',
220       'DAY_SECOND',
221       'DEC',
222       'DEFAULT',
223       'DELAYED',
224       'DELETE',
225       'DESC',
226       'DESCRIBE',
227       'DISTINCT',
228       'DISTINCTROW',
229       'DROP',
230       'ELSE',
231       'ENCLOSED',
232       'ESCAPED',
233       'EXISTS',
234       'EXPLAIN',
235       'FIELDS',
236       'FOR',
237       'FOREIGN',
238       'FROM',
239       'FULLTEXT',
240       'FUNCTION',
241       'GRANT',
242       'GROUP',
243       'HAVING',
244       'HIGH_PRIORITY',
245       'IF',
246       'IGNORE',
247       'IN',
248       'INDEX',
249       'INFILE',
250       'INNER',
251       'INNODB',
252       'INSERT',
253       'INTERVAL',
254       'INTO',
255       'IS',
256       'JOIN',
257       'KEY',
258       'KEYS',
259       'KILL',
260       'LEADING',
261       'LEFT',
262       'LIKE',
263       'LIMIT',
264       'LINES',
265       'LOAD',
266       'LOCK',
267       'LOW_PRIORITY',
268       'MASTER_SERVER_ID',
269       'MATCH',
270       'MRG_MYISAM',
271       'NATURAL',
272       'NOT',
273       'NULL',
274       'NUMERIC',
275       'ON',
276       'OPTIMIZE',
277       'OPTION',
278       'OPTIONALLY',
279       'OR',
280       'ORDER',
281       'OUTER',
282       'OUTFILE',
283       'PARTIAL',
284       'PRECISION',
285       'PRIMARY',
286       'PRIVILEGES',
287       'PROCEDURE',
288       'PURGE',
289       'READ',
290       'REFERENCES',
291       'REGEXP',
292       'RENAME',
293       'REPLACE',
294       'REQUIRE',
295       'RESTRICT',
296       'RETURNS',
297       'REVOKE',
298       'RIGHT',
299       'RLIKE',
300       'SELECT',
301       'SET',
302       'SHOW',
303       'SONAME',
304       'SQL_BIG_RESULT',
305       'SQL_CALC_FOUND_ROWS',
306       'SQL_SMALL_RESULT',
307       'SSL',
308       'STARTING',
309       'STRAIGHT_JOIN',
310       'STRIPED',
311       'TABLE',
312       'TABLES',
313       'TERMINATED',
314       'THEN',
315       'TO',
316       'TRAILING',
317       'UNION',
318       'UNIQUE',
319       'UNLOCK',
320       'UNSIGNED',
321       'UPDATE',
322       'USAGE',
323       'USE',
324       'USER_RESOURCES',
325       'USING',
326       'VALUES',
327       'VARYING',
328       'WHEN',
329       'WHERE',
330       'WITH',
331       'WRITE',
332       'XOR',
333       'YEAR_MONTH',
334       'ZEROFILL',
335    );
336    $self->listAdd('operators',
337       '!=',
338       '*',
339       '**',
340       '+',
341       '-',
342       '..',
343       '/',
344       ':=',
345       '<',
346       '<=',
347       '<>',
348       '=',
349       '=>',
350       '>',
351       '>=',
352       '^=',
353       '||',
354       '~=',
355    );
356    $self->listAdd('types',
357       'BIGINT',
358       'BINARY',
359       'BLOB',
360       'CHAR',
361       'CHARACTER',
362       'DECIMAL',
363       'DOUBLE',
364       'FLOAT',
365       'HOUR_MINUTE',
366       'HOUR_SECOND',
367       'INT',
368       'INTEGER',
369       'LONG',
370       'LONGBLOB',
371       'LONGTEXT',
372       'MEDIUMBLOB',
373       'MEDIUMINT',
374       'MEDIUMTEXT',
375       'MIDDLEINT',
376       'MINUTE_SECOND',
377       'REAL',
378       'SMALLINT',
379       'TEXT',
380       'TINYBLOB',
381       'TINYINT',
382       'TINYTEXT',
383       'VARBINARY',
384       'VARCHAR',
385    );
386    $self->contextdata({
387       'Identifier' => {
388          callback => \&parseIdentifier,
389          attribute => 'Identifier',
390          lineending => '#pop',
391       },
392       'MultiLineComment' => {
393          callback => \&parseMultiLineComment,
394          attribute => 'Comment',
395       },
396       'Normal' => {
397          callback => \&parseNormal,
398          attribute => 'Normal Text',
399       },
400       'Preprocessor' => {
401          callback => \&parsePreprocessor,
402          attribute => 'Preprocessor',
403          lineending => '#pop',
404       },
405       'SingleLineComment' => {
406          callback => \&parseSingleLineComment,
407          attribute => 'Comment',
408          lineending => '#pop',
409       },
410       'String' => {
411          callback => \&parseString,
412          attribute => 'String',
413       },
414    });
415    $self->deliminators('\\s||\\(|\\)|,|\\%|\\&|;|\\?|\\[|\\]|\\{|\\}|\\\\|\\+|-|\\*|\\/|\\||=|\\!|<|>|\\~|\\^|:|\\.');
416    $self->basecontext('Normal');
417    $self->keywordscase(0);
418    $self->initialize;
419    bless ($self, $class);
420    return $self;
421 }
422
423 sub language {
424    return 'SQL (MySQL)';
425 }
426
427 sub parseIdentifier {
428    my ($self, $text) = @_;
429    # attribute => 'Identifier'
430    # char => '"'
431    # context => '#pop'
432    # type => 'DetectChar'
433    if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, '#pop', 'Identifier')) {
434       return 1
435    }
436    return 0;
437 };
438
439 sub parseMultiLineComment {
440    my ($self, $text) = @_;
441    # attribute => 'Comment'
442    # context => '#pop'
443    # type => 'LineContinue'
444    if ($self->testLineContinue($text, 0, undef, 0, '#pop', 'Comment')) {
445       return 1
446    }
447    # attribute => 'Comment'
448    # char => '*'
449    # char1 => '/'
450    # context => '#pop'
451    # endRegion => 'Comment'
452    # type => 'Detect2Chars'
453    if ($self->testDetect2Chars($text, '*', '/', 0, 0, 0, undef, 0, '#pop', 'Comment')) {
454       return 1
455    }
456    return 0;
457 };
458
459 sub parseNormal {
460    my ($self, $text) = @_;
461    # String => 'keywords'
462    # attribute => 'Keyword'
463    # context => '#stay'
464    # type => 'keyword'
465    if ($self->testKeyword($text, 'keywords', 0, undef, 0, '#stay', 'Keyword')) {
466       return 1
467    }
468    # String => 'operators'
469    # attribute => 'Operator'
470    # context => '#stay'
471    # type => 'keyword'
472    if ($self->testKeyword($text, 'operators', 0, undef, 0, '#stay', 'Operator')) {
473       return 1
474    }
475    # String => 'functions'
476    # attribute => 'Function'
477    # context => '#stay'
478    # type => 'keyword'
479    if ($self->testKeyword($text, 'functions', 0, undef, 0, '#stay', 'Function')) {
480       return 1
481    }
482    # String => 'types'
483    # attribute => 'Data Type'
484    # context => '#stay'
485    # type => 'keyword'
486    if ($self->testKeyword($text, 'types', 0, undef, 0, '#stay', 'Data Type')) {
487       return 1
488    }
489    # String => '%bulk_exceptions\b'
490    # attribute => 'Data Type'
491    # context => '#stay'
492    # insensitive => 'true'
493    # type => 'RegExpr'
494    if ($self->testRegExpr($text, '%bulk_exceptions\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
495       return 1
496    }
497    # String => '%bulk_rowcount\b'
498    # attribute => 'Data Type'
499    # context => '#stay'
500    # insensitive => 'true'
501    # type => 'RegExpr'
502    if ($self->testRegExpr($text, '%bulk_rowcount\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
503       return 1
504    }
505    # String => '%found\b'
506    # attribute => 'Data Type'
507    # context => '#stay'
508    # insensitive => 'true'
509    # type => 'RegExpr'
510    if ($self->testRegExpr($text, '%found\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
511       return 1
512    }
513    # String => '%isopen\b'
514    # attribute => 'Data Type'
515    # context => '#stay'
516    # insensitive => 'true'
517    # type => 'RegExpr'
518    if ($self->testRegExpr($text, '%isopen\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
519       return 1
520    }
521    # String => '%notfound\b'
522    # attribute => 'Data Type'
523    # context => '#stay'
524    # insensitive => 'true'
525    # type => 'RegExpr'
526    if ($self->testRegExpr($text, '%notfound\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
527       return 1
528    }
529    # String => '%rowcount\b'
530    # attribute => 'Data Type'
531    # context => '#stay'
532    # insensitive => 'true'
533    # type => 'RegExpr'
534    if ($self->testRegExpr($text, '%rowcount\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
535       return 1
536    }
537    # String => '%rowtype\b'
538    # attribute => 'Data Type'
539    # context => '#stay'
540    # insensitive => 'true'
541    # type => 'RegExpr'
542    if ($self->testRegExpr($text, '%rowtype\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
543       return 1
544    }
545    # String => '%type\b'
546    # attribute => 'Data Type'
547    # context => '#stay'
548    # insensitive => 'true'
549    # type => 'RegExpr'
550    if ($self->testRegExpr($text, '%type\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
551       return 1
552    }
553    # attribute => 'Float'
554    # context => '#stay'
555    # type => 'Float'
556    if ($self->testFloat($text, 0, undef, 0, '#stay', 'Float')) {
557       return 1
558    }
559    # attribute => 'Decimal'
560    # context => '#stay'
561    # type => 'Int'
562    if ($self->testInt($text, 0, undef, 0, '#stay', 'Decimal')) {
563       return 1
564    }
565    # attribute => 'String'
566    # char => '''
567    # context => 'String'
568    # type => 'DetectChar'
569    if ($self->testDetectChar($text, '\'', 0, 0, 0, undef, 0, 'String', 'String')) {
570       return 1
571    }
572    # attribute => 'Comment'
573    # char => '#'
574    # context => 'SingleLineComment'
575    # type => 'DetectChar'
576    if ($self->testDetectChar($text, '#', 0, 0, 0, undef, 0, 'SingleLineComment', 'Comment')) {
577       return 1
578    }
579    # attribute => 'Comment'
580    # char => '-'
581    # char1 => '-'
582    # context => 'SingleLineComment'
583    # type => 'Detect2Chars'
584    if ($self->testDetect2Chars($text, '-', '-', 0, 0, 0, undef, 0, 'SingleLineComment', 'Comment')) {
585       return 1
586    }
587    # attribute => 'Comment'
588    # beginRegion => 'Comment'
589    # char => '/'
590    # char1 => '*'
591    # context => 'MultiLineComment'
592    # type => 'Detect2Chars'
593    if ($self->testDetect2Chars($text, '/', '*', 0, 0, 0, undef, 0, 'MultiLineComment', 'Comment')) {
594       return 1
595    }
596    # String => 'rem\b'
597    # attribute => 'Comment'
598    # column => '0'
599    # context => 'SingleLineComment'
600    # insensitive => 'true'
601    # type => 'RegExpr'
602    if ($self->testRegExpr($text, 'rem\\b', 1, 0, 0, 0, 0, 'SingleLineComment', 'Comment')) {
603       return 1
604    }
605    # attribute => 'Comment'
606    # char => '"'
607    # context => 'Identifier'
608    # type => 'DetectChar'
609    if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'Identifier', 'Comment')) {
610       return 1
611    }
612    # String => ':&'
613    # attribute => 'Symbol'
614    # context => '#stay'
615    # type => 'AnyChar'
616    if ($self->testAnyChar($text, ':&', 0, 0, undef, 0, '#stay', 'Symbol')) {
617       return 1
618    }
619    # String => '/$'
620    # attribute => 'Symbol'
621    # column => '0'
622    # context => '#stay'
623    # type => 'RegExpr'
624    if ($self->testRegExpr($text, '/$', 0, 0, 0, 0, 0, '#stay', 'Symbol')) {
625       return 1
626    }
627    # String => '@@?[^@ \t\r\n]'
628    # attribute => 'Preprocessor'
629    # column => '0'
630    # context => 'Preprocessor'
631    # type => 'RegExpr'
632    if ($self->testRegExpr($text, '@@?[^@ \\t\\r\\n]', 0, 0, 0, 0, 0, 'Preprocessor', 'Preprocessor')) {
633       return 1
634    }
635    return 0;
636 };
637
638 sub parsePreprocessor {
639    my ($self, $text) = @_;
640    return 0;
641 };
642
643 sub parseSingleLineComment {
644    my ($self, $text) = @_;
645    return 0;
646 };
647
648 sub parseString {
649    my ($self, $text) = @_;
650    # attribute => 'String'
651    # context => '#pop'
652    # type => 'LineContinue'
653    if ($self->testLineContinue($text, 0, undef, 0, '#pop', 'String')) {
654       return 1
655    }
656    # attribute => 'String Char'
657    # context => '#stay'
658    # type => 'HlCStringChar'
659    if ($self->testHlCStringChar($text, 0, undef, 0, '#stay', 'String Char')) {
660       return 1
661    }
662    # attribute => 'Symbol'
663    # char => '&'
664    # context => '#stay'
665    # type => 'DetectChar'
666    if ($self->testDetectChar($text, '&', 0, 0, 0, undef, 0, '#stay', 'Symbol')) {
667       return 1
668    }
669    # attribute => 'String'
670    # char => '''
671    # context => '#pop'
672    # type => 'DetectChar'
673    if ($self->testDetectChar($text, '\'', 0, 0, 0, undef, 0, '#pop', 'String')) {
674       return 1
675    }
676    return 0;
677 };
678
679
680 1;
681
682 __END__
683
684 =head1 NAME
685
686 Syntax::Highlight::Engine::Kate::SQL_MySQL - a Plugin for SQL (MySQL) syntax highlighting
687
688 =head1 SYNOPSIS
689
690  require Syntax::Highlight::Engine::Kate::SQL_MySQL;
691  my $sh = new Syntax::Highlight::Engine::Kate::SQL_MySQL([
692  ]);
693
694 =head1 DESCRIPTION
695
696 Syntax::Highlight::Engine::Kate::SQL_MySQL is a  plugin module that provides syntax highlighting
697 for SQL (MySQL) to the Syntax::Haghlight::Engine::Kate highlighting engine.
698
699 This code is generated from the syntax definition files used
700 by the Kate project.
701 It works quite fine, but can use refinement and optimization.
702
703 It inherits Syntax::Higlight::Engine::Kate::Template. See also there.
704
705 =cut
706
707 =head1 AUTHOR
708
709 Hans Jeuken (haje <at> toneel <dot> demon <dot> nl)
710
711 =cut
712
713 =head1 BUGS
714
715 Unknown. If you find any, please contact the author
716
717 =cut
718