eric6/ThirdParty/Pygments/pygments/lexers/perl.py

changeset 7701
25f42e208e08
parent 7547
21b0534faebc
child 7983
54c5cfbb1e29
equal deleted inserted replaced
7700:a3cf077a8db3 7701:25f42e208e08
3 pygments.lexers.perl 3 pygments.lexers.perl
4 ~~~~~~~~~~~~~~~~~~~~ 4 ~~~~~~~~~~~~~~~~~~~~
5 5
6 Lexers for Perl, Raku and related languages. 6 Lexers for Perl, Raku and related languages.
7 7
8 :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS. 8 :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9 :license: BSD, see LICENSE for details. 9 :license: BSD, see LICENSE for details.
10 """ 10 """
11 11
12 import re 12 import re
13 13
25 For `Perl <https://www.perl.org>`_ source code. 25 For `Perl <https://www.perl.org>`_ source code.
26 """ 26 """
27 27
28 name = 'Perl' 28 name = 'Perl'
29 aliases = ['perl', 'pl'] 29 aliases = ['perl', 'pl']
30 filenames = ['*.pl', '*.pm', '*.t'] 30 filenames = ['*.pl', '*.pm', '*.t', '*.perl']
31 mimetypes = ['text/x-perl', 'application/x-perl'] 31 mimetypes = ['text/x-perl', 'application/x-perl']
32 32
33 flags = re.DOTALL | re.MULTILINE 33 flags = re.DOTALL | re.MULTILINE
34 # TODO: give this to a perl guy who knows how to parse perl... 34 # TODO: give this to a perl guy who knows how to parse perl...
35 tokens = { 35 tokens = {
413 ) 413 )
414 414
415 # Perl 6 has a *lot* of possible bracketing characters 415 # Perl 6 has a *lot* of possible bracketing characters
416 # this list was lifted from STD.pm6 (https://github.com/perl6/std) 416 # this list was lifted from STD.pm6 (https://github.com/perl6/std)
417 PERL6_BRACKETS = { 417 PERL6_BRACKETS = {
418 u'\u0028': u'\u0029', u'\u003c': u'\u003e', u'\u005b': u'\u005d', 418 '\u0028': '\u0029', '\u003c': '\u003e', '\u005b': '\u005d',
419 u'\u007b': u'\u007d', u'\u00ab': u'\u00bb', u'\u0f3a': u'\u0f3b', 419 '\u007b': '\u007d', '\u00ab': '\u00bb', '\u0f3a': '\u0f3b',
420 u'\u0f3c': u'\u0f3d', u'\u169b': u'\u169c', u'\u2018': u'\u2019', 420 '\u0f3c': '\u0f3d', '\u169b': '\u169c', '\u2018': '\u2019',
421 u'\u201a': u'\u2019', u'\u201b': u'\u2019', u'\u201c': u'\u201d', 421 '\u201a': '\u2019', '\u201b': '\u2019', '\u201c': '\u201d',
422 u'\u201e': u'\u201d', u'\u201f': u'\u201d', u'\u2039': u'\u203a', 422 '\u201e': '\u201d', '\u201f': '\u201d', '\u2039': '\u203a',
423 u'\u2045': u'\u2046', u'\u207d': u'\u207e', u'\u208d': u'\u208e', 423 '\u2045': '\u2046', '\u207d': '\u207e', '\u208d': '\u208e',
424 u'\u2208': u'\u220b', u'\u2209': u'\u220c', u'\u220a': u'\u220d', 424 '\u2208': '\u220b', '\u2209': '\u220c', '\u220a': '\u220d',
425 u'\u2215': u'\u29f5', u'\u223c': u'\u223d', u'\u2243': u'\u22cd', 425 '\u2215': '\u29f5', '\u223c': '\u223d', '\u2243': '\u22cd',
426 u'\u2252': u'\u2253', u'\u2254': u'\u2255', u'\u2264': u'\u2265', 426 '\u2252': '\u2253', '\u2254': '\u2255', '\u2264': '\u2265',
427 u'\u2266': u'\u2267', u'\u2268': u'\u2269', u'\u226a': u'\u226b', 427 '\u2266': '\u2267', '\u2268': '\u2269', '\u226a': '\u226b',
428 u'\u226e': u'\u226f', u'\u2270': u'\u2271', u'\u2272': u'\u2273', 428 '\u226e': '\u226f', '\u2270': '\u2271', '\u2272': '\u2273',
429 u'\u2274': u'\u2275', u'\u2276': u'\u2277', u'\u2278': u'\u2279', 429 '\u2274': '\u2275', '\u2276': '\u2277', '\u2278': '\u2279',
430 u'\u227a': u'\u227b', u'\u227c': u'\u227d', u'\u227e': u'\u227f', 430 '\u227a': '\u227b', '\u227c': '\u227d', '\u227e': '\u227f',
431 u'\u2280': u'\u2281', u'\u2282': u'\u2283', u'\u2284': u'\u2285', 431 '\u2280': '\u2281', '\u2282': '\u2283', '\u2284': '\u2285',
432 u'\u2286': u'\u2287', u'\u2288': u'\u2289', u'\u228a': u'\u228b', 432 '\u2286': '\u2287', '\u2288': '\u2289', '\u228a': '\u228b',
433 u'\u228f': u'\u2290', u'\u2291': u'\u2292', u'\u2298': u'\u29b8', 433 '\u228f': '\u2290', '\u2291': '\u2292', '\u2298': '\u29b8',
434 u'\u22a2': u'\u22a3', u'\u22a6': u'\u2ade', u'\u22a8': u'\u2ae4', 434 '\u22a2': '\u22a3', '\u22a6': '\u2ade', '\u22a8': '\u2ae4',
435 u'\u22a9': u'\u2ae3', u'\u22ab': u'\u2ae5', u'\u22b0': u'\u22b1', 435 '\u22a9': '\u2ae3', '\u22ab': '\u2ae5', '\u22b0': '\u22b1',
436 u'\u22b2': u'\u22b3', u'\u22b4': u'\u22b5', u'\u22b6': u'\u22b7', 436 '\u22b2': '\u22b3', '\u22b4': '\u22b5', '\u22b6': '\u22b7',
437 u'\u22c9': u'\u22ca', u'\u22cb': u'\u22cc', u'\u22d0': u'\u22d1', 437 '\u22c9': '\u22ca', '\u22cb': '\u22cc', '\u22d0': '\u22d1',
438 u'\u22d6': u'\u22d7', u'\u22d8': u'\u22d9', u'\u22da': u'\u22db', 438 '\u22d6': '\u22d7', '\u22d8': '\u22d9', '\u22da': '\u22db',
439 u'\u22dc': u'\u22dd', u'\u22de': u'\u22df', u'\u22e0': u'\u22e1', 439 '\u22dc': '\u22dd', '\u22de': '\u22df', '\u22e0': '\u22e1',
440 u'\u22e2': u'\u22e3', u'\u22e4': u'\u22e5', u'\u22e6': u'\u22e7', 440 '\u22e2': '\u22e3', '\u22e4': '\u22e5', '\u22e6': '\u22e7',
441 u'\u22e8': u'\u22e9', u'\u22ea': u'\u22eb', u'\u22ec': u'\u22ed', 441 '\u22e8': '\u22e9', '\u22ea': '\u22eb', '\u22ec': '\u22ed',
442 u'\u22f0': u'\u22f1', u'\u22f2': u'\u22fa', u'\u22f3': u'\u22fb', 442 '\u22f0': '\u22f1', '\u22f2': '\u22fa', '\u22f3': '\u22fb',
443 u'\u22f4': u'\u22fc', u'\u22f6': u'\u22fd', u'\u22f7': u'\u22fe', 443 '\u22f4': '\u22fc', '\u22f6': '\u22fd', '\u22f7': '\u22fe',
444 u'\u2308': u'\u2309', u'\u230a': u'\u230b', u'\u2329': u'\u232a', 444 '\u2308': '\u2309', '\u230a': '\u230b', '\u2329': '\u232a',
445 u'\u23b4': u'\u23b5', u'\u2768': u'\u2769', u'\u276a': u'\u276b', 445 '\u23b4': '\u23b5', '\u2768': '\u2769', '\u276a': '\u276b',
446 u'\u276c': u'\u276d', u'\u276e': u'\u276f', u'\u2770': u'\u2771', 446 '\u276c': '\u276d', '\u276e': '\u276f', '\u2770': '\u2771',
447 u'\u2772': u'\u2773', u'\u2774': u'\u2775', u'\u27c3': u'\u27c4', 447 '\u2772': '\u2773', '\u2774': '\u2775', '\u27c3': '\u27c4',
448 u'\u27c5': u'\u27c6', u'\u27d5': u'\u27d6', u'\u27dd': u'\u27de', 448 '\u27c5': '\u27c6', '\u27d5': '\u27d6', '\u27dd': '\u27de',
449 u'\u27e2': u'\u27e3', u'\u27e4': u'\u27e5', u'\u27e6': u'\u27e7', 449 '\u27e2': '\u27e3', '\u27e4': '\u27e5', '\u27e6': '\u27e7',
450 u'\u27e8': u'\u27e9', u'\u27ea': u'\u27eb', u'\u2983': u'\u2984', 450 '\u27e8': '\u27e9', '\u27ea': '\u27eb', '\u2983': '\u2984',
451 u'\u2985': u'\u2986', u'\u2987': u'\u2988', u'\u2989': u'\u298a', 451 '\u2985': '\u2986', '\u2987': '\u2988', '\u2989': '\u298a',
452 u'\u298b': u'\u298c', u'\u298d': u'\u298e', u'\u298f': u'\u2990', 452 '\u298b': '\u298c', '\u298d': '\u298e', '\u298f': '\u2990',
453 u'\u2991': u'\u2992', u'\u2993': u'\u2994', u'\u2995': u'\u2996', 453 '\u2991': '\u2992', '\u2993': '\u2994', '\u2995': '\u2996',
454 u'\u2997': u'\u2998', u'\u29c0': u'\u29c1', u'\u29c4': u'\u29c5', 454 '\u2997': '\u2998', '\u29c0': '\u29c1', '\u29c4': '\u29c5',
455 u'\u29cf': u'\u29d0', u'\u29d1': u'\u29d2', u'\u29d4': u'\u29d5', 455 '\u29cf': '\u29d0', '\u29d1': '\u29d2', '\u29d4': '\u29d5',
456 u'\u29d8': u'\u29d9', u'\u29da': u'\u29db', u'\u29f8': u'\u29f9', 456 '\u29d8': '\u29d9', '\u29da': '\u29db', '\u29f8': '\u29f9',
457 u'\u29fc': u'\u29fd', u'\u2a2b': u'\u2a2c', u'\u2a2d': u'\u2a2e', 457 '\u29fc': '\u29fd', '\u2a2b': '\u2a2c', '\u2a2d': '\u2a2e',
458 u'\u2a34': u'\u2a35', u'\u2a3c': u'\u2a3d', u'\u2a64': u'\u2a65', 458 '\u2a34': '\u2a35', '\u2a3c': '\u2a3d', '\u2a64': '\u2a65',
459 u'\u2a79': u'\u2a7a', u'\u2a7d': u'\u2a7e', u'\u2a7f': u'\u2a80', 459 '\u2a79': '\u2a7a', '\u2a7d': '\u2a7e', '\u2a7f': '\u2a80',
460 u'\u2a81': u'\u2a82', u'\u2a83': u'\u2a84', u'\u2a8b': u'\u2a8c', 460 '\u2a81': '\u2a82', '\u2a83': '\u2a84', '\u2a8b': '\u2a8c',
461 u'\u2a91': u'\u2a92', u'\u2a93': u'\u2a94', u'\u2a95': u'\u2a96', 461 '\u2a91': '\u2a92', '\u2a93': '\u2a94', '\u2a95': '\u2a96',
462 u'\u2a97': u'\u2a98', u'\u2a99': u'\u2a9a', u'\u2a9b': u'\u2a9c', 462 '\u2a97': '\u2a98', '\u2a99': '\u2a9a', '\u2a9b': '\u2a9c',
463 u'\u2aa1': u'\u2aa2', u'\u2aa6': u'\u2aa7', u'\u2aa8': u'\u2aa9', 463 '\u2aa1': '\u2aa2', '\u2aa6': '\u2aa7', '\u2aa8': '\u2aa9',
464 u'\u2aaa': u'\u2aab', u'\u2aac': u'\u2aad', u'\u2aaf': u'\u2ab0', 464 '\u2aaa': '\u2aab', '\u2aac': '\u2aad', '\u2aaf': '\u2ab0',
465 u'\u2ab3': u'\u2ab4', u'\u2abb': u'\u2abc', u'\u2abd': u'\u2abe', 465 '\u2ab3': '\u2ab4', '\u2abb': '\u2abc', '\u2abd': '\u2abe',
466 u'\u2abf': u'\u2ac0', u'\u2ac1': u'\u2ac2', u'\u2ac3': u'\u2ac4', 466 '\u2abf': '\u2ac0', '\u2ac1': '\u2ac2', '\u2ac3': '\u2ac4',
467 u'\u2ac5': u'\u2ac6', u'\u2acd': u'\u2ace', u'\u2acf': u'\u2ad0', 467 '\u2ac5': '\u2ac6', '\u2acd': '\u2ace', '\u2acf': '\u2ad0',
468 u'\u2ad1': u'\u2ad2', u'\u2ad3': u'\u2ad4', u'\u2ad5': u'\u2ad6', 468 '\u2ad1': '\u2ad2', '\u2ad3': '\u2ad4', '\u2ad5': '\u2ad6',
469 u'\u2aec': u'\u2aed', u'\u2af7': u'\u2af8', u'\u2af9': u'\u2afa', 469 '\u2aec': '\u2aed', '\u2af7': '\u2af8', '\u2af9': '\u2afa',
470 u'\u2e02': u'\u2e03', u'\u2e04': u'\u2e05', u'\u2e09': u'\u2e0a', 470 '\u2e02': '\u2e03', '\u2e04': '\u2e05', '\u2e09': '\u2e0a',
471 u'\u2e0c': u'\u2e0d', u'\u2e1c': u'\u2e1d', u'\u2e20': u'\u2e21', 471 '\u2e0c': '\u2e0d', '\u2e1c': '\u2e1d', '\u2e20': '\u2e21',
472 u'\u3008': u'\u3009', u'\u300a': u'\u300b', u'\u300c': u'\u300d', 472 '\u3008': '\u3009', '\u300a': '\u300b', '\u300c': '\u300d',
473 u'\u300e': u'\u300f', u'\u3010': u'\u3011', u'\u3014': u'\u3015', 473 '\u300e': '\u300f', '\u3010': '\u3011', '\u3014': '\u3015',
474 u'\u3016': u'\u3017', u'\u3018': u'\u3019', u'\u301a': u'\u301b', 474 '\u3016': '\u3017', '\u3018': '\u3019', '\u301a': '\u301b',
475 u'\u301d': u'\u301e', u'\ufd3e': u'\ufd3f', u'\ufe17': u'\ufe18', 475 '\u301d': '\u301e', '\ufd3e': '\ufd3f', '\ufe17': '\ufe18',
476 u'\ufe35': u'\ufe36', u'\ufe37': u'\ufe38', u'\ufe39': u'\ufe3a', 476 '\ufe35': '\ufe36', '\ufe37': '\ufe38', '\ufe39': '\ufe3a',
477 u'\ufe3b': u'\ufe3c', u'\ufe3d': u'\ufe3e', u'\ufe3f': u'\ufe40', 477 '\ufe3b': '\ufe3c', '\ufe3d': '\ufe3e', '\ufe3f': '\ufe40',
478 u'\ufe41': u'\ufe42', u'\ufe43': u'\ufe44', u'\ufe47': u'\ufe48', 478 '\ufe41': '\ufe42', '\ufe43': '\ufe44', '\ufe47': '\ufe48',
479 u'\ufe59': u'\ufe5a', u'\ufe5b': u'\ufe5c', u'\ufe5d': u'\ufe5e', 479 '\ufe59': '\ufe5a', '\ufe5b': '\ufe5c', '\ufe5d': '\ufe5e',
480 u'\uff08': u'\uff09', u'\uff1c': u'\uff1e', u'\uff3b': u'\uff3d', 480 '\uff08': '\uff09', '\uff1c': '\uff1e', '\uff3b': '\uff3d',
481 u'\uff5b': u'\uff5d', u'\uff5f': u'\uff60', u'\uff62': u'\uff63', 481 '\uff5b': '\uff5d', '\uff5f': '\uff60', '\uff62': '\uff63',
482 } 482 }
483 483
484 def _build_word_match(words, boundary_regex_fragment=None, prefix='', suffix=''): 484 def _build_word_match(words, boundary_regex_fragment=None, prefix='', suffix=''):
485 if boundary_regex_fragment is None: 485 if boundary_regex_fragment is None:
486 return r'\b(' + prefix + r'|'.join(re.escape(x) for x in words) + \ 486 return r'\b(' + prefix + r'|'.join(re.escape(x) for x in words) + \
600 (_build_word_match(PERL6_KEYWORDS, PERL6_IDENTIFIER_RANGE), Keyword), 600 (_build_word_match(PERL6_KEYWORDS, PERL6_IDENTIFIER_RANGE), Keyword),
601 (_build_word_match(PERL6_BUILTIN_CLASSES, PERL6_IDENTIFIER_RANGE, suffix='(?::[UD])?'), 601 (_build_word_match(PERL6_BUILTIN_CLASSES, PERL6_IDENTIFIER_RANGE, suffix='(?::[UD])?'),
602 Name.Builtin), 602 Name.Builtin),
603 (_build_word_match(PERL6_BUILTINS, PERL6_IDENTIFIER_RANGE), Name.Builtin), 603 (_build_word_match(PERL6_BUILTINS, PERL6_IDENTIFIER_RANGE), Name.Builtin),
604 # copied from PerlLexer 604 # copied from PerlLexer
605 (r'[$@%&][.^:?=!~]?' + PERL6_IDENTIFIER_RANGE + u'+(?:<<.*?>>|<.*?>|«.*?»)*', 605 (r'[$@%&][.^:?=!~]?' + PERL6_IDENTIFIER_RANGE + '+(?:<<.*?>>|<.*?>|«.*?»)*',
606 Name.Variable), 606 Name.Variable),
607 (r'\$[!/](?:<<.*?>>|<.*?>|«.*?»)*', Name.Variable.Global), 607 (r'\$[!/](?:<<.*?>>|<.*?>|«.*?»)*', Name.Variable.Global),
608 (r'::\?\w+', Name.Variable.Global), 608 (r'::\?\w+', Name.Variable.Global),
609 (r'[$@%&]\*' + PERL6_IDENTIFIER_RANGE + u'+(?:<<.*?>>|<.*?>|«.*?»)*', 609 (r'[$@%&]\*' + PERL6_IDENTIFIER_RANGE + '+(?:<<.*?>>|<.*?>|«.*?»)*',
610 Name.Variable.Global), 610 Name.Variable.Global),
611 (r'\$(?:<.*?>)+', Name.Variable), 611 (r'\$(?:<.*?>)+', Name.Variable),
612 (r'(?:q|qq|Q)[a-zA-Z]?\s*(?P<adverbs>:[\w\s:]+)?\s*(?P<delimiter>(?P<first_char>[^0-9a-zA-Z:\s])' 612 (r'(?:q|qq|Q)[a-zA-Z]?\s*(?P<adverbs>:[\w\s:]+)?\s*(?P<delimiter>(?P<first_char>[^0-9a-zA-Z:\s])'
613 r'(?P=first_char)*)', brackets_callback(String)), 613 r'(?P=first_char)*)', brackets_callback(String)),
614 # copied from PerlLexer 614 # copied from PerlLexer
712 break 712 break
713 713
714 return rating 714 return rating
715 715
716 def __init__(self, **options): 716 def __init__(self, **options):
717 super(Perl6Lexer, self).__init__(**options) 717 super().__init__(**options)
718 self.encoding = options.get('encoding', 'utf-8') 718 self.encoding = options.get('encoding', 'utf-8')

eric ide

mercurial