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 'scheme.xml' file of the syntax highlight 6# engine of the kate text editor (http://www.kate-editor.org 7 8#kate xml version 1.11 9#kate version 2.4 10#kate author Dominik Haumann (dhdev@gmx.de) 11#generated: Sun Feb 3 22:02:06 2008, localtime 12 13package Syntax::Highlight::Engine::Kate::Scheme; 14 15our $VERSION = '0.14'; 16 17use strict; 18use warnings; 19use base('Syntax::Highlight::Engine::Kate::Template'); 20 21sub new { 22 my $proto = shift; 23 my $class = ref($proto) || $proto; 24 my $self = $class->SUPER::new(@_); 25 $self->attributes({ 26 'BaseN' => 'BaseN', 27 'Brackets1' => 'Others', 28 'Brackets2' => 'Others', 29 'Brackets3' => 'Others', 30 'Brackets4' => 'Others', 31 'Brackets5' => 'Others', 32 'Brackets6' => 'Others', 33 'Char' => 'Char', 34 'Comment' => 'Comment', 35 'Data' => 'DataType', 36 'Decimal' => 'DecVal', 37 'Definition' => 'Reserved', 38 'Float' => 'Float', 39 'Function' => 'Function', 40 'Keyword' => 'Keyword', 41 'Normal' => 'Normal', 42 'Operator' => 'Operator', 43 'Region Marker' => 'RegionMarker', 44 'String' => 'String', 45 }); 46 $self->listAdd('characters', 47 '#\\\\ack', 48 '#\\\\backspace', 49 '#\\\\bel', 50 '#\\\\bs', 51 '#\\\\bs', 52 '#\\\\can', 53 '#\\\\cr', 54 '#\\\\cr', 55 '#\\\\dc1', 56 '#\\\\dc2', 57 '#\\\\dc3', 58 '#\\\\dc4', 59 '#\\\\dle', 60 '#\\\\em', 61 '#\\\\enq', 62 '#\\\\eot', 63 '#\\\\esc', 64 '#\\\\etb', 65 '#\\\\etx', 66 '#\\\\fs', 67 '#\\\\gs', 68 '#\\\\ht', 69 '#\\\\ht', 70 '#\\\\nak', 71 '#\\\\newline', 72 '#\\\\nl', 73 '#\\\\nl', 74 '#\\\\np', 75 '#\\\\np', 76 '#\\\\nul', 77 '#\\\\nul', 78 '#\\\\null', 79 '#\\\\page', 80 '#\\\\return', 81 '#\\\\rs', 82 '#\\\\si', 83 '#\\\\so', 84 '#\\\\soh', 85 '#\\\\sp', 86 '#\\\\space', 87 '#\\\\stx', 88 '#\\\\sub', 89 '#\\\\syn', 90 '#\\\\tab', 91 '#\\\\us', 92 '#\\\\vt', 93 ); 94 $self->listAdd('defines', 95 'define', 96 'define*', 97 'define*-public', 98 'define-accessor', 99 'define-class', 100 'define-generic', 101 'define-macro', 102 'define-method', 103 'define-module', 104 'define-private', 105 'define-public', 106 'define-reader-ctor', 107 'define-syntax', 108 'define-syntax-macro', 109 'defined?', 110 'defmacro', 111 'defmacro*', 112 'defmacro*-public', 113 ); 114 $self->listAdd('keywords', 115 'abs', 116 'acos', 117 'and', 118 'angle', 119 'append', 120 'applymap', 121 'asin', 122 'assoc', 123 'assq', 124 'assv', 125 'atan', 126 'begin', 127 'boolean?', 128 'break', 129 'caaaar', 130 'caaadr', 131 'caaar', 132 'caadar', 133 'caaddr', 134 'caadr', 135 'caar', 136 'cadaar', 137 'cadadr', 138 'cadar', 139 'caddar', 140 'cadddr', 141 'caddr', 142 'cadr', 143 'call-with-current-continuation', 144 'call-with-input-file', 145 'call-with-output-file', 146 'call-with-values', 147 'call/cc', 148 'car', 149 'case', 150 'catch', 151 'cdaaar', 152 'cdaadr', 153 'cdaar', 154 'cdadar', 155 'cdaddr', 156 'cdadr', 157 'cdar', 158 'cddaar', 159 'cddadr', 160 'cddar', 161 'cdddar', 162 'cddddr', 163 'cdddr', 164 'cddr', 165 'cdr', 166 'ceiling', 167 'char->integer', 168 'char-alphabetic?', 169 'char-ci<=?', 170 'char-ci=?', 171 'char-ci>=?', 172 'char-ci>?', 173 'char-downcase', 174 'char-lower-case?', 175 'char-numeric?', 176 'char-ready?', 177 'char-upcase', 178 'char-upper-case?', 179 'char-whitespace?', 180 'char<=?', 181 'char<?c', 182 'char=?', 183 'char>=?', 184 'char>?', 185 'char?', 186 'close-input-port', 187 'close-output-port', 188 'complex?', 189 'cond', 190 'cons', 191 'continue', 192 'cos', 193 'current-input-port', 194 'current-output-port', 195 'denominator', 196 'display', 197 'do', 198 'dynamic-wind', 199 'else', 200 'eof-object?', 201 'eq?', 202 'equal?', 203 'eqv?', 204 'eval', 205 'even?', 206 'exact->inexact', 207 'exact?', 208 'exp', 209 'expt', 210 'floor', 211 'for-each', 212 'force', 213 'gcd', 214 'har-ci<?', 215 'if', 216 'imag-part', 217 'inexact->exact', 218 'inexact?', 219 'input-port?', 220 'integer->char', 221 'integer?', 222 'interaction-environment', 223 'lambda', 224 'lcm', 225 'length', 226 'let', 227 'let*', 228 'let-syntax', 229 'letrec', 230 'letrec-syntax', 231 'list', 232 'list->string', 233 'list-ref', 234 'list-tail', 235 'list?', 236 'load', 237 'log', 238 'magnitude', 239 'make-polar', 240 'make-rectangular', 241 'make-string', 242 'make-vector', 243 'max', 244 'member', 245 'memq', 246 'memv', 247 'min', 248 'modulo', 249 'negative?', 250 'newline', 251 'not', 252 'null-environment', 253 'null?', 254 'number->string', 255 'number?', 256 'numerator', 257 'odd?', 258 'open-input-file', 259 'open-output-file', 260 'or', 261 'output-port?', 262 'pair?', 263 'peek-char', 264 'port?', 265 'positive?', 266 'procedure?', 267 'quotient', 268 'rational?', 269 'rationalize', 270 'read', 271 'read-char', 272 'real-part', 273 'real?', 274 'remainder', 275 'reverse', 276 'round', 277 'scheme-report-environment', 278 'set-car!', 279 'set-cdr!', 280 'sin', 281 'sqrt', 282 'string', 283 'string->list', 284 'string->number', 285 'string->symbol', 286 'string-append', 287 'string-ci<=?', 288 'string-ci<?', 289 'string-ci=?', 290 'string-ci>=?', 291 'string-ci>?', 292 'string-copy', 293 'string-fill!', 294 'string-length', 295 'string-ref', 296 'string-set!', 297 'string<=?', 298 'string<?', 299 'string=?', 300 'string>=?', 301 'string>?', 302 'string?', 303 'substring', 304 'symbol->string', 305 'symbol?', 306 'syntax-rules', 307 'tan', 308 'transcript-off', 309 'transcript-on', 310 'truncate', 311 'values', 312 'vector', 313 'vector->listlist->vector', 314 'vector-fill!', 315 'vector-length', 316 'vector-ref', 317 'vector-set!', 318 'vector?', 319 'while', 320 'with-input-from-file', 321 'with-output-to-file', 322 'write', 323 'write-char', 324 'zero?', 325 ); 326 $self->listAdd('operators', 327 '*)', 328 '*,*', 329 '+', 330 '-', 331 '/', 332 '<', 333 '<=', 334 '=', 335 '=>', 336 '>', 337 '>=', 338 ); 339 $self->contextdata({ 340 'Default' => { 341 callback => \&parseDefault, 342 attribute => 'Normal', 343 }, 344 'Level0' => { 345 callback => \&parseLevel0, 346 attribute => 'Normal', 347 }, 348 'Level1' => { 349 callback => \&parseLevel1, 350 attribute => 'Normal', 351 }, 352 'Level2' => { 353 callback => \&parseLevel2, 354 attribute => 'Normal', 355 }, 356 'Level3' => { 357 callback => \&parseLevel3, 358 attribute => 'Normal', 359 }, 360 'Level4' => { 361 callback => \&parseLevel4, 362 attribute => 'Normal', 363 }, 364 'Level5' => { 365 callback => \&parseLevel5, 366 attribute => 'Normal', 367 }, 368 'Level6' => { 369 callback => \&parseLevel6, 370 attribute => 'Normal', 371 }, 372 'MultiLineComment' => { 373 callback => \&parseMultiLineComment, 374 attribute => 'Comment', 375 }, 376 'SpecialNumber' => { 377 callback => \&parseSpecialNumber, 378 attribute => 'Normal', 379 lineending => '#pop', 380 }, 381 'String' => { 382 callback => \&parseString, 383 attribute => 'String', 384 }, 385 'function_decl' => { 386 callback => \&parsefunction_decl, 387 attribute => 'Function', 388 }, 389 }); 390 $self->deliminators('\\s||\\.|\\(|\\)|,|\\%|\\&|;|\\[|\\]|\\^|\\{|\\||\\}|\\~|-|\\+|\\*|\\?|\\!|<|>|=|\\/|:|#|\\\\'); 391 $self->basecontext('Level0'); 392 $self->keywordscase(0); 393 $self->initialize; 394 bless ($self, $class); 395 return $self; 396} 397 398sub language { 399 return 'Scheme'; 400} 401 402sub parseDefault { 403 my ($self, $text) = @_; 404 # String => ';+\s*BEGIN.*$' 405 # attribute => 'Region Marker' 406 # beginRegion => 'region' 407 # context => '#stay' 408 # type => 'RegExpr' 409 if ($self->testRegExpr($text, ';+\\s*BEGIN.*$', 0, 0, 0, undef, 0, '#stay', 'Region Marker')) { 410 return 1 411 } 412 # String => ';+\s*END.*$' 413 # attribute => 'Region Marker' 414 # context => '#stay' 415 # endRegion => 'region' 416 # type => 'RegExpr' 417 if ($self->testRegExpr($text, ';+\\s*END.*$', 0, 0, 0, undef, 0, '#stay', 'Region Marker')) { 418 return 1 419 } 420 # String => ';.*$' 421 # attribute => 'Comment' 422 # context => '#stay' 423 # type => 'RegExpr' 424 if ($self->testRegExpr($text, ';.*$', 0, 0, 0, undef, 0, '#stay', 'Comment')) { 425 return 1 426 } 427 # attribute => 'Comment' 428 # beginRegion => 'region' 429 # char => '#' 430 # char1 => '!' 431 # context => 'MultiLineComment' 432 # type => 'Detect2Chars' 433 if ($self->testDetect2Chars($text, '#', '!', 0, 0, 0, undef, 0, 'MultiLineComment', 'Comment')) { 434 return 1 435 } 436 # String => 'keywords' 437 # attribute => 'Keyword' 438 # context => '#stay' 439 # type => 'keyword' 440 if ($self->testKeyword($text, 'keywords', 0, undef, 0, '#stay', 'Keyword')) { 441 return 1 442 } 443 # String => 'operators' 444 # attribute => 'Operator' 445 # context => '#stay' 446 # type => 'keyword' 447 if ($self->testKeyword($text, 'operators', 0, undef, 0, '#stay', 'Operator')) { 448 return 1 449 } 450 # String => 'defines' 451 # attribute => 'Definition' 452 # context => 'function_decl' 453 # type => 'keyword' 454 if ($self->testKeyword($text, 'defines', 0, undef, 0, 'function_decl', 'Definition')) { 455 return 1 456 } 457 # String => 'characters' 458 # attribute => 'Char' 459 # context => '#stay' 460 # type => 'keyword' 461 if ($self->testKeyword($text, 'characters', 0, undef, 0, '#stay', 'Char')) { 462 return 1 463 } 464 # String => '#\\.' 465 # attribute => 'Char' 466 # context => '#stay' 467 # type => 'RegExpr' 468 if ($self->testRegExpr($text, '#\\\\.', 0, 0, 0, undef, 0, '#stay', 'Char')) { 469 return 1 470 } 471 # attribute => 'String' 472 # char => '"' 473 # context => 'String' 474 # type => 'DetectChar' 475 if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'String', 'String')) { 476 return 1 477 } 478 # String => '#[bodxei]' 479 # attribute => 'Char' 480 # context => 'SpecialNumber' 481 # type => 'RegExpr' 482 if ($self->testRegExpr($text, '#[bodxei]', 0, 0, 0, undef, 0, 'SpecialNumber', 'Char')) { 483 return 1 484 } 485 # String => '#[tf]' 486 # attribute => 'Decimal' 487 # context => '#stay' 488 # type => 'RegExpr' 489 if ($self->testRegExpr($text, '#[tf]', 0, 0, 0, undef, 0, '#stay', 'Decimal')) { 490 return 1 491 } 492 # attribute => 'Float' 493 # context => '#stay' 494 # type => 'Float' 495 if ($self->testFloat($text, 0, undef, 0, '#stay', 'Float')) { 496 return 1 497 } 498 # attribute => 'Decimal' 499 # context => '#stay' 500 # type => 'Int' 501 if ($self->testInt($text, 0, undef, 0, '#stay', 'Decimal')) { 502 return 1 503 } 504 # attribute => 'Brackets1' 505 # char => '(' 506 # context => 'Level1' 507 # type => 'DetectChar' 508 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'Level1', 'Brackets1')) { 509 return 1 510 } 511 return 0; 512}; 513 514sub parseLevel0 { 515 my ($self, $text) = @_; 516 # attribute => 'Brackets1' 517 # char => '(' 518 # context => 'Level1' 519 # type => 'DetectChar' 520 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'Level1', 'Brackets1')) { 521 return 1 522 } 523 # context => 'Default' 524 # type => 'IncludeRules' 525 if ($self->includeRules('Default', $text)) { 526 return 1 527 } 528 return 0; 529}; 530 531sub parseLevel1 { 532 my ($self, $text) = @_; 533 # attribute => 'Brackets2' 534 # char => '(' 535 # context => 'Level2' 536 # type => 'DetectChar' 537 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'Level2', 'Brackets2')) { 538 return 1 539 } 540 # attribute => 'Brackets1' 541 # char => ')' 542 # context => '#pop' 543 # type => 'DetectChar' 544 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Brackets1')) { 545 return 1 546 } 547 # context => 'Default' 548 # type => 'IncludeRules' 549 if ($self->includeRules('Default', $text)) { 550 return 1 551 } 552 return 0; 553}; 554 555sub parseLevel2 { 556 my ($self, $text) = @_; 557 # attribute => 'Brackets3' 558 # char => '(' 559 # context => 'Level3' 560 # type => 'DetectChar' 561 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'Level3', 'Brackets3')) { 562 return 1 563 } 564 # attribute => 'Brackets2' 565 # char => ')' 566 # context => '#pop' 567 # type => 'DetectChar' 568 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Brackets2')) { 569 return 1 570 } 571 # context => 'Default' 572 # type => 'IncludeRules' 573 if ($self->includeRules('Default', $text)) { 574 return 1 575 } 576 return 0; 577}; 578 579sub parseLevel3 { 580 my ($self, $text) = @_; 581 # attribute => 'Brackets4' 582 # char => '(' 583 # context => 'Level4' 584 # type => 'DetectChar' 585 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'Level4', 'Brackets4')) { 586 return 1 587 } 588 # attribute => 'Brackets3' 589 # char => ')' 590 # context => '#pop' 591 # type => 'DetectChar' 592 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Brackets3')) { 593 return 1 594 } 595 # context => 'Default' 596 # type => 'IncludeRules' 597 if ($self->includeRules('Default', $text)) { 598 return 1 599 } 600 return 0; 601}; 602 603sub parseLevel4 { 604 my ($self, $text) = @_; 605 # attribute => 'Brackets5' 606 # char => '(' 607 # context => 'Level5' 608 # type => 'DetectChar' 609 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'Level5', 'Brackets5')) { 610 return 1 611 } 612 # attribute => 'Brackets4' 613 # char => ')' 614 # context => '#pop' 615 # type => 'DetectChar' 616 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Brackets4')) { 617 return 1 618 } 619 # context => 'Default' 620 # type => 'IncludeRules' 621 if ($self->includeRules('Default', $text)) { 622 return 1 623 } 624 return 0; 625}; 626 627sub parseLevel5 { 628 my ($self, $text) = @_; 629 # attribute => 'Brackets6' 630 # char => '(' 631 # context => 'Level6' 632 # type => 'DetectChar' 633 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'Level6', 'Brackets6')) { 634 return 1 635 } 636 # attribute => 'Brackets5' 637 # char => ')' 638 # context => '#pop' 639 # type => 'DetectChar' 640 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Brackets5')) { 641 return 1 642 } 643 # context => 'Default' 644 # type => 'IncludeRules' 645 if ($self->includeRules('Default', $text)) { 646 return 1 647 } 648 return 0; 649}; 650 651sub parseLevel6 { 652 my ($self, $text) = @_; 653 # attribute => 'Brackets1' 654 # char => '(' 655 # context => 'Level1' 656 # type => 'DetectChar' 657 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'Level1', 'Brackets1')) { 658 return 1 659 } 660 # attribute => 'Brackets6' 661 # char => ')' 662 # context => '#pop' 663 # type => 'DetectChar' 664 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Brackets6')) { 665 return 1 666 } 667 # context => 'Default' 668 # type => 'IncludeRules' 669 if ($self->includeRules('Default', $text)) { 670 return 1 671 } 672 return 0; 673}; 674 675sub parseMultiLineComment { 676 my ($self, $text) = @_; 677 # String => '!#\s*$' 678 # attribute => 'Comment' 679 # column => '0' 680 # context => '#pop' 681 # endRegion => 'region' 682 # type => 'RegExpr' 683 if ($self->testRegExpr($text, '!#\\s*$', 0, 0, 0, 0, 0, '#pop', 'Comment')) { 684 return 1 685 } 686 return 0; 687}; 688 689sub parseSpecialNumber { 690 my ($self, $text) = @_; 691 # attribute => 'Float' 692 # context => '#pop' 693 # type => 'Float' 694 if ($self->testFloat($text, 0, undef, 0, '#pop', 'Float')) { 695 return 1 696 } 697 # attribute => 'Decimal' 698 # context => '#pop' 699 # type => 'Int' 700 if ($self->testInt($text, 0, undef, 0, '#pop', 'Decimal')) { 701 return 1 702 } 703 # attribute => 'BaseN' 704 # context => '#pop' 705 # type => 'HlCOct' 706 if ($self->testHlCOct($text, 0, undef, 0, '#pop', 'BaseN')) { 707 return 1 708 } 709 # attribute => 'Float' 710 # context => '#pop' 711 # type => 'HlCHex' 712 if ($self->testHlCHex($text, 0, undef, 0, '#pop', 'Float')) { 713 return 1 714 } 715 return 0; 716}; 717 718sub parseString { 719 my ($self, $text) = @_; 720 # String => 'characters' 721 # attribute => 'Char' 722 # context => '#stay' 723 # type => 'keyword' 724 if ($self->testKeyword($text, 'characters', 0, undef, 0, '#stay', 'Char')) { 725 return 1 726 } 727 # String => '#\\.' 728 # attribute => 'Char' 729 # context => '#stay' 730 # type => 'RegExpr' 731 if ($self->testRegExpr($text, '#\\\\.', 0, 0, 0, undef, 0, '#stay', 'Char')) { 732 return 1 733 } 734 # attribute => 'Char' 735 # char => '\' 736 # char1 => '"' 737 # context => '#stay' 738 # type => 'Detect2Chars' 739 if ($self->testDetect2Chars($text, '\\', '"', 0, 0, 0, undef, 0, '#stay', 'Char')) { 740 return 1 741 } 742 # attribute => 'Char' 743 # char => '\' 744 # char1 => '\' 745 # context => '#stay' 746 # type => 'Detect2Chars' 747 if ($self->testDetect2Chars($text, '\\', '\\', 0, 0, 0, undef, 0, '#stay', 'Char')) { 748 return 1 749 } 750 # attribute => 'String' 751 # char => '"' 752 # context => '#pop' 753 # type => 'DetectChar' 754 if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, '#pop', 'String')) { 755 return 1 756 } 757 return 0; 758}; 759 760sub parsefunction_decl { 761 my ($self, $text) = @_; 762 # String => '\s*[A-Za-z0-9-+\<\>//\*]*\s*' 763 # attribute => 'Function' 764 # context => '#pop' 765 # type => 'RegExpr' 766 if ($self->testRegExpr($text, '\\s*[A-Za-z0-9-+\\<\\>//\\*]*\\s*', 0, 0, 0, undef, 0, '#pop', 'Function')) { 767 return 1 768 } 769 return 0; 770}; 771 772 7731; 774 775__END__ 776 777=head1 NAME 778 779Syntax::Highlight::Engine::Kate::Scheme - a Plugin for Scheme syntax highlighting 780 781=head1 SYNOPSIS 782 783 require Syntax::Highlight::Engine::Kate::Scheme; 784 my $sh = new Syntax::Highlight::Engine::Kate::Scheme([ 785 ]); 786 787=head1 DESCRIPTION 788 789Syntax::Highlight::Engine::Kate::Scheme is a plugin module that provides syntax highlighting 790for Scheme to the Syntax::Haghlight::Engine::Kate highlighting engine. 791 792This code is generated from the syntax definition files used 793by the Kate project. 794It works quite fine, but can use refinement and optimization. 795 796It inherits Syntax::Higlight::Engine::Kate::Template. See also there. 797 798=head1 AUTHOR 799 800Hans Jeuken (haje <at> toneel <dot> demon <dot> nl) 801 802=head1 BUGS 803 804Unknown. If you find any, please contact the author