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.
5 # This file was generated from the 'fortran.xml' file of the syntax highlight
6 # engine of the kate text editor (http://www.kate-editor.org
10 #kate author Franchin Matteo (fnch@libero.it)
11 #generated: Sun Feb 3 22:02:05 2008, localtime
13 package Syntax::Highlight::Engine::Kate::Fortran;
15 our $VERSION = '0.06';
19 use base('Syntax::Highlight::Engine::Kate::Template');
23 my $class = ref($proto) || $proto;
24 my $self = $class->SUPER::new(@_);
26 'Comment' => 'Comment',
27 'Data Type' => 'DataType',
28 'Decimal' => 'DecVal',
29 'Elemental Procedure' => 'BString',
31 'IO Function' => 'Function',
32 'Inquiry Function' => 'Function',
33 'Keyword' => 'Keyword',
34 'Logical' => 'Reserved',
35 'Non elemental subroutine' => 'Keyword',
36 'Normal Text' => 'Normal',
37 'Operator' => 'Operator',
38 'Preprocessor' => 'Others',
41 'Transformational Function' => 'Variable',
43 $self->listAdd('elemental_procs',
167 $self->listAdd('inquire_keywords',
194 $self->listAdd('inquiry_fn',
215 $self->listAdd('io_functions',
227 $self->listAdd('io_keywords',
238 $self->listAdd('keywords',
289 $self->listAdd('non_elem_subr',
295 $self->listAdd('open_keywords',
310 $self->listAdd('transform_fn',
327 'selected_real_kind',
335 $self->listAdd('types',
350 callback => \&parsedefault,
351 attribute => 'Normal Text',
354 callback => \&parseend_of_string,
355 attribute => 'String',
356 fallthrough => '#pop#pop',
358 'find_begin_stmnts' => {
359 callback => \&parsefind_begin_stmnts,
360 attribute => 'Normal Text',
363 callback => \&parsefind_comments,
364 attribute => 'Normal Text',
367 callback => \&parsefind_decls,
368 attribute => 'Normal Text',
370 'find_end_stmnts' => {
371 callback => \&parsefind_end_stmnts,
372 attribute => 'Normal Text',
374 'find_intrinsics' => {
375 callback => \&parsefind_intrinsics,
376 attribute => 'Normal Text',
379 callback => \&parsefind_io_paren,
380 attribute => 'Normal Text',
382 'find_io_stmnts' => {
383 callback => \&parsefind_io_stmnts,
384 attribute => 'Normal Text',
387 callback => \&parsefind_numbers,
388 attribute => 'Normal Text',
390 'find_op_and_log' => {
391 callback => \&parsefind_op_and_log,
392 attribute => 'Normal Text',
395 callback => \&parsefind_paren,
396 attribute => 'Data Type',
397 lineending => '#pop',
399 'find_preprocessor' => {
400 callback => \&parsefind_preprocessor,
401 attribute => 'Normal Text',
404 callback => \&parsefind_strings,
405 attribute => 'String',
408 callback => \&parsefind_symbols,
409 attribute => 'Normal Text',
412 callback => \&parseformat_stmnt,
413 attribute => 'Normal Text',
415 'inside_func_paren' => {
416 callback => \&parseinside_func_paren,
417 attribute => 'Normal Text',
420 callback => \&parsestring_1,
421 attribute => 'String',
422 fallthrough => '#pop',
425 callback => \&parsestring_2,
426 attribute => 'String',
427 fallthrough => '#pop',
430 $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\');
431 $self->basecontext('default');
432 $self->keywordscase(0);
434 bless ($self, $class);
443 my ($self, $text) = @_;
444 # context => 'find_strings'
445 # type => 'IncludeRules'
446 if ($self->includeRules('find_strings', $text)) {
449 # context => 'find_decls'
450 # type => 'IncludeRules'
451 if ($self->includeRules('find_decls', $text)) {
454 # context => 'find_intrinsics'
455 # type => 'IncludeRules'
456 if ($self->includeRules('find_intrinsics', $text)) {
459 # context => 'find_io_stmnts'
460 # type => 'IncludeRules'
461 if ($self->includeRules('find_io_stmnts', $text)) {
464 # context => 'find_op_and_log'
465 # type => 'IncludeRules'
466 if ($self->includeRules('find_op_and_log', $text)) {
469 # context => 'find_numbers'
470 # type => 'IncludeRules'
471 if ($self->includeRules('find_numbers', $text)) {
474 # context => 'find_preprocessor'
475 # type => 'IncludeRules'
476 if ($self->includeRules('find_preprocessor', $text)) {
479 # context => 'find_comments'
480 # type => 'IncludeRules'
481 if ($self->includeRules('find_comments', $text)) {
484 # context => 'find_symbols'
485 # type => 'IncludeRules'
486 if ($self->includeRules('find_symbols', $text)) {
489 # context => 'find_end_stmnts'
490 # type => 'IncludeRules'
491 if ($self->includeRules('find_end_stmnts', $text)) {
494 # context => 'find_begin_stmnts'
495 # type => 'IncludeRules'
496 if ($self->includeRules('find_begin_stmnts', $text)) {
502 sub parseend_of_string {
503 my ($self, $text) = @_;
504 # type => 'DetectSpaces'
505 if ($self->testDetectSpaces($text, 0, undef, 0, '#stay', undef)) {
509 # attribute => 'Keyword'
512 if ($self->testRegExpr($text, '&\\s*$', 0, 0, 0, undef, 0, '#stay', 'Keyword')) {
515 # attribute => 'Keyword'
518 # firstNonSpace => 'true'
519 # type => 'DetectChar'
520 if ($self->testDetectChar($text, '&', 0, 0, 0, undef, 1, '#pop', 'Keyword')) {
523 # String => '(!.*)?$'
524 # attribute => 'Comment'
526 # firstNonSpace => 'true'
528 if ($self->testRegExpr($text, '(!.*)?$', 0, 0, 0, undef, 1, '#stay', 'Comment')) {
534 sub parsefind_begin_stmnts {
535 my ($self, $text) = @_;
536 # String => '\bmodule\s+procedure\b'
537 # attribute => 'Keyword'
539 # insensitive => 'TRUE'
541 if ($self->testRegExpr($text, '\\bmodule\\s+procedure\\b', 1, 0, 0, undef, 0, '#stay', 'Keyword')) {
544 # String => '\b(program|subroutine|function|module|block\s*data)\b'
545 # attribute => 'Keyword'
546 # beginRegion => 'Unit'
548 # insensitive => 'TRUE'
550 if ($self->testRegExpr($text, '\\b(program|subroutine|function|module|block\\s*data)\\b', 1, 0, 0, undef, 0, '#stay', 'Keyword')) {
556 sub parsefind_comments {
557 my ($self, $text) = @_;
558 # String => '[cC\*].*$'
559 # attribute => 'Comment'
563 if ($self->testRegExpr($text, '[cC\\*].*$', 0, 0, 0, 0, 0, '#stay', 'Comment')) {
567 # attribute => 'Comment'
570 if ($self->testRegExpr($text, '!.*$', 0, 0, 0, undef, 0, '#stay', 'Comment')) {
576 sub parsefind_decls {
577 my ($self, $text) = @_;
578 # String => '\binteger[\*]\d{1,2}'
579 # attribute => 'Data Type'
581 # insensitive => 'TRUE'
583 if ($self->testRegExpr($text, '\\binteger[\\*]\\d{1,2}', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
586 # String => '\breal[\*]\d{1,2}'
587 # attribute => 'Data Type'
589 # insensitive => 'TRUE'
591 if ($self->testRegExpr($text, '\\breal[\\*]\\d{1,2}', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
594 # String => '\bcomplex[\*]\d{1,2}'
595 # attribute => 'Data Type'
597 # insensitive => 'TRUE'
599 if ($self->testRegExpr($text, '\\bcomplex[\\*]\\d{1,2}', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
602 # String => '\bend\s*type\b'
603 # attribute => 'Data Type'
605 # insensitive => 'TRUE'
607 if ($self->testRegExpr($text, '\\bend\\s*type\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
611 # attribute => 'Data Type'
614 if ($self->testKeyword($text, 'types', 0, undef, 0, '#stay', 'Data Type')) {
617 # String => '^\s*data\b'
618 # attribute => 'Data Type'
620 # insensitive => 'TRUE'
622 if ($self->testRegExpr($text, '^\\s*data\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
625 # String => '^\s*real\s*[(]'
626 # attribute => 'Data Type'
627 # context => 'find_paren'
628 # insensitive => 'TRUE'
630 if ($self->testRegExpr($text, '^\\s*real\\s*[(]', 1, 0, 0, undef, 0, 'find_paren', 'Data Type')) {
633 # String => '^\s*real(?![\w\*])'
634 # attribute => 'Data Type'
636 # insensitive => 'TRUE'
638 if ($self->testRegExpr($text, '^\\s*real(?![\\w\\*])', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
641 # String => '\bcharacter[*][0-9]+\b'
642 # attribute => 'Data Type'
644 # insensitive => 'TRUE'
646 if ($self->testRegExpr($text, '\\bcharacter[*][0-9]+\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
649 # String => '\b(type|integer|complex|character|logical|intent|dimension)\b\s*[(]'
650 # attribute => 'Data Type'
651 # context => 'find_paren'
652 # insensitive => 'TRUE'
654 if ($self->testRegExpr($text, '\\b(type|integer|complex|character|logical|intent|dimension)\\b\\s*[(]', 1, 0, 0, undef, 0, 'find_paren', 'Data Type')) {
657 # String => '\b(type|integer|complex|character|logical|intent|dimension)\b'
658 # attribute => 'Data Type'
660 # insensitive => 'TRUE'
662 if ($self->testRegExpr($text, '\\b(type|integer|complex|character|logical|intent|dimension)\\b', 1, 0, 0, undef, 0, '#stay', 'Data Type')) {
665 # attribute => 'Data Type'
669 # type => 'Detect2Chars'
670 if ($self->testDetect2Chars($text, ':', ':', 0, 0, 0, undef, 0, '#stay', 'Data Type')) {
676 sub parsefind_end_stmnts {
677 my ($self, $text) = @_;
678 # String => '\bend\s*(program|subroutine|function|module|block\s*data)\b'
679 # attribute => 'Keyword'
681 # endRegion => 'Unit'
682 # insensitive => 'TRUE'
684 if ($self->testRegExpr($text, '\\bend\\s*(program|subroutine|function|module|block\\s*data)\\b', 1, 0, 0, undef, 0, '#stay', 'Keyword')) {
687 # String => '\bend\s*(do|if|select|where|forall|interface)\b'
688 # attribute => 'Keyword'
690 # insensitive => 'TRUE'
692 if ($self->testRegExpr($text, '\\bend\\s*(do|if|select|where|forall|interface)\\b', 1, 0, 0, undef, 0, '#stay', 'Keyword')) {
695 # String => '\bend\b'
696 # attribute => 'Keyword'
698 # endRegion => 'Unit'
699 # insensitive => 'TRUE'
701 if ($self->testRegExpr($text, '\\bend\\b', 1, 0, 0, undef, 0, '#stay', 'Keyword')) {
707 sub parsefind_intrinsics {
708 my ($self, $text) = @_;
709 # String => 'keywords'
710 # attribute => 'Keyword'
713 if ($self->testKeyword($text, 'keywords', 0, undef, 0, '#stay', 'Keyword')) {
716 # String => 'elemental_procs'
717 # attribute => 'Elemental Procedure'
720 if ($self->testKeyword($text, 'elemental_procs', 0, undef, 0, '#stay', 'Elemental Procedure')) {
723 # String => 'inquiry_fn'
724 # attribute => 'Inquiry Function'
727 if ($self->testKeyword($text, 'inquiry_fn', 0, undef, 0, '#stay', 'Inquiry Function')) {
730 # String => 'transform_fn'
731 # attribute => 'Transformational Function'
734 if ($self->testKeyword($text, 'transform_fn', 0, undef, 0, '#stay', 'Transformational Function')) {
737 # String => 'non_elem_subr'
738 # attribute => 'Non elemental subroutine'
741 if ($self->testKeyword($text, 'non_elem_subr', 0, undef, 0, '#stay', 'Non elemental subroutine')) {
747 sub parsefind_io_paren {
748 my ($self, $text) = @_;
749 # attribute => 'IO Function'
752 # type => 'DetectChar'
753 if ($self->testDetectChar($text, '*', 0, 0, 0, undef, 0, '#stay', 'IO Function')) {
756 # attribute => 'Normal Text'
758 # context => 'inside_func_paren'
759 # type => 'DetectChar'
760 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'inside_func_paren', 'Normal Text')) {
763 # attribute => 'IO Function'
766 # type => 'DetectChar'
767 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'IO Function')) {
770 # String => 'io_keywords'
771 # attribute => 'IO Function'
774 if ($self->testKeyword($text, 'io_keywords', 0, undef, 0, '#stay', 'IO Function')) {
777 # String => 'inquire_keywords'
778 # attribute => 'IO Function'
781 if ($self->testKeyword($text, 'inquire_keywords', 0, undef, 0, '#stay', 'IO Function')) {
784 # String => 'open_keywords'
785 # attribute => 'IO Function'
788 if ($self->testKeyword($text, 'open_keywords', 0, undef, 0, '#stay', 'IO Function')) {
791 # context => 'find_strings'
792 # type => 'IncludeRules'
793 if ($self->includeRules('find_strings', $text)) {
796 # context => 'find_intrinsics'
797 # type => 'IncludeRules'
798 if ($self->includeRules('find_intrinsics', $text)) {
801 # context => 'find_numbers'
802 # type => 'IncludeRules'
803 if ($self->includeRules('find_numbers', $text)) {
806 # context => 'find_symbols'
807 # type => 'IncludeRules'
808 if ($self->includeRules('find_symbols', $text)) {
814 sub parsefind_io_stmnts {
815 my ($self, $text) = @_;
816 # String => '\b(read|write|backspace|rewind|end\s*file|close)\s*[(]'
817 # attribute => 'IO Function'
818 # context => 'find_io_paren'
819 # insensitive => 'TRUE'
821 if ($self->testRegExpr($text, '\\b(read|write|backspace|rewind|end\\s*file|close)\\s*[(]', 1, 0, 0, undef, 0, 'find_io_paren', 'IO Function')) {
824 # String => '\bopen\s*[(]'
825 # attribute => 'IO Function'
826 # context => 'find_io_paren'
827 # insensitive => 'TRUE'
829 if ($self->testRegExpr($text, '\\bopen\\s*[(]', 1, 0, 0, undef, 0, 'find_io_paren', 'IO Function')) {
832 # String => '\binquire\s*[(]'
833 # attribute => 'IO Function'
834 # context => 'find_io_paren'
835 # insensitive => 'TRUE'
837 if ($self->testRegExpr($text, '\\binquire\\s*[(]', 1, 0, 0, undef, 0, 'find_io_paren', 'IO Function')) {
840 # String => '\bformat\s*[(]'
841 # attribute => 'IO Function'
842 # context => 'format_stmnt'
843 # insensitive => 'TRUE'
845 if ($self->testRegExpr($text, '\\bformat\\s*[(]', 1, 0, 0, undef, 0, 'format_stmnt', 'IO Function')) {
848 # String => '\bend\s*file\b'
849 # attribute => 'IO Function'
851 # insensitive => 'TRUE'
853 if ($self->testRegExpr($text, '\\bend\\s*file\\b', 1, 0, 0, undef, 0, '#stay', 'IO Function')) {
856 # String => 'io_functions'
857 # attribute => 'IO Function'
860 if ($self->testKeyword($text, 'io_functions', 0, undef, 0, '#stay', 'IO Function')) {
866 sub parsefind_numbers {
867 my ($self, $text) = @_;
868 # String => '[0-9]*\.[0-9]+([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\w_]*))?'
869 # attribute => 'Float'
871 # insensitive => 'TRUE'
873 if ($self->testRegExpr($text, '[0-9]*\\.[0-9]+([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\\w_]*))?', 1, 0, 0, undef, 0, '#stay', 'Float')) {
876 # String => '\b[0-9]+\.[0-9]*([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\w_]*))?(?![a-z])'
877 # attribute => 'Float'
879 # insensitive => 'TRUE'
881 if ($self->testRegExpr($text, '\\b[0-9]+\\.[0-9]*([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\\w_]*))?(?![a-z])', 1, 0, 0, undef, 0, '#stay', 'Float')) {
884 # String => '\b[0-9]+[de][+-]?[0-9]+([_]([0-9]+|[a-z][\w_]*))?'
885 # attribute => 'Float'
887 # insensitive => 'TRUE'
889 if ($self->testRegExpr($text, '\\b[0-9]+[de][+-]?[0-9]+([_]([0-9]+|[a-z][\\w_]*))?', 1, 0, 0, undef, 0, '#stay', 'Float')) {
892 # String => '\b[0-9]+([_]([0-9]+|[a-zA-Z][\w_]*))?'
893 # attribute => 'Decimal'
896 if ($self->testRegExpr($text, '\\b[0-9]+([_]([0-9]+|[a-zA-Z][\\w_]*))?', 0, 0, 0, undef, 0, '#stay', 'Decimal')) {
899 # String => '\b[bozx](['][0-9a-f]+[']|["][0-9a-f]+["])'
900 # attribute => 'Decimal'
902 # insensitive => 'TRUE'
904 if ($self->testRegExpr($text, '\\b[bozx]([\'][0-9a-f]+[\']|["][0-9a-f]+["])', 1, 0, 0, undef, 0, '#stay', 'Decimal')) {
910 sub parsefind_op_and_log {
911 my ($self, $text) = @_;
912 # String => '\.(true|false)\.'
913 # attribute => 'Logical'
915 # insensitive => 'TRUE'
917 if ($self->testRegExpr($text, '\\.(true|false)\\.', 1, 0, 0, undef, 0, '#stay', 'Logical')) {
920 # String => '\.[A-Za-z]+\.'
921 # attribute => 'Operator'
924 if ($self->testRegExpr($text, '\\.[A-Za-z]+\\.', 0, 0, 0, undef, 0, '#stay', 'Operator')) {
927 # String => '(==|/=|<|<=|>|>=)'
928 # attribute => 'Operator'
931 if ($self->testRegExpr($text, '(==|/=|<|<=|>|>=)', 0, 0, 0, undef, 0, '#stay', 'Operator')) {
937 sub parsefind_paren {
938 my ($self, $text) = @_;
939 # attribute => 'Data Type'
941 # context => 'find_paren'
942 # type => 'DetectChar'
943 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'find_paren', 'Data Type')) {
946 # attribute => 'Data Type'
949 # type => 'DetectChar'
950 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Data Type')) {
956 sub parsefind_preprocessor {
957 my ($self, $text) = @_;
958 # String => '(#|cDEC\$|CDEC\$).*$'
959 # attribute => 'Preprocessor'
963 if ($self->testRegExpr($text, '(#|cDEC\\$|CDEC\\$).*$', 0, 0, 0, 0, 0, '#stay', 'Preprocessor')) {
969 sub parsefind_strings {
970 my ($self, $text) = @_;
971 # attribute => 'String'
973 # context => 'string_1'
974 # type => 'DetectChar'
975 if ($self->testDetectChar($text, '\'', 0, 0, 0, undef, 0, 'string_1', 'String')) {
978 # attribute => 'String'
980 # context => 'string_2'
981 # type => 'DetectChar'
982 if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'string_2', 'String')) {
988 sub parsefind_symbols {
989 my ($self, $text) = @_;
990 # attribute => 'Keyword'
994 # type => 'Detect2Chars'
995 if ($self->testDetect2Chars($text, '*', '*', 0, 0, 0, undef, 0, '#stay', 'Keyword')) {
998 # attribute => 'Keyword'
1001 # context => '#stay'
1002 # type => 'Detect2Chars'
1003 if ($self->testDetect2Chars($text, '(', '/', 0, 0, 0, undef, 0, '#stay', 'Keyword')) {
1006 # attribute => 'Keyword'
1009 # context => '#stay'
1010 # type => 'Detect2Chars'
1011 if ($self->testDetect2Chars($text, '/', ')', 0, 0, 0, undef, 0, '#stay', 'Keyword')) {
1014 # String => '&+-*/=?[]^{|}~'
1015 # attribute => 'Keyword'
1016 # context => '#stay'
1018 if ($self->testAnyChar($text, '&+-*/=?[]^{|}~', 0, 0, undef, 0, '#stay', 'Keyword')) {
1022 # attribute => 'Symbol'
1023 # context => '#stay'
1025 if ($self->testAnyChar($text, '(),', 0, 0, undef, 0, '#stay', 'Symbol')) {
1031 sub parseformat_stmnt {
1032 my ($self, $text) = @_;
1033 # attribute => 'IO Function'
1035 # context => 'format_stmnt'
1036 # type => 'DetectChar'
1037 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'format_stmnt', 'IO Function')) {
1040 # attribute => 'IO Function'
1043 # type => 'DetectChar'
1044 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'IO Function')) {
1047 # String => '[0-9]*/'
1048 # attribute => 'IO Function'
1049 # context => '#stay'
1050 # insensitive => 'TRUE'
1052 if ($self->testRegExpr($text, '[0-9]*/', 1, 0, 0, undef, 0, '#stay', 'IO Function')) {
1056 # attribute => 'IO Function'
1057 # context => '#stay'
1059 if ($self->testAnyChar($text, ':', 0, 0, undef, 0, '#stay', 'IO Function')) {
1062 # context => 'find_strings'
1063 # type => 'IncludeRules'
1064 if ($self->includeRules('find_strings', $text)) {
1067 # context => 'find_symbols'
1068 # type => 'IncludeRules'
1069 if ($self->includeRules('find_symbols', $text)) {
1075 sub parseinside_func_paren {
1076 my ($self, $text) = @_;
1077 # attribute => 'Normal Text'
1079 # context => 'inside_func_paren'
1080 # type => 'DetectChar'
1081 if ($self->testDetectChar($text, '(', 0, 0, 0, undef, 0, 'inside_func_paren', 'Normal Text')) {
1084 # attribute => 'Normal Text'
1087 # type => 'DetectChar'
1088 if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Normal Text')) {
1091 # context => 'find_strings'
1092 # type => 'IncludeRules'
1093 if ($self->includeRules('find_strings', $text)) {
1096 # context => 'find_intrinsics'
1097 # type => 'IncludeRules'
1098 if ($self->includeRules('find_intrinsics', $text)) {
1101 # context => 'find_numbers'
1102 # type => 'IncludeRules'
1103 if ($self->includeRules('find_numbers', $text)) {
1110 my ($self, $text) = @_;
1111 # String => '[^']*''
1112 # attribute => 'String'
1115 if ($self->testRegExpr($text, '[^\']*\'', 0, 0, 0, undef, 0, '#pop', 'String')) {
1119 # attribute => 'Keyword'
1120 # context => 'end_of_string'
1122 if ($self->testRegExpr($text, '&\\s*$', 0, 0, 0, undef, 0, 'end_of_string', 'Keyword')) {
1125 # String => '.*(?=&\s*$)'
1126 # attribute => 'String'
1127 # context => 'end_of_string'
1129 if ($self->testRegExpr($text, '.*(?=&\\s*$)', 0, 0, 0, undef, 0, 'end_of_string', 'String')) {
1136 my ($self, $text) = @_;
1137 # String => '[^"]*"'
1138 # attribute => 'String'
1141 if ($self->testRegExpr($text, '[^"]*"', 0, 0, 0, undef, 0, '#pop', 'String')) {
1145 # attribute => 'Keyword'
1146 # context => 'end_of_string'
1148 if ($self->testRegExpr($text, '&\\s*$', 0, 0, 0, undef, 0, 'end_of_string', 'Keyword')) {
1151 # String => '.*(?=&\s*$)'
1152 # attribute => 'String'
1153 # context => 'end_of_string'
1155 if ($self->testRegExpr($text, '.*(?=&\\s*$)', 0, 0, 0, undef, 0, 'end_of_string', 'String')) {
1168 Syntax::Highlight::Engine::Kate::Fortran - a Plugin for Fortran syntax highlighting
1172 require Syntax::Highlight::Engine::Kate::Fortran;
1173 my $sh = new Syntax::Highlight::Engine::Kate::Fortran([
1178 Syntax::Highlight::Engine::Kate::Fortran is a plugin module that provides syntax highlighting
1179 for Fortran to the Syntax::Haghlight::Engine::Kate highlighting engine.
1181 This code is generated from the syntax definition files used
1182 by the Kate project.
1183 It works quite fine, but can use refinement and optimization.
1185 It inherits Syntax::Higlight::Engine::Kate::Template. See also there.
1191 Hans Jeuken (haje <at> toneel <dot> demon <dot> nl)
1197 Unknown. If you find any, please contact the author