File Coverage

blib/lib/Syntax/Highlight/Engine/Kate/Music_Publisher.pm
Criterion Covered Total %
statement 34 361 9.4
branch 0 280 0.0
condition 1 3 33.3
subroutine 4 28 14.2
pod 0 25 0.0
total 39 697 5.6


line stmt bran cond sub pod time code
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 'mup.xml' file of the syntax highlight
6             # engine of the kate text editor (http://www.kate-editor.org
7              
8             #kate xml version 1.06
9             #kate version 2.4
10             #kate author Wilbert Berendsen (wilbert@kde.nl)
11             #generated: Sun Feb 3 22:02:05 2008, localtime
12              
13             package Syntax::Highlight::Engine::Kate::Music_Publisher;
14              
15             our $VERSION = '0.14';
16              
17 1     1   569 use strict;
  1         2  
  1         31  
18 1     1   6 use warnings;
  1         2  
  1         23  
19 1     1   3 use base('Syntax::Highlight::Engine::Kate::Template');
  1         2  
  1         3466  
20              
21             sub new {
22 1     1 0 553 my $proto = shift;
23 1   33     5 my $class = ref($proto) || $proto;
24 1         7 my $self = $class->SUPER::new(@_);
25 1         16 $self->attributes({
26             'Barline' => 'DecVal',
27             'Comment' => 'Comment',
28             'Context' => 'Keyword',
29             'Error' => 'Error',
30             'Location' => 'Operator',
31             'Location Probably' => 'Reserved',
32             'Lyrics' => 'BaseN',
33             'Macro' => 'Others',
34             'Newscore' => 'BString',
35             'Normal Text' => 'Normal',
36             'Note' => 'Normal',
37             'Note Attribute' => 'Normal',
38             'Parameter' => 'Char',
39             'Print Command' => 'BaseN',
40             'Special Char' => 'Keyword',
41             'String' => 'String',
42             'String Error' => 'Error',
43             'String Lyrics' => 'String',
44             'String Special' => 'IString',
45             'Tuplet' => 'RegionMarker',
46             'Unset Command' => 'Variable',
47             'Value' => 'Float',
48             });
49 1         5 $self->listAdd('mupcontexts',
50             'block',
51             'bottom',
52             'bottom2',
53             'footer',
54             'footer2',
55             'grids',
56             'header',
57             'header2',
58             'headshapes',
59             'music',
60             'music',
61             'score',
62             'staff',
63             'top',
64             'top2',
65             'voice',
66             );
67 1         3 $self->listAdd('mupfontnames',
68             'avantgarde',
69             'bookman',
70             'courier',
71             'helvetica',
72             'newcentury',
73             'palatino',
74             'times',
75             );
76 1         3 $self->listAdd('mupfontstyles',
77             'bold',
78             'boldital',
79             'ital',
80             'rom',
81             );
82 1         4 $self->listAdd('mupgraphics',
83             'bulge',
84             'curve',
85             'dashed',
86             'dotted',
87             'down',
88             'line',
89             'medium',
90             'midi',
91             'mussym',
92             'octave',
93             'pedal',
94             'phrase',
95             'roll',
96             'to',
97             'to',
98             'up',
99             'wavy',
100             'wide',
101             'with',
102             );
103 1         3 $self->listAdd('muplocations',
104             'above',
105             'all',
106             'below',
107             'between',
108             );
109 1         3 $self->listAdd('mupmacrodirectives',
110             'else',
111             'include',
112             'undef',
113             );
114 1         3 $self->listAdd('mupmacrodirectives_end',
115             '@',
116             'endif',
117             );
118 1         3 $self->listAdd('mupmacrodirectives_start',
119             'define',
120             'ifdef',
121             'ifndef',
122             );
123 1         5 $self->listAdd('mupmusicchars',
124             '128rest',
125             '16rest',
126             '1n',
127             '1rest',
128             '256rest',
129             '2n',
130             '2rest',
131             '32rest',
132             '4n',
133             '4rest',
134             '64rest',
135             '8rest',
136             'acc_gt',
137             'acc_hat',
138             'acc_uhat',
139             'begped',
140             'cclef',
141             'coda',
142             'com',
143             'copyright',
144             'cut',
145             'dblflat',
146             'dblsharp',
147             'dblwhole',
148             'diamond',
149             'dim',
150             'dn128n',
151             'dn16n',
152             'dn256n',
153             'dn2n',
154             'dn32n',
155             'dn4n',
156             'dn64n',
157             'dn8n',
158             'dnbow',
159             'dnflag',
160             'dot',
161             'dwhdiamond',
162             'dwhrest',
163             'endped',
164             'fclef',
165             'ferm',
166             'filldiamond',
167             'flat',
168             'gclef',
169             'halfdim',
170             'invmor',
171             'invturn',
172             'leg',
173             'measrpt',
174             'mor',
175             'nat',
176             'pedal',
177             'qwhrest',
178             'rr',
179             'sharp',
180             'sign',
181             'sm128rest',
182             'sm16rest',
183             'sm1n',
184             'sm1rest',
185             'sm256rest',
186             'sm2n',
187             'sm2rest',
188             'sm32rest',
189             'sm4n',
190             'sm4rest',
191             'sm64rest',
192             'sm8rest',
193             'smacc_gt',
194             'smacc_hat',
195             'smacc_uhat',
196             'smbegped',
197             'smcclef',
198             'smcoda',
199             'smcom',
200             'smcopyright',
201             'smcut',
202             'smdblflat',
203             'smdblsharp',
204             'smdblwhole',
205             'smdiamond',
206             'smdim',
207             'smdn128n',
208             'smdn16n',
209             'smdn256n',
210             'smdn2n',
211             'smdn32n',
212             'smdn4n',
213             'smdn64n',
214             'smdn8n',
215             'smdnbow',
216             'smdnflag',
217             'smdot',
218             'smdwhdiamond',
219             'smdwhrest',
220             'smendped',
221             'smfclef',
222             'smferm',
223             'smfilldiamond',
224             'smflat',
225             'smgclef',
226             'smhalfdim',
227             'sminvmor',
228             'sminvturn',
229             'smleg',
230             'smmeasrpt',
231             'smmor',
232             'smnat',
233             'smpedal',
234             'smqwhrest',
235             'smrr',
236             'smsharp',
237             'smsign',
238             'smtr',
239             'smtriangle',
240             'smturn',
241             'smuferm',
242             'smup128n',
243             'smup16n',
244             'smup256n',
245             'smup2n',
246             'smup32n',
247             'smup4n',
248             'smup64n',
249             'smup8n',
250             'smupbow',
251             'smupflag',
252             'smuwedge',
253             'smwedge',
254             'smxnote',
255             'tr',
256             'triangle',
257             'turn',
258             'uferm',
259             'up128n',
260             'up16n',
261             'up256n',
262             'up2n',
263             'up32n',
264             'up4n',
265             'up64n',
266             'up8n',
267             'upbow',
268             'upflag',
269             'uwedge',
270             'wedge',
271             'xnote',
272             );
273 1         4 $self->listAdd('mupparameters',
274             'aboveorder',
275             'addtranspose',
276             'barstyle',
277             'beamslope',
278             'beamstyle',
279             'beloworder',
280             'betweenorder',
281             'bottommargin',
282             'brace',
283             'bracket',
284             'cancelkey',
285             'chorddist',
286             'clef',
287             'crescdist',
288             'defoct',
289             'dist',
290             'division',
291             'dyndist',
292             'endingstyle',
293             'firstpage',
294             'font',
295             'fontfamily',
296             'gridfret',
297             'gridsatend',
298             'gridscale',
299             'gridswhereused',
300             'key',
301             'label',
302             'label2',
303             'leftmargin',
304             'lyricsalign',
305             'lyricsfont',
306             'lyricsfontfamily',
307             'lyricssize',
308             'measnum',
309             'measnumfont',
310             'measnumfontfamily',
311             'measnumsize',
312             'noteheads',
313             'numbermrpt',
314             'ontheline',
315             'packexp',
316             'packfact',
317             'pad',
318             'pageheight',
319             'pagewidth',
320             'panelsperpage',
321             'pedstyle',
322             'printmultnum',
323             'rehstyle',
324             'release',
325             'restcombine',
326             'restsymmult',
327             'rightmargin',
328             'scale',
329             'scorepad',
330             'scoresep',
331             'size',
332             'stafflines',
333             'staffpad',
334             'staffs',
335             'staffscale',
336             'staffsep',
337             'stemlen',
338             'swingunit',
339             'sylposition',
340             'tabwhitebox',
341             'time',
342             'timeunit',
343             'topmargin',
344             'transpose',
345             'units',
346             'visible',
347             'vscheme',
348             'warn',
349             );
350 1         4 $self->listAdd('mupprintcommands',
351             'center',
352             'left',
353             'paragraph',
354             'postscript',
355             'print',
356             'right',
357             'title',
358             );
359 1         2 $self->listAdd('mupprintspecifiers',
360             'analysis',
361             'chord',
362             'dyn',
363             'figbass',
364             );
365 1         5 $self->listAdd('mupspecialchars',
366             '\\\'\\\'',
367             '<<',
368             '>>',
369             'A\\\'',
370             'A:',
371             'AE',
372             'A^',
373             'A`',
374             'Aacute',
375             'Acircumflex',
376             'Adieresis',
377             'Agrave',
378             'Ao',
379             'Aring',
380             'Atilde',
381             'A~',
382             'C,',
383             'Ccedilla',
384             'E\\\'',
385             'E:',
386             'E^',
387             'E`',
388             'Eacute',
389             'Ecircumflex',
390             'Edieresis',
391             'Egrave',
392             'I\\\'',
393             'I^',
394             'I`',
395             'Iacute',
396             'Icircumflex',
397             'Idieresis',
398             'Igrave',
399             'L/',
400             'Lslash',
401             'Ntilde',
402             'N~',
403             'O\\\'',
404             'O/',
405             'O:',
406             'OE',
407             'O^',
408             'O`',
409             'Oacute',
410             'Ocircumflex',
411             'Odieresis',
412             'Ograve',
413             'Oslash',
414             'Otilde',
415             'O~',
416             'Scaron',
417             'Sv',
418             'U\\\'',
419             'U:',
420             'U^',
421             'U`',
422             'Uacute',
423             'Ucircumflex',
424             'Udieresis',
425             'Ugrave',
426             'Y:',
427             'Ydieresis',
428             'Zcaron',
429             'Zv',
430             '``',
431             'a\\\'',
432             'a:',
433             'a^',
434             'a`',
435             'aacute',
436             'acircumflex',
437             'acute',
438             'adieresis',
439             'ae',
440             'agrave',
441             'ao',
442             'aring',
443             'atilde',
444             'a~',
445             'breve',
446             'bullet',
447             'c,',
448             'caron',
449             'ccedilla',
450             'cedilla',
451             'cent',
452             'dagger',
453             'daggerdbl',
454             'dieresis',
455             'dotaccent',
456             'dotlessi',
457             'e\\\'',
458             'e:',
459             'e^',
460             'e`',
461             'eacute',
462             'ecircumflex',
463             'edieresis',
464             'egrave',
465             'emdash',
466             'exclamdown',
467             'germandbls',
468             'grave',
469             'guildsinglleft',
470             'guillemotleft',
471             'guillemotright',
472             'guilsinglright',
473             'hungarumlaut',
474             'i\\\'',
475             'i:',
476             'i:',
477             'i^',
478             'i`',
479             'iacute',
480             'icircumflex',
481             'idieresis',
482             'igrave',
483             'l/',
484             'lslash',
485             'macron',
486             'ntilde',
487             'n~',
488             'o\\\'',
489             'o/',
490             'o:',
491             'o^',
492             'o`',
493             'oacute',
494             'ocircumflex',
495             'odieresis',
496             'oe',
497             'ogonek',
498             'ograve',
499             'ordfeminine',
500             'ordmasculine',
501             'oslash',
502             'otilde',
503             'o~',
504             'questiondown',
505             'quotedblbase',
506             'quotedblleft',
507             'quotedblright',
508             'ring',
509             'scaron',
510             'space',
511             'ss',
512             'sterling',
513             'sv',
514             'u\\\'',
515             'u:',
516             'u^',
517             'u`',
518             'uacute',
519             'ucircumflex',
520             'udieresis',
521             'ugrave',
522             'y:',
523             'ydieresis',
524             'yen',
525             'zcaron',
526             'zv',
527             );
528 1         4 $self->listAdd('mupvalues',
529             '1drum',
530             '1n',
531             '2f',
532             '2o',
533             '3f',
534             '3o',
535             '5drum',
536             '5n',
537             '8treble',
538             'alt',
539             'alto',
540             'aug',
541             'augmented',
542             'baritone',
543             'barred',
544             'bass',
545             'boxed',
546             'chord',
547             'circled',
548             'cm',
549             'common',
550             'cut',
551             'dim',
552             'diminished',
553             'down',
554             'drum',
555             'dyn',
556             'ending',
557             'frenchviolin',
558             'grouped',
559             'inches',
560             'line',
561             'lyrics',
562             'maj',
563             'major',
564             'mezzosoprano',
565             'min',
566             'minor',
567             'mussym',
568             'n',
569             'octave',
570             'othertext',
571             'pedal',
572             'pedstar',
573             'per',
574             'perfect',
575             'plain',
576             'reh',
577             'soprano',
578             'tab',
579             'tenor',
580             'times',
581             'top',
582             'treble',
583             'treble8',
584             'up',
585             'whereused',
586             'y',
587             );
588 1         66 $self->contextdata({
589             'Bar Rehearsal' => {
590             callback => \&parseBarRehearsal,
591             attribute => 'Barline',
592             lineending => '#pop',
593             fallthrough => '#pop',
594             },
595             'Barline' => {
596             callback => \&parseBarline,
597             attribute => 'Barline',
598             lineending => '#pop',
599             fallthrough => '#pop',
600             },
601             'Bracket' => {
602             callback => \&parseBracket,
603             attribute => 'Note Attribute',
604             lineending => '#pop',
605             fallthrough => '#pop',
606             },
607             'Bracket Hs' => {
608             callback => \&parseBracketHs,
609             attribute => 'Note Attribute',
610             lineending => '#pop',
611             fallthrough => '#pop',
612             },
613             'Bracket With' => {
614             callback => \&parseBracketWith,
615             attribute => 'Note Attribute',
616             lineending => '#pop',
617             fallthrough => '#pop',
618             },
619             'Comment' => {
620             callback => \&parseComment,
621             attribute => 'Comment',
622             lineending => '#pop',
623             },
624             'Font Name' => {
625             callback => \&parseFontName,
626             attribute => 'String Special',
627             fallthrough => '#pop',
628             },
629             'Font Size' => {
630             callback => \&parseFontSize,
631             attribute => 'String Special',
632             fallthrough => '#pop',
633             },
634             'Font Style' => {
635             callback => \&parseFontStyle,
636             attribute => 'String Special',
637             fallthrough => '#pop',
638             },
639             'Location' => {
640             callback => \&parseLocation,
641             attribute => 'Normal Text',
642             lineending => '#pop',
643             fallthrough => '#pop',
644             },
645             'Location Probably' => {
646             callback => \&parseLocationProbably,
647             attribute => 'Location Problably',
648             lineending => '#pop',
649             fallthrough => '#pop',
650             },
651             'Macro' => {
652             callback => \&parseMacro,
653             attribute => 'Macro',
654             lineending => '#pop',
655             },
656             'Macro Location' => {
657             callback => \&parseMacroLocation,
658             attribute => 'Location',
659             lineending => '#pop',
660             fallthrough => '#pop',
661             },
662             'Normal' => {
663             callback => \&parseNormal,
664             attribute => 'Normal Text',
665             },
666             'Note' => {
667             callback => \&parseNote,
668             attribute => 'Note',
669             lineending => '#pop',
670             fallthrough => '#pop',
671             },
672             'Note Probably' => {
673             callback => \&parseNoteProbably,
674             attribute => 'Note',
675             lineending => '#pop',
676             fallthrough => '#pop',
677             },
678             'Parameter' => {
679             callback => \&parseParameter,
680             attribute => 'Parameter',
681             lineending => '#pop',
682             fallthrough => '#pop',
683             },
684             'Print Command' => {
685             callback => \&parsePrintCommand,
686             attribute => 'Print Command',
687             lineending => '#pop',
688             fallthrough => '#pop',
689             },
690             'Special Char' => {
691             callback => \&parseSpecialChar,
692             attribute => 'String Special',
693             fallthrough => '#pop',
694             },
695             'String' => {
696             callback => \&parseString,
697             attribute => 'String',
698             },
699             'Tuplet' => {
700             callback => \&parseTuplet,
701             attribute => 'Tuplet',
702             lineending => '#pop',
703             fallthrough => '#pop',
704             },
705             'Unset' => {
706             callback => \&parseUnset,
707             attribute => 'Parameter',
708             lineending => '#pop',
709             fallthrough => '#pop',
710             },
711             'Value' => {
712             callback => \&parseValue,
713             attribute => 'Value',
714             lineending => '#pop',
715             fallthrough => '#pop',
716             },
717             });
718 1         6 $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\');
719 1         5 $self->basecontext('Normal');
720 1         14 $self->keywordscase(0);
721 1         3 $self->initialize;
722 1         3 bless ($self, $class);
723 1         8 return $self;
724             }
725              
726             sub language {
727 0     0 0   return 'Music Publisher';
728             }
729              
730             sub parseBarRehearsal {
731 0     0 0   my ($self, $text) = @_;
732             # String => '\s+'
733             # attribute => 'Print Command'
734             # context => '#stay'
735             # type => 'RegExpr'
736 0 0         if ($self->testRegExpr($text, '\\s+', 0, 0, 0, undef, 0, '#stay', 'Print Command')) {
737 0           return 1
738             }
739             # String => 'mupfontnames'
740             # attribute => 'Print Command'
741             # context => 'Print Command'
742             # type => 'keyword'
743 0 0         if ($self->testKeyword($text, 'mupfontnames', 0, undef, 0, 'Print Command', 'Print Command')) {
744 0           return 1
745             }
746             # String => 'mupfontstyles'
747             # attribute => 'Print Command'
748             # context => 'Print Command'
749             # type => 'keyword'
750 0 0         if ($self->testKeyword($text, 'mupfontstyles', 0, undef, 0, 'Print Command', 'Print Command')) {
751 0           return 1
752             }
753             # String => '\b(let|mnum|num)\b'
754             # attribute => 'Barline'
755             # context => '#pop'
756             # type => 'RegExpr'
757 0 0         if ($self->testRegExpr($text, '\\b(let|mnum|num)\\b', 0, 0, 0, undef, 0, '#pop', 'Barline')) {
758 0           return 1
759             }
760             # context => 'Macro'
761             # type => 'IncludeRules'
762 0 0         if ($self->includeRules('Macro', $text)) {
763 0           return 1
764             }
765 0           return 0;
766             };
767              
768             sub parseBarline {
769 0     0 0   my ($self, $text) = @_;
770             # type => 'DetectSpaces'
771 0 0         if ($self->testDetectSpaces($text, 0, undef, 0, '#stay', undef)) {
772 0           return 1
773             }
774             # String => '\b(ending|endending|hidechanges)\b'
775             # attribute => 'Barline'
776             # context => '#stay'
777             # type => 'RegExpr'
778 0 0         if ($self->testRegExpr($text, '\\b(ending|endending|hidechanges)\\b', 0, 0, 0, undef, 0, '#stay', 'Barline')) {
779 0           return 1
780             }
781             # String => '\breh(earsal)?\b'
782             # attribute => 'Barline'
783             # context => 'Bar Rehearsal'
784             # type => 'RegExpr'
785 0 0         if ($self->testRegExpr($text, '\\breh(earsal)?\\b', 0, 0, 0, undef, 0, 'Bar Rehearsal', 'Barline')) {
786 0           return 1
787             }
788             # String => '\bmnum\s*=\s*[0-9]+'
789             # attribute => 'Barline'
790             # context => '#stay'
791             # type => 'RegExpr'
792 0 0         if ($self->testRegExpr($text, '\\bmnum\\s*=\\s*[0-9]+', 0, 0, 0, undef, 0, '#stay', 'Barline')) {
793 0           return 1
794             }
795             # String => '\bnum\s*=\s*[0-9]+'
796             # attribute => 'Barline'
797             # context => '#stay'
798             # type => 'RegExpr'
799 0 0         if ($self->testRegExpr($text, '\\bnum\\s*=\\s*[0-9]+', 0, 0, 0, undef, 0, '#stay', 'Barline')) {
800 0           return 1
801             }
802             # String => '\blet\s*=\s*("[A-Z]{1,2}")?'
803             # attribute => 'Barline'
804             # context => '#stay'
805             # type => 'RegExpr'
806 0 0         if ($self->testRegExpr($text, '\\blet\\s*=\\s*("[A-Z]{1,2}")?', 0, 0, 0, undef, 0, '#stay', 'Barline')) {
807 0           return 1
808             }
809             # String => '\bpad\s+[0-9]+'
810             # attribute => 'Barline'
811             # context => '#stay'
812             # type => 'RegExpr'
813 0 0         if ($self->testRegExpr($text, '\\bpad\\s+[0-9]+', 0, 0, 0, undef, 0, '#stay', 'Barline')) {
814 0           return 1
815             }
816             # String => '=([a-z]|_[a-z][a-z_0-9]*)\b'
817             # attribute => 'Location'
818             # context => '#stay'
819             # type => 'RegExpr'
820 0 0         if ($self->testRegExpr($text, '=([a-z]|_[a-z][a-z_0-9]*)\\b', 0, 0, 0, undef, 0, '#stay', 'Location')) {
821 0           return 1
822             }
823             # context => 'Macro'
824             # type => 'IncludeRules'
825 0 0         if ($self->includeRules('Macro', $text)) {
826 0           return 1
827             }
828 0           return 0;
829             };
830              
831             sub parseBracket {
832 0     0 0   my ($self, $text) = @_;
833             # attribute => 'Special Char'
834             # char => ']'
835             # context => '#pop'
836             # type => 'DetectChar'
837 0 0         if ($self->testDetectChar($text, ']', 0, 0, 0, undef, 0, '#pop', 'Special Char')) {
838 0           return 1
839             }
840             # String => '[\s;,]+'
841             # attribute => 'Normal Text'
842             # context => '#stay'
843             # type => 'RegExpr'
844 0 0         if ($self->testRegExpr($text, '[\\s;,]+', 0, 0, 0, undef, 0, '#stay', 'Normal Text')) {
845 0           return 1
846             }
847             # String => '\b(grace|xnote|cue|diam|up|down)\b'
848             # attribute => 'Note Attribute'
849             # context => '#stay'
850             # type => 'RegExpr'
851 0 0         if ($self->testRegExpr($text, '\\b(grace|xnote|cue|diam|up|down)\\b', 0, 0, 0, undef, 0, '#stay', 'Note Attribute')) {
852 0           return 1
853             }
854             # String => '\b(slash|len|pad|ho|dist)\s*[0-9.+-]*'
855             # attribute => 'Note Attribute'
856             # context => '#stay'
857             # type => 'RegExpr'
858 0 0         if ($self->testRegExpr($text, '\\b(slash|len|pad|ho|dist)\\s*[0-9.+-]*', 0, 0, 0, undef, 0, '#stay', 'Note Attribute')) {
859 0           return 1
860             }
861             # String => '\bwith\s*(?=[A-Z"^>.-])'
862             # attribute => 'Note Attribute'
863             # context => 'Bracket With'
864             # type => 'RegExpr'
865 0 0         if ($self->testRegExpr($text, '\\bwith\\s*(?=[A-Z"^>.-])', 0, 0, 0, undef, 0, 'Bracket With', 'Note Attribute')) {
866 0           return 1
867             }
868             # String => '\bhs\s*(?=[A-Z"])'
869             # attribute => 'Note Attribute'
870             # context => 'Bracket Hs'
871             # type => 'RegExpr'
872 0 0         if ($self->testRegExpr($text, '\\bhs\\s*(?=[A-Z"])', 0, 0, 0, undef, 0, 'Bracket Hs', 'Note Attribute')) {
873 0           return 1
874             }
875             # String => '=([a-z]|_[a-z][a-z_0-9]*)\b'
876             # attribute => 'Location'
877             # context => '#stay'
878             # type => 'RegExpr'
879 0 0         if ($self->testRegExpr($text, '=([a-z]|_[a-z][a-z_0-9]*)\\b', 0, 0, 0, undef, 0, '#stay', 'Location')) {
880 0           return 1
881             }
882             # String => '\bc\b'
883             # attribute => 'Normal Text'
884             # context => '#stay'
885             # type => 'RegExpr'
886 0 0         if ($self->testRegExpr($text, '\\bc\\b', 0, 0, 0, undef, 0, '#stay', 'Normal Text')) {
887 0           return 1
888             }
889             # context => 'Macro'
890             # type => 'IncludeRules'
891 0 0         if ($self->includeRules('Macro', $text)) {
892 0           return 1
893             }
894 0           return 0;
895             };
896              
897             sub parseBracketHs {
898 0     0 0   my ($self, $text) = @_;
899             # attribute => 'String'
900             # char => '"'
901             # context => 'String'
902             # type => 'DetectChar'
903 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'String', 'String')) {
904 0           return 1
905             }
906             # context => 'Macro'
907             # type => 'IncludeRules'
908 0 0         if ($self->includeRules('Macro', $text)) {
909 0           return 1
910             }
911 0           return 0;
912             };
913              
914             sub parseBracketWith {
915 0     0 0   my ($self, $text) = @_;
916             # attribute => 'String'
917             # char => '"'
918             # context => 'String'
919             # type => 'DetectChar'
920 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'String', 'String')) {
921 0           return 1
922             }
923             # String => '[>.^-]+'
924             # attribute => 'Note Attribute'
925             # context => '#stay'
926             # type => 'RegExpr'
927 0 0         if ($self->testRegExpr($text, '[>.^-]+', 0, 0, 0, undef, 0, '#stay', 'Note Attribute')) {
928 0           return 1
929             }
930             # String => '[\s,]+'
931             # attribute => 'Normal Text'
932             # context => '#stay'
933             # type => 'RegExpr'
934 0 0         if ($self->testRegExpr($text, '[\\s,]+', 0, 0, 0, undef, 0, '#stay', 'Normal Text')) {
935 0           return 1
936             }
937             # context => 'Macro'
938             # type => 'IncludeRules'
939 0 0         if ($self->includeRules('Macro', $text)) {
940 0           return 1
941             }
942 0           return 0;
943             };
944              
945             sub parseComment {
946 0     0 0   my ($self, $text) = @_;
947             # context => '##Alerts'
948             # type => 'IncludeRules'
949 0 0         if ($self->includePlugin('Alerts', $text)) {
950 0           return 1
951             }
952 0           return 0;
953             };
954              
955             sub parseFontName {
956 0     0 0   my ($self, $text) = @_;
957             # attribute => 'String Special'
958             # char => ')'
959             # context => '#pop'
960             # type => 'DetectChar'
961 0 0         if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'String Special')) {
962 0           return 1
963             }
964             # String => '[ABCHNPT][RBIX](?=\))'
965             # attribute => 'String Special'
966             # context => '#stay'
967             # type => 'RegExpr'
968 0 0         if ($self->testRegExpr($text, '[ABCHNPT][RBIX](?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
969 0           return 1
970             }
971             # String => 'mupfontnames'
972             # attribute => 'String Special'
973             # context => 'Font Style'
974             # type => 'keyword'
975 0 0         if ($self->testKeyword($text, 'mupfontnames', 0, undef, 0, 'Font Style', 'String Special')) {
976 0           return 1
977             }
978             # String => '(PV|previous)(?=\))'
979             # attribute => 'String Special'
980             # context => '#stay'
981             # type => 'RegExpr'
982 0 0         if ($self->testRegExpr($text, '(PV|previous)(?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
983 0           return 1
984             }
985             # String => '[^ )"]+'
986             # attribute => 'String Error'
987             # context => '#stay'
988             # type => 'RegExpr'
989 0 0         if ($self->testRegExpr($text, '[^ )"]+', 0, 0, 0, undef, 0, '#stay', 'String Error')) {
990 0           return 1
991             }
992 0           return 0;
993             };
994              
995             sub parseFontSize {
996 0     0 0   my ($self, $text) = @_;
997             # attribute => 'String Special'
998             # char => ')'
999             # context => '#pop'
1000             # type => 'DetectChar'
1001 0 0         if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'String Special')) {
1002 0           return 1
1003             }
1004             # String => '[-+]?[0-9]+(?=\))'
1005             # attribute => 'String Special'
1006             # context => '#stay'
1007             # type => 'RegExpr'
1008 0 0         if ($self->testRegExpr($text, '[-+]?[0-9]+(?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1009 0           return 1
1010             }
1011             # String => '(PV|previous)(?=\))'
1012             # attribute => 'String Special'
1013             # context => '#stay'
1014             # type => 'RegExpr'
1015 0 0         if ($self->testRegExpr($text, '(PV|previous)(?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1016 0           return 1
1017             }
1018             # String => '[^ )"]+'
1019             # attribute => 'String Error'
1020             # context => '#stay'
1021             # type => 'RegExpr'
1022 0 0         if ($self->testRegExpr($text, '[^ )"]+', 0, 0, 0, undef, 0, '#stay', 'String Error')) {
1023 0           return 1
1024             }
1025 0           return 0;
1026             };
1027              
1028             sub parseFontStyle {
1029 0     0 0   my ($self, $text) = @_;
1030             # String => '\s+'
1031             # attribute => 'String Special'
1032             # context => '#stay'
1033             # type => 'RegExpr'
1034 0 0         if ($self->testRegExpr($text, '\\s+', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1035 0           return 1
1036             }
1037             # String => 'mupfontstyles'
1038             # attribute => 'String Special'
1039             # context => '#stay'
1040             # type => 'keyword'
1041 0 0         if ($self->testKeyword($text, 'mupfontstyles', 0, undef, 0, '#stay', 'String Special')) {
1042 0           return 1
1043             }
1044             # String => '[^ )"]+'
1045             # attribute => 'String Error'
1046             # context => '#stay'
1047             # type => 'RegExpr'
1048 0 0         if ($self->testRegExpr($text, '[^ )"]+', 0, 0, 0, undef, 0, '#stay', 'String Error')) {
1049 0           return 1
1050             }
1051 0           return 0;
1052             };
1053              
1054             sub parseLocation {
1055 0     0 0   my ($self, $text) = @_;
1056             # String => '[\+\-\s]+'
1057             # attribute => 'Normal Text'
1058             # context => '#stay'
1059             # type => 'RegExpr'
1060 0 0         if ($self->testRegExpr($text, '[\\+\\-\\s]+', 0, 0, 0, undef, 0, '#stay', 'Normal Text')) {
1061 0           return 1
1062             }
1063             # attribute => 'Normal Text'
1064             # context => '#stay'
1065             # type => 'Float'
1066 0 0         if ($self->testFloat($text, 0, undef, 0, '#stay', 'Normal Text')) {
1067 0           return 1
1068             }
1069             # String => '\btime\b'
1070             # attribute => 'Location'
1071             # context => '#stay'
1072             # type => 'RegExpr'
1073 0 0         if ($self->testRegExpr($text, '\\btime\\b', 0, 0, 0, undef, 0, '#stay', 'Location')) {
1074 0           return 1
1075             }
1076             # context => 'Macro'
1077             # type => 'IncludeRules'
1078 0 0         if ($self->includeRules('Macro', $text)) {
1079 0           return 1
1080             }
1081 0           return 0;
1082             };
1083              
1084             sub parseLocationProbably {
1085 0     0 0   my ($self, $text) = @_;
1086             # String => '[h-qt-z]|_[a-z][a-z_0-9]*'
1087             # attribute => 'Location Probably'
1088             # context => '#pop'
1089             # type => 'RegExpr'
1090 0 0         if ($self->testRegExpr($text, '[h-qt-z]|_[a-z][a-z_0-9]*', 0, 0, 0, undef, 0, '#pop', 'Location Probably')) {
1091 0           return 1
1092             }
1093 0           return 0;
1094             };
1095              
1096             sub parseMacro {
1097 0     0 0   my ($self, $text) = @_;
1098             # String => 'mupmacrodirectives_start'
1099             # attribute => 'Macro'
1100             # beginRegion => 'macro'
1101             # context => '#stay'
1102             # type => 'keyword'
1103 0 0         if ($self->testKeyword($text, 'mupmacrodirectives_start', 0, undef, 0, '#stay', 'Macro')) {
1104 0           return 1
1105             }
1106             # String => 'mupmacrodirectives_end'
1107             # attribute => 'Macro'
1108             # context => '#stay'
1109             # endRegion => 'macro'
1110             # type => 'keyword'
1111 0 0         if ($self->testKeyword($text, 'mupmacrodirectives_end', 0, undef, 0, '#stay', 'Macro')) {
1112 0           return 1
1113             }
1114             # String => 'mupmacrodirectives'
1115             # attribute => 'Macro'
1116             # context => '#stay'
1117             # type => 'keyword'
1118 0 0         if ($self->testKeyword($text, 'mupmacrodirectives', 0, undef, 0, '#stay', 'Macro')) {
1119 0           return 1
1120             }
1121             # String => '[A-Z][A-Z0-9_]*(?=\.[xynews]\b)'
1122             # attribute => 'Macro'
1123             # context => 'Macro Location'
1124             # type => 'RegExpr'
1125 0 0         if ($self->testRegExpr($text, '[A-Z][A-Z0-9_]*(?=\\.[xynews]\\b)', 0, 0, 0, undef, 0, 'Macro Location', 'Macro')) {
1126 0           return 1
1127             }
1128             # String => '[A-Z][A-Z0-9_]*'
1129             # attribute => 'Macro'
1130             # context => '#stay'
1131             # type => 'RegExpr'
1132 0 0         if ($self->testRegExpr($text, '[A-Z][A-Z0-9_]*', 0, 0, 0, undef, 0, '#stay', 'Macro')) {
1133 0           return 1
1134             }
1135             # attribute => 'Macro'
1136             # char => '@'
1137             # context => '#stay'
1138             # endRegion => 'macro'
1139             # type => 'DetectChar'
1140 0 0         if ($self->testDetectChar($text, '@', 0, 0, 0, undef, 0, '#stay', 'Macro')) {
1141 0           return 1
1142             }
1143 0           return 0;
1144             };
1145              
1146             sub parseMacroLocation {
1147 0     0 0   my ($self, $text) = @_;
1148             # String => '..'
1149             # attribute => 'Location Probably'
1150             # context => '#pop'
1151             # type => 'RegExpr'
1152 0 0         if ($self->testRegExpr($text, '..', 0, 0, 0, undef, 0, '#pop', 'Location Probably')) {
1153 0           return 1
1154             }
1155 0           return 0;
1156             };
1157              
1158             sub parseNormal {
1159 0     0 0   my ($self, $text) = @_;
1160             # String => 'mupcontexts'
1161             # attribute => 'Context'
1162             # context => '#stay'
1163             # type => 'keyword'
1164 0 0         if ($self->testKeyword($text, 'mupcontexts', 0, undef, 0, '#stay', 'Context')) {
1165 0           return 1
1166             }
1167             # String => '\blyrics\b'
1168             # attribute => 'Lyrics'
1169             # context => '#stay'
1170             # type => 'RegExpr'
1171 0 0         if ($self->testRegExpr($text, '\\blyrics\\b', 0, 0, 0, undef, 0, '#stay', 'Lyrics')) {
1172 0           return 1
1173             }
1174             # String => '\b((dashed|dotted)\s+)?(bar|endbar|dblbar|invisbar|repeatstart|repeatboth|repeatend|restart)\b'
1175             # attribute => 'Barline'
1176             # context => 'Barline'
1177             # type => 'RegExpr'
1178 0 0         if ($self->testRegExpr($text, '\\b((dashed|dotted)\\s+)?(bar|endbar|dblbar|invisbar|repeatstart|repeatboth|repeatend|restart)\\b', 0, 0, 0, undef, 0, 'Barline', 'Barline')) {
1179 0           return 1
1180             }
1181             # String => '\bnew(score|page)\b'
1182             # attribute => 'Newscore'
1183             # context => '#stay'
1184             # type => 'RegExpr'
1185 0 0         if ($self->testRegExpr($text, '\\bnew(score|page)\\b', 0, 0, 0, undef, 0, '#stay', 'Newscore')) {
1186 0           return 1
1187             }
1188             # String => '\bmultirest\s+[0-9]+\b'
1189             # attribute => 'Newscore'
1190             # context => '#stay'
1191             # type => 'RegExpr'
1192 0 0         if ($self->testRegExpr($text, '\\bmultirest\\s+[0-9]+\\b', 0, 0, 0, undef, 0, '#stay', 'Newscore')) {
1193 0           return 1
1194             }
1195             # String => '\bunset\b'
1196             # attribute => 'Unset Command'
1197             # context => 'Unset'
1198             # type => 'RegExpr'
1199 0 0         if ($self->testRegExpr($text, '\\bunset\\b', 0, 0, 0, undef, 0, 'Unset', 'Unset Command')) {
1200 0           return 1
1201             }
1202             # attribute => 'Comment'
1203             # char => '/'
1204             # char1 => '/'
1205             # context => 'Comment'
1206             # type => 'Detect2Chars'
1207 0 0         if ($self->testDetect2Chars($text, '/', '/', 0, 0, 0, undef, 0, 'Comment', 'Comment')) {
1208 0           return 1
1209             }
1210             # attribute => 'String'
1211             # char => '"'
1212             # context => 'String'
1213             # type => 'DetectChar'
1214 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'String', 'String')) {
1215 0           return 1
1216             }
1217             # String => '\\$'
1218             # attribute => 'Special Char'
1219             # context => '#stay'
1220             # type => 'RegExpr'
1221 0 0         if ($self->testRegExpr($text, '\\\\$', 0, 0, 0, undef, 0, '#stay', 'Special Char')) {
1222 0           return 1
1223             }
1224             # String => 'mupprintcommands'
1225             # attribute => 'Print Command'
1226             # context => 'Print Command'
1227             # type => 'keyword'
1228 0 0         if ($self->testKeyword($text, 'mupprintcommands', 0, undef, 0, 'Print Command', 'Print Command')) {
1229 0           return 1
1230             }
1231             # String => 'mupfontnames'
1232             # attribute => 'Print Command'
1233             # context => 'Print Command'
1234             # type => 'keyword'
1235 0 0         if ($self->testKeyword($text, 'mupfontnames', 0, undef, 0, 'Print Command', 'Print Command')) {
1236 0           return 1
1237             }
1238             # String => 'mupfontstyles'
1239             # attribute => 'Print Command'
1240             # context => 'Print Command'
1241             # type => 'keyword'
1242 0 0         if ($self->testKeyword($text, 'mupfontstyles', 0, undef, 0, 'Print Command', 'Print Command')) {
1243 0           return 1
1244             }
1245             # String => '\b((ragged|justified)\s+)?paragraph\b'
1246             # attribute => 'Print Command'
1247             # context => 'Print Command'
1248             # type => 'RegExpr'
1249 0 0         if ($self->testRegExpr($text, '\\b((ragged|justified)\\s+)?paragraph\\b', 0, 0, 0, undef, 0, 'Print Command', 'Print Command')) {
1250 0           return 1
1251             }
1252             # String => 'mupprintspecifiers'
1253             # attribute => 'Print Command'
1254             # context => '#stay'
1255             # type => 'keyword'
1256 0 0         if ($self->testKeyword($text, 'mupprintspecifiers', 0, undef, 0, '#stay', 'Print Command')) {
1257 0           return 1
1258             }
1259             # String => 'mupgraphics'
1260             # attribute => 'Print Command'
1261             # context => '#stay'
1262             # type => 'keyword'
1263 0 0         if ($self->testKeyword($text, 'mupgraphics', 0, undef, 0, '#stay', 'Print Command')) {
1264 0           return 1
1265             }
1266             # String => 'muplocations'
1267             # attribute => 'Print Command'
1268             # context => '#stay'
1269             # type => 'keyword'
1270 0 0         if ($self->testKeyword($text, 'muplocations', 0, undef, 0, '#stay', 'Print Command')) {
1271 0           return 1
1272             }
1273             # String => '\bdist(?=\s+[^=])'
1274             # attribute => 'Print Command'
1275             # context => '#stay'
1276             # type => 'RegExpr'
1277 0 0         if ($self->testRegExpr($text, '\\bdist(?=\\s+[^=])', 0, 0, 0, undef, 0, '#stay', 'Print Command')) {
1278 0           return 1
1279             }
1280             # String => 'mupparameters'
1281             # attribute => 'Parameter'
1282             # context => 'Parameter'
1283             # type => 'keyword'
1284 0 0         if ($self->testKeyword($text, 'mupparameters', 0, undef, 0, 'Parameter', 'Parameter')) {
1285 0           return 1
1286             }
1287             # String => '\[(?=(grace|xnote|cue|diam|with|slash|up|down|len|pad|ho|dist|hs|c\b|=))'
1288             # attribute => 'Special Char'
1289             # context => 'Bracket'
1290             # type => 'RegExpr'
1291 0 0         if ($self->testRegExpr($text, '\\[(?=(grace|xnote|cue|diam|with|slash|up|down|len|pad|ho|dist|hs|c\\b|=))', 0, 0, 0, undef, 0, 'Bracket', 'Special Char')) {
1292 0           return 1
1293             }
1294             # attribute => 'Special Char'
1295             # char => '}'
1296             # context => 'Tuplet'
1297             # type => 'DetectChar'
1298 0 0         if ($self->testDetectChar($text, '}', 0, 0, 0, undef, 0, 'Tuplet', 'Special Char')) {
1299 0           return 1
1300             }
1301             # String => '[]{'
1302             # attribute => 'Special Char'
1303             # context => '#stay'
1304             # type => 'AnyChar'
1305 0 0         if ($self->testAnyChar($text, '[]{', 0, 0, undef, 0, '#stay', 'Special Char')) {
1306 0           return 1
1307             }
1308             # String => '(<<|>>)'
1309             # attribute => 'Special Char'
1310             # context => '#stay'
1311             # type => 'RegExpr'
1312 0 0         if ($self->testRegExpr($text, '(<<|>>)', 0, 0, 0, undef, 0, '#stay', 'Special Char')) {
1313 0           return 1
1314             }
1315             # String => '(\(\s*)?((1/4|1/2|1|2|4|8|16|32|64|128|256)\.*\s*)?((\(\s*)?([a-grs]|us)(?!bm)([0-9'?\sxn]|[+-]+|[&#]{1,2}|\(\s*[&#]{1,2}\s*\)|\(\s*[xn]\s*\)|\(\s*[0-9]\s*\))*\)?\s*)*\s*(?=[;~="
1316             # attribute => 'Note'
1317             # context => 'Note'
1318             # type => 'RegExpr'
1319 0 0         if ($self->testRegExpr($text, '(\\(\\s*)?((1/4|1/2|1|2|4|8|16|32|64|128|256)\\.*\\s*)?((\\(\\s*)?([a-grs]|us)(?!bm)([0-9\'?\\sxn]|[+-]+|[&#]{1,2}|\\(\\s*[&#]{1,2}\\s*\\)|\\(\\s*[xn]\\s*\\)|\\(\\s*[0-9]\\s*\\))*\\)?\\s*)*\\s*(?=[;~="
1320 0           return 1
1321             }
1322             # String => ';\s*(?=[~=<]|\b(bm|es?bm|dashed|dotted|tie|slur|alt|hs|ifn?def|else|elseif|endif)\b)'
1323             # attribute => 'Normal Text'
1324             # context => 'Note'
1325             # type => 'RegExpr'
1326 0 0         if ($self->testRegExpr($text, ';\\s*(?=[~=<]|\\b(bm|es?bm|dashed|dotted|tie|slur|alt|hs|ifn?def|else|elseif|endif)\\b)', 0, 0, 0, undef, 0, 'Note', 'Normal Text')) {
1327 0           return 1
1328             }
1329             # String => '(1/4|1/2|1|2|4|8|16|32|64|128|256)?mu?[rs]+\s*(?=;)'
1330             # attribute => 'Note'
1331             # context => '#stay'
1332             # type => 'RegExpr'
1333 0 0         if ($self->testRegExpr($text, '(1/4|1/2|1|2|4|8|16|32|64|128|256)?mu?[rs]+\\s*(?=;)', 0, 0, 0, undef, 0, '#stay', 'Note')) {
1334 0           return 1
1335             }
1336             # String => 'm\s*rpt\s*(?=;)'
1337             # attribute => 'Note'
1338             # context => '#stay'
1339             # type => 'RegExpr'
1340 0 0         if ($self->testRegExpr($text, 'm\\s*rpt\\s*(?=;)', 0, 0, 0, undef, 0, '#stay', 'Note')) {
1341 0           return 1
1342             }
1343             # String => '=([a-z]|_[a-z][a-z_0-9]*)\b'
1344             # attribute => 'Location'
1345             # context => '#stay'
1346             # type => 'RegExpr'
1347 0 0         if ($self->testRegExpr($text, '=([a-z]|_[a-z][a-z_0-9]*)\\b', 0, 0, 0, undef, 0, '#stay', 'Location')) {
1348 0           return 1
1349             }
1350             # String => '([a-z]|_[a-z][a-z_0-9]*)\.[xynews]\b'
1351             # attribute => 'Location'
1352             # context => 'Location'
1353             # type => 'RegExpr'
1354 0 0         if ($self->testRegExpr($text, '([a-z]|_[a-z][a-z_0-9]*)\\.[xynews]\\b', 0, 0, 0, undef, 0, 'Location', 'Location')) {
1355 0           return 1
1356             }
1357             # String => '([a-z]|_[a-z][a-z_0-9]*)\.(?=[A-Z])'
1358             # attribute => 'Location Probably'
1359             # context => '#stay'
1360             # type => 'RegExpr'
1361 0 0         if ($self->testRegExpr($text, '([a-z]|_[a-z][a-z_0-9]*)\\.(?=[A-Z])', 0, 0, 0, undef, 0, '#stay', 'Location Probably')) {
1362 0           return 1
1363             }
1364             # String => '[(,]\s*(?=([h-qt-z]|_[a-z][a-z_0-9]*)\s*[,)])'
1365             # attribute => 'Normal Text'
1366             # context => 'Location Probably'
1367             # type => 'RegExpr'
1368 0 0         if ($self->testRegExpr($text, '[(,]\\s*(?=([h-qt-z]|_[a-z][a-z_0-9]*)\\s*[,)])', 0, 0, 0, undef, 0, 'Location Probably', 'Normal Text')) {
1369 0           return 1
1370             }
1371             # String => '[(,]\s*(?=[a-grs]\s*[,)])'
1372             # attribute => 'Normal Text'
1373             # context => 'Note Probably'
1374             # type => 'RegExpr'
1375 0 0         if ($self->testRegExpr($text, '[(,]\\s*(?=[a-grs]\\s*[,)])', 0, 0, 0, undef, 0, 'Note Probably', 'Normal Text')) {
1376 0           return 1
1377             }
1378             # context => 'Macro'
1379             # type => 'IncludeRules'
1380 0 0         if ($self->includeRules('Macro', $text)) {
1381 0           return 1
1382             }
1383             # String => '[0-9.]*\s*til\s*(([0-9]+m(\s*\+\s*[0-9.]+)?)|[0-9.]+)\s*;'
1384             # attribute => 'Normal Text'
1385             # context => '#stay'
1386             # type => 'RegExpr'
1387 0 0         if ($self->testRegExpr($text, '[0-9.]*\\s*til\\s*(([0-9]+m(\\s*\\+\\s*[0-9.]+)?)|[0-9.]+)\\s*;', 0, 0, 0, undef, 0, '#stay', 'Normal Text')) {
1388 0           return 1
1389             }
1390             # String => '[0-9]*[a-z_]+'
1391             # attribute => 'Error'
1392             # context => '#stay'
1393             # type => 'RegExpr'
1394 0 0         if ($self->testRegExpr($text, '[0-9]*[a-z_]+', 0, 0, 0, undef, 0, '#stay', 'Error')) {
1395 0           return 1
1396             }
1397 0           return 0;
1398             };
1399              
1400             sub parseNote {
1401 0     0 0   my ($self, $text) = @_;
1402             # String => '(\bdashed\s+|\bdotted\s+)?(<(/n|\\n|n/|n\\|[a-g]([+-]*|[0-7]))?>|tie|slur|[~])'
1403             # attribute => 'Note Attribute'
1404             # context => '#stay'
1405             # type => 'RegExpr'
1406 0 0         if ($self->testRegExpr($text, '(\\bdashed\\s+|\\bdotted\\s+)?(<(/n|\\\\n|n/|n\\\\|[a-g]([+-]*|[0-7]))?>|tie|slur|[~])', 0, 0, 0, undef, 0, '#stay', 'Note Attribute')) {
1407 0           return 1
1408             }
1409             # String => '^(/|[a-g]([+-]*|[0-7]))'
1410             # attribute => 'Note Attribute'
1411             # context => '#stay'
1412             # type => 'RegExpr'
1413 0 0         if ($self->testRegExpr($text, '^(/|[a-g]([+-]*|[0-7]))', 0, 0, 0, undef, 0, '#stay', 'Note Attribute')) {
1414 0           return 1
1415             }
1416             # String => '\bbm\b(\s+with\s+staff\s+(below|above)\b)?'
1417             # attribute => 'Note Attribute'
1418             # context => '#stay'
1419             # type => 'RegExpr'
1420 0 0         if ($self->testRegExpr($text, '\\bbm\\b(\\s+with\\s+staff\\s+(below|above)\\b)?', 0, 0, 0, undef, 0, '#stay', 'Note Attribute')) {
1421 0           return 1
1422             }
1423             # String => '\bes?bm\b'
1424             # attribute => 'Note Attribute'
1425             # context => '#stay'
1426             # type => 'RegExpr'
1427 0 0         if ($self->testRegExpr($text, '\\bes?bm\\b', 0, 0, 0, undef, 0, '#stay', 'Note Attribute')) {
1428 0           return 1
1429             }
1430             # String => '\balt\s+[1-9]\b'
1431             # attribute => 'Note Attribute'
1432             # context => '#stay'
1433             # type => 'RegExpr'
1434 0 0         if ($self->testRegExpr($text, '\\balt\\s+[1-9]\\b', 0, 0, 0, undef, 0, '#stay', 'Note Attribute')) {
1435 0           return 1
1436             }
1437             # String => '\bhs\s+'
1438             # attribute => 'Note Attribute'
1439             # context => '#stay'
1440             # type => 'RegExpr'
1441 0 0         if ($self->testRegExpr($text, '\\bhs\\s+', 0, 0, 0, undef, 0, '#stay', 'Note Attribute')) {
1442 0           return 1
1443             }
1444             # attribute => 'String'
1445             # char => '"'
1446             # context => 'String'
1447             # type => 'DetectChar'
1448 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'String', 'String')) {
1449 0           return 1
1450             }
1451             # context => 'Macro'
1452             # type => 'IncludeRules'
1453 0 0         if ($self->includeRules('Macro', $text)) {
1454 0           return 1
1455             }
1456 0           return 0;
1457             };
1458              
1459             sub parseNoteProbably {
1460 0     0 0   my ($self, $text) = @_;
1461             # String => '[a-grs]*'
1462             # attribute => 'Note'
1463             # context => '#pop'
1464             # type => 'RegExpr'
1465 0 0         if ($self->testRegExpr($text, '[a-grs]*', 0, 0, 0, undef, 0, '#pop', 'Note')) {
1466 0           return 1
1467             }
1468 0           return 0;
1469             };
1470              
1471             sub parseParameter {
1472 0     0 0   my ($self, $text) = @_;
1473             # attribute => 'Normal Text'
1474             # char => '='
1475             # context => 'Value'
1476             # type => 'DetectChar'
1477 0 0         if ($self->testDetectChar($text, '=', 0, 0, 0, undef, 0, 'Value', 'Normal Text')) {
1478 0           return 1
1479             }
1480             # String => '\s+'
1481             # attribute => 'Parameter'
1482             # context => '#stay'
1483             # type => 'RegExpr'
1484 0 0         if ($self->testRegExpr($text, '\\s+', 0, 0, 0, undef, 0, '#stay', 'Parameter')) {
1485 0           return 1
1486             }
1487 0           return 0;
1488             };
1489              
1490             sub parsePrintCommand {
1491 0     0 0   my ($self, $text) = @_;
1492             # type => 'DetectSpaces'
1493 0 0         if ($self->testDetectSpaces($text, 0, undef, 0, '#stay', undef)) {
1494 0           return 1
1495             }
1496             # String => 'mupfontstyles'
1497             # attribute => 'Print Command'
1498             # context => '#stay'
1499             # type => 'keyword'
1500 0 0         if ($self->testKeyword($text, 'mupfontstyles', 0, undef, 0, '#stay', 'Print Command')) {
1501 0           return 1
1502             }
1503             # String => '\bnl\b'
1504             # attribute => 'Print Command'
1505             # context => '#stay'
1506             # type => 'RegExpr'
1507 0 0         if ($self->testRegExpr($text, '\\bnl\\b', 0, 0, 0, undef, 0, '#stay', 'Print Command')) {
1508 0           return 1
1509             }
1510             # String => '\([0-9]+\)'
1511             # attribute => 'Print Command'
1512             # context => '#pop'
1513             # type => 'RegExpr'
1514 0 0         if ($self->testRegExpr($text, '\\([0-9]+\\)', 0, 0, 0, undef, 0, '#pop', 'Print Command')) {
1515 0           return 1
1516             }
1517 0           return 0;
1518             };
1519              
1520             sub parseSpecialChar {
1521 0     0 0   my ($self, $text) = @_;
1522             # attribute => 'String Special'
1523             # char => ')'
1524             # context => '#pop'
1525             # type => 'DetectChar'
1526 0 0         if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'String Special')) {
1527 0           return 1
1528             }
1529             # String => 'mupspecialchars'
1530             # attribute => 'String Special'
1531             # context => '#stay'
1532             # type => 'keyword'
1533 0 0         if ($self->testKeyword($text, 'mupspecialchars', 0, undef, 0, '#stay', 'String Special')) {
1534 0           return 1
1535             }
1536             # String => 'mupmusicchars'
1537             # attribute => 'String Special'
1538             # context => '#stay'
1539             # type => 'keyword'
1540 0 0         if ($self->testKeyword($text, 'mupmusicchars', 0, undef, 0, '#stay', 'String Special')) {
1541 0           return 1
1542             }
1543             # String => '[AaEeOo]['`:^~](?=\))'
1544             # attribute => 'String Special'
1545             # context => '#stay'
1546             # type => 'RegExpr'
1547 0 0         if ($self->testRegExpr($text, '[AaEeOo][\'`:^~](?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1548 0           return 1
1549             }
1550             # String => '[IiUu]['`:^](?=\))'
1551             # attribute => 'String Special'
1552             # context => '#stay'
1553             # type => 'RegExpr'
1554 0 0         if ($self->testRegExpr($text, '[IiUu][\'`:^](?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1555 0           return 1
1556             }
1557             # String => '[Nn]~(?=\))'
1558             # attribute => 'String Special'
1559             # context => '#stay'
1560             # type => 'RegExpr'
1561 0 0         if ($self->testRegExpr($text, '[Nn]~(?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1562 0           return 1
1563             }
1564             # String => '[Yy]:(?=\))'
1565             # attribute => 'String Special'
1566             # context => '#stay'
1567             # type => 'RegExpr'
1568 0 0         if ($self->testRegExpr($text, '[Yy]:(?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1569 0           return 1
1570             }
1571             # String => '[LlOo]/(?=\))'
1572             # attribute => 'String Special'
1573             # context => '#stay'
1574             # type => 'RegExpr'
1575 0 0         if ($self->testRegExpr($text, '[LlOo]/(?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1576 0           return 1
1577             }
1578             # String => '[Cc],(?=\))'
1579             # attribute => 'String Special'
1580             # context => '#stay'
1581             # type => 'RegExpr'
1582 0 0         if ($self->testRegExpr($text, '[Cc],(?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1583 0           return 1
1584             }
1585             # String => '(>>|<<|``|'')(?=\))'
1586             # attribute => 'String Special'
1587             # context => '#stay'
1588             # type => 'RegExpr'
1589 0 0         if ($self->testRegExpr($text, '(>>|<<|``|\'\')(?=\\))', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1590 0           return 1
1591             }
1592             # String => '[^)"]+'
1593             # attribute => 'String Error'
1594             # context => '#stay'
1595             # type => 'RegExpr'
1596 0 0         if ($self->testRegExpr($text, '[^)"]+', 0, 0, 0, undef, 0, '#stay', 'String Error')) {
1597 0           return 1
1598             }
1599 0           return 0;
1600             };
1601              
1602             sub parseString {
1603 0     0 0   my ($self, $text) = @_;
1604             # attribute => 'String'
1605             # char => '"'
1606             # context => '#pop'
1607             # type => 'DetectChar'
1608 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, '#pop', 'String')) {
1609 0           return 1
1610             }
1611             # String => '[\\][][{}%#"nb|^:,\\/ ]'
1612             # attribute => 'String Special'
1613             # context => '#stay'
1614             # type => 'RegExpr'
1615 0 0         if ($self->testRegExpr($text, '[\\\\][][{}%#"nb|^:,\\\\/ ]', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1616 0           return 1
1617             }
1618             # String => '\('
1619             # attribute => 'String Special'
1620             # context => 'Special Char'
1621             # type => 'StringDetect'
1622 0 0         if ($self->testStringDetect($text, '\\(', 0, 0, 0, undef, 0, 'Special Char', 'String Special')) {
1623 0           return 1
1624             }
1625             # String => '\f('
1626             # attribute => 'String Special'
1627             # context => 'Font Name'
1628             # type => 'StringDetect'
1629 0 0         if ($self->testStringDetect($text, '\\f(', 0, 0, 0, undef, 0, 'Font Name', 'String Special')) {
1630 0           return 1
1631             }
1632             # String => '\s('
1633             # attribute => 'String Special'
1634             # context => 'Font Size'
1635             # type => 'StringDetect'
1636 0 0         if ($self->testStringDetect($text, '\\s(', 0, 0, 0, undef, 0, 'Font Size', 'String Special')) {
1637 0           return 1
1638             }
1639             # String => '\\v\(-?[0-9]{1,3}\)'
1640             # attribute => 'String Special'
1641             # context => '#stay'
1642             # type => 'RegExpr'
1643 0 0         if ($self->testRegExpr($text, '\\\\v\\(-?[0-9]{1,3}\\)', 0, 0, 0, undef, 0, '#stay', 'String Special')) {
1644 0           return 1
1645             }
1646             # String => '[~<>|^]'
1647             # attribute => 'String Lyrics'
1648             # context => '#stay'
1649             # type => 'RegExpr'
1650 0 0         if ($self->testRegExpr($text, '[~<>|^]', 0, 0, 0, undef, 0, '#stay', 'String Lyrics')) {
1651 0           return 1
1652             }
1653             # String => '[-+]?[0-9]+\|'
1654             # attribute => 'String Lyrics'
1655             # context => '#stay'
1656             # type => 'RegExpr'
1657 0 0         if ($self->testRegExpr($text, '[-+]?[0-9]+\\|', 0, 0, 0, undef, 0, '#stay', 'String Lyrics')) {
1658 0           return 1
1659             }
1660 0           return 0;
1661             };
1662              
1663             sub parseTuplet {
1664 0     0 0   my ($self, $text) = @_;
1665             # String => '\s*(above|below)?\s*[0-9]{1,2}(y|n|num)?(\s*,\s*[0-9]{1,2}\.?([+][0-9]{1,2}\.?)*)?'
1666             # attribute => 'Tuplet'
1667             # context => '#pop'
1668             # type => 'RegExpr'
1669 0 0         if ($self->testRegExpr($text, '\\s*(above|below)?\\s*[0-9]{1,2}(y|n|num)?(\\s*,\\s*[0-9]{1,2}\\.?([+][0-9]{1,2}\\.?)*)?', 0, 0, 0, undef, 0, '#pop', 'Tuplet')) {
1670 0           return 1
1671             }
1672 0           return 0;
1673             };
1674              
1675             sub parseUnset {
1676 0     0 0   my ($self, $text) = @_;
1677             # String => 'mupparameters'
1678             # attribute => 'Parameter'
1679             # context => '#stay'
1680             # type => 'keyword'
1681 0 0         if ($self->testKeyword($text, 'mupparameters', 0, undef, 0, '#stay', 'Parameter')) {
1682 0           return 1
1683             }
1684             # String => '[\s,]+'
1685             # attribute => 'Normal Text'
1686             # context => '#stay'
1687             # type => 'RegExpr'
1688 0 0         if ($self->testRegExpr($text, '[\\s,]+', 0, 0, 0, undef, 0, '#stay', 'Normal Text')) {
1689 0           return 1
1690             }
1691             # String => '\w+'
1692             # attribute => 'Error'
1693             # context => '#pop'
1694             # type => 'RegExpr'
1695 0 0         if ($self->testRegExpr($text, '\\w+', 0, 0, 0, undef, 0, '#pop', 'Error')) {
1696 0           return 1
1697             }
1698 0           return 0;
1699             };
1700              
1701             sub parseValue {
1702 0     0 0   my ($self, $text) = @_;
1703             # attribute => 'Normal Text'
1704             # char => ';'
1705             # context => '#pop'
1706             # type => 'DetectChar'
1707 0 0         if ($self->testDetectChar($text, ';', 0, 0, 0, undef, 0, '#pop', 'Normal Text')) {
1708 0           return 1
1709             }
1710             # String => '[\s,&()-]+'
1711             # attribute => 'Normal Text'
1712             # context => '#stay'
1713             # type => 'RegExpr'
1714 0 0         if ($self->testRegExpr($text, '[\\s,&()-]+', 0, 0, 0, undef, 0, '#stay', 'Normal Text')) {
1715 0           return 1
1716             }
1717             # String => 'mupvalues'
1718             # attribute => 'Value'
1719             # context => '#stay'
1720             # type => 'keyword'
1721 0 0         if ($self->testKeyword($text, 'mupvalues', 0, undef, 0, '#stay', 'Value')) {
1722 0           return 1
1723             }
1724             # String => 'mupfontnames'
1725             # attribute => 'Value'
1726             # context => '#pop'
1727             # type => 'keyword'
1728 0 0         if ($self->testKeyword($text, 'mupfontnames', 0, undef, 0, '#pop', 'Value')) {
1729 0           return 1
1730             }
1731             # String => 'mupfontstyles'
1732             # attribute => 'Value'
1733             # context => '#pop'
1734             # type => 'keyword'
1735 0 0         if ($self->testKeyword($text, 'mupfontstyles', 0, undef, 0, '#pop', 'Value')) {
1736 0           return 1
1737             }
1738             # String => '\b[1-9][0-9]*/(1|2|4|8|16|32|64|128)n?\b'
1739             # attribute => 'Value'
1740             # context => '#stay'
1741             # type => 'RegExpr'
1742 0 0         if ($self->testRegExpr($text, '\\b[1-9][0-9]*/(1|2|4|8|16|32|64|128)n?\\b', 0, 0, 0, undef, 0, '#stay', 'Value')) {
1743 0           return 1
1744             }
1745             # String => '\b[a-g][#&]?'?([0-9]\b)?'
1746             # attribute => 'Value'
1747             # context => '#stay'
1748             # type => 'RegExpr'
1749 0 0         if ($self->testRegExpr($text, '\\b[a-g][#&]?\'?([0-9]\\b)?', 0, 0, 0, undef, 0, '#stay', 'Value')) {
1750 0           return 1
1751             }
1752             # String => '[0-7][#&]'
1753             # attribute => 'Value'
1754             # context => '#stay'
1755             # type => 'RegExpr'
1756 0 0         if ($self->testRegExpr($text, '[0-7][#&]', 0, 0, 0, undef, 0, '#stay', 'Value')) {
1757 0           return 1
1758             }
1759             # String => 'r\b'
1760             # attribute => 'Value'
1761             # context => '#stay'
1762             # type => 'RegExpr'
1763 0 0         if ($self->testRegExpr($text, 'r\\b', 0, 0, 0, undef, 0, '#stay', 'Value')) {
1764 0           return 1
1765             }
1766             # attribute => 'Value'
1767             # context => '#stay'
1768             # type => 'Float'
1769 0 0         if ($self->testFloat($text, 0, undef, 0, '#stay', 'Value')) {
1770 0           return 1
1771             }
1772             # attribute => 'Value'
1773             # context => '#stay'
1774             # type => 'Int'
1775 0 0         if ($self->testInt($text, 0, undef, 0, '#stay', 'Value')) {
1776 0           return 1
1777             }
1778             # attribute => 'String'
1779             # char => '"'
1780             # context => 'String'
1781             # type => 'DetectChar'
1782 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'String', 'String')) {
1783 0           return 1
1784             }
1785             # context => 'Macro'
1786             # type => 'IncludeRules'
1787 0 0         if ($self->includeRules('Macro', $text)) {
1788 0           return 1
1789             }
1790             # String => '[a-z][a-z0-9]*'
1791             # attribute => 'Error'
1792             # context => '#stay'
1793             # type => 'RegExpr'
1794 0 0         if ($self->testRegExpr($text, '[a-z][a-z0-9]*', 0, 0, 0, undef, 0, '#stay', 'Error')) {
1795 0           return 1
1796             }
1797 0           return 0;
1798             };
1799              
1800              
1801             1;
1802              
1803             __END__