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

changeset 7547
21b0534faebc
parent 6942
2602857055c5
child 7701
25f42e208e08
equal deleted inserted replaced
7546:bf5f777260a6 7547:21b0534faebc
3 pygments.lexers.pascal 3 pygments.lexers.pascal
4 ~~~~~~~~~~~~~~~~~~~~~~ 4 ~~~~~~~~~~~~~~~~~~~~~~
5 5
6 Lexers for Pascal family languages. 6 Lexers for Pascal family languages.
7 7
8 :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. 8 :copyright: Copyright 2006-2019 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
66 66
67 FREE_PASCAL_KEYWORDS = ( 67 FREE_PASCAL_KEYWORDS = (
68 'dispose', 'exit', 'false', 'new', 'true' 68 'dispose', 'exit', 'false', 'new', 'true'
69 ) 69 )
70 70
71 BLOCK_KEYWORDS = set(( 71 BLOCK_KEYWORDS = {
72 'begin', 'class', 'const', 'constructor', 'destructor', 'end', 72 'begin', 'class', 'const', 'constructor', 'destructor', 'end',
73 'finalization', 'function', 'implementation', 'initialization', 73 'finalization', 'function', 'implementation', 'initialization',
74 'label', 'library', 'operator', 'procedure', 'program', 'property', 74 'label', 'library', 'operator', 'procedure', 'program', 'property',
75 'record', 'threadvar', 'type', 'unit', 'uses', 'var' 75 'record', 'threadvar', 'type', 'unit', 'uses', 'var'
76 )) 76 }
77 77
78 FUNCTION_MODIFIERS = set(( 78 FUNCTION_MODIFIERS = {
79 'alias', 'cdecl', 'export', 'inline', 'interrupt', 'nostackframe', 79 'alias', 'cdecl', 'export', 'inline', 'interrupt', 'nostackframe',
80 'pascal', 'register', 'safecall', 'softfloat', 'stdcall', 80 'pascal', 'register', 'safecall', 'softfloat', 'stdcall',
81 'varargs', 'name', 'dynamic', 'near', 'virtual', 'external', 81 'varargs', 'name', 'dynamic', 'near', 'virtual', 'external',
82 'override', 'assembler' 82 'override', 'assembler'
83 )) 83 }
84 84
85 # XXX: those aren't global. but currently we know no way for defining 85 # XXX: those aren't global. but currently we know no way for defining
86 # them just for the type context. 86 # them just for the type context.
87 DIRECTIVES = set(( 87 DIRECTIVES = {
88 'absolute', 'abstract', 'assembler', 'cppdecl', 'default', 'far', 88 'absolute', 'abstract', 'assembler', 'cppdecl', 'default', 'far',
89 'far16', 'forward', 'index', 'oldfpccall', 'private', 'protected', 89 'far16', 'forward', 'index', 'oldfpccall', 'private', 'protected',
90 'published', 'public' 90 'published', 'public'
91 )) 91 }
92 92
93 BUILTIN_TYPES = set(( 93 BUILTIN_TYPES = {
94 'ansichar', 'ansistring', 'bool', 'boolean', 'byte', 'bytebool', 94 'ansichar', 'ansistring', 'bool', 'boolean', 'byte', 'bytebool',
95 'cardinal', 'char', 'comp', 'currency', 'double', 'dword', 95 'cardinal', 'char', 'comp', 'currency', 'double', 'dword',
96 'extended', 'int64', 'integer', 'iunknown', 'longbool', 'longint', 96 'extended', 'int64', 'integer', 'iunknown', 'longbool', 'longint',
97 'longword', 'pansichar', 'pansistring', 'pbool', 'pboolean', 97 'longword', 'pansichar', 'pansistring', 'pbool', 'pboolean',
98 'pbyte', 'pbytearray', 'pcardinal', 'pchar', 'pcomp', 'pcurrency', 98 'pbyte', 'pbytearray', 'pcardinal', 'pchar', 'pcomp', 'pcurrency',
102 'pstring', 'pvariant', 'pwidechar', 'pwidestring', 'pword', 102 'pstring', 'pvariant', 'pwidechar', 'pwidestring', 'pword',
103 'pwordarray', 'pwordbool', 'real', 'real48', 'shortint', 103 'pwordarray', 'pwordbool', 'real', 'real48', 'shortint',
104 'shortstring', 'single', 'smallint', 'string', 'tclass', 'tdate', 104 'shortstring', 'single', 'smallint', 'string', 'tclass', 'tdate',
105 'tdatetime', 'textfile', 'thandle', 'tobject', 'ttime', 'variant', 105 'tdatetime', 'textfile', 'thandle', 'tobject', 'ttime', 'variant',
106 'widechar', 'widestring', 'word', 'wordbool' 106 'widechar', 'widestring', 'word', 'wordbool'
107 )) 107 }
108 108
109 BUILTIN_UNITS = { 109 BUILTIN_UNITS = {
110 'System': ( 110 'System': (
111 'abs', 'acquireexceptionobject', 'addr', 'ansitoutf8', 111 'abs', 'acquireexceptionobject', 'addr', 'ansitoutf8',
112 'append', 'arctan', 'assert', 'assigned', 'assignfile', 112 'append', 'arctan', 'assert', 'assigned', 'assignfile',
244 'sum', 'sumint', 'sumofsquares', 'sumsandsquares', 'syddepreciation', 244 'sum', 'sumint', 'sumofsquares', 'sumsandsquares', 'syddepreciation',
245 'tan', 'tanh', 'totalvariance', 'variance' 245 'tan', 'tanh', 'totalvariance', 'variance'
246 ) 246 )
247 } 247 }
248 248
249 ASM_REGISTERS = set(( 249 ASM_REGISTERS = {
250 'ah', 'al', 'ax', 'bh', 'bl', 'bp', 'bx', 'ch', 'cl', 'cr0', 250 'ah', 'al', 'ax', 'bh', 'bl', 'bp', 'bx', 'ch', 'cl', 'cr0',
251 'cr1', 'cr2', 'cr3', 'cr4', 'cs', 'cx', 'dh', 'di', 'dl', 'dr0', 251 'cr1', 'cr2', 'cr3', 'cr4', 'cs', 'cx', 'dh', 'di', 'dl', 'dr0',
252 'dr1', 'dr2', 'dr3', 'dr4', 'dr5', 'dr6', 'dr7', 'ds', 'dx', 252 'dr1', 'dr2', 'dr3', 'dr4', 'dr5', 'dr6', 'dr7', 'ds', 'dx',
253 'eax', 'ebp', 'ebx', 'ecx', 'edi', 'edx', 'es', 'esi', 'esp', 253 'eax', 'ebp', 'ebx', 'ecx', 'edi', 'edx', 'es', 'esi', 'esp',
254 'fs', 'gs', 'mm0', 'mm1', 'mm2', 'mm3', 'mm4', 'mm5', 'mm6', 254 'fs', 'gs', 'mm0', 'mm1', 'mm2', 'mm3', 'mm4', 'mm5', 'mm6',
255 'mm7', 'si', 'sp', 'ss', 'st0', 'st1', 'st2', 'st3', 'st4', 'st5', 255 'mm7', 'si', 'sp', 'ss', 'st0', 'st1', 'st2', 'st3', 'st4', 'st5',
256 'st6', 'st7', 'xmm0', 'xmm1', 'xmm2', 'xmm3', 'xmm4', 'xmm5', 256 'st6', 'st7', 'xmm0', 'xmm1', 'xmm2', 'xmm3', 'xmm4', 'xmm5',
257 'xmm6', 'xmm7' 257 'xmm6', 'xmm7'
258 )) 258 }
259 259
260 ASM_INSTRUCTIONS = set(( 260 ASM_INSTRUCTIONS = {
261 'aaa', 'aad', 'aam', 'aas', 'adc', 'add', 'and', 'arpl', 'bound', 261 'aaa', 'aad', 'aam', 'aas', 'adc', 'add', 'and', 'arpl', 'bound',
262 'bsf', 'bsr', 'bswap', 'bt', 'btc', 'btr', 'bts', 'call', 'cbw', 262 'bsf', 'bsr', 'bswap', 'bt', 'btc', 'btr', 'bts', 'call', 'cbw',
263 'cdq', 'clc', 'cld', 'cli', 'clts', 'cmc', 'cmova', 'cmovae', 263 'cdq', 'clc', 'cld', 'cli', 'clts', 'cmc', 'cmova', 'cmovae',
264 'cmovb', 'cmovbe', 'cmovc', 'cmovcxz', 'cmove', 'cmovg', 264 'cmovb', 'cmovbe', 'cmovc', 'cmovcxz', 'cmove', 'cmovg',
265 'cmovge', 'cmovl', 'cmovle', 'cmovna', 'cmovnae', 'cmovnb', 265 'cmovge', 'cmovl', 'cmovle', 'cmovna', 'cmovnae', 'cmovnb',
294 'smsw', 'stc', 'std', 'sti', 'stosb', 'stosd', 'stosw', 'str', 294 'smsw', 'stc', 'std', 'sti', 'stosb', 'stosd', 'stosw', 'str',
295 'sub', 'svdc', 'svldt', 'svts', 'syscall', 'sysenter', 'sysexit', 295 'sub', 'svdc', 'svldt', 'svts', 'syscall', 'sysenter', 'sysexit',
296 'sysret', 'test', 'ud1', 'ud2', 'umov', 'verr', 'verw', 'wait', 296 'sysret', 'test', 'ud1', 'ud2', 'umov', 'verr', 'verw', 'wait',
297 'wbinvd', 'wrmsr', 'wrshr', 'xadd', 'xbts', 'xchg', 'xlat', 297 'wbinvd', 'wrmsr', 'wrshr', 'xadd', 'xbts', 'xchg', 'xlat',
298 'xlatb', 'xor' 298 'xlatb', 'xor'
299 )) 299 }
300 300
301 def __init__(self, **options): 301 def __init__(self, **options):
302 Lexer.__init__(self, **options) 302 Lexer.__init__(self, **options)
303 self.keywords = set() 303 self.keywords = set()
304 if get_bool_opt(options, 'turbopascal', True): 304 if get_bool_opt(options, 'turbopascal', True):
575 (r"(<>|=>|:=|[()|:;,.'])", Punctuation), 575 (r"(<>|=>|:=|[()|:;,.'])", Punctuation),
576 (r'[*<>+=/&-]', Operator), 576 (r'[*<>+=/&-]', Operator),
577 (r'\n+', Text), 577 (r'\n+', Text),
578 ], 578 ],
579 'numbers': [ 579 'numbers': [
580 (r'[0-9_]+#[0-9a-f]+#', Number.Hex), 580 (r'[0-9_]+#[0-9a-f_\.]+#', Number.Hex),
581 (r'[0-9_]+\.[0-9_]*', Number.Float), 581 (r'[0-9_]+\.[0-9_]*', Number.Float),
582 (r'[0-9_]+', Number.Integer), 582 (r'[0-9_]+', Number.Integer),
583 ], 583 ],
584 'attribute': [ 584 'attribute': [
585 (r"(')(\w+)", bygroups(Punctuation, Name.Attribute)), 585 (r"(')(\w+)", bygroups(Punctuation, Name.Attribute)),

eric ide

mercurial