diff options
author | Georg Brandl <georg@python.org> | 2016-01-16 12:00:36 +0100 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2016-01-16 12:00:36 +0100 |
commit | f1b694dc778141793d8a536a47a8fa65edf1e129 (patch) | |
tree | da4158c4f710ee971f4a28e260344c907c36fea3 /pygments | |
parent | 79444be5dd7aca21b6b8e1443302a2838365e2f3 (diff) | |
parent | 37527ca652581444ccaf6889e95354cdd76ef5af (diff) | |
download | pygments-f1b694dc778141793d8a536a47a8fa65edf1e129.tar.gz |
Merged in glaskar/pygments-main (pull request #489)
ASM Lexers, add more punctuation
Diffstat (limited to 'pygments')
69 files changed, 9549 insertions, 3884 deletions
diff --git a/pygments/__init__.py b/pygments/__init__.py index 1ce34b2a..b37bdccb 100644 --- a/pygments/__init__.py +++ b/pygments/__init__.py @@ -46,13 +46,13 @@ def lex(code, lexer): except TypeError as err: if isinstance(err.args[0], str) and \ ('unbound method get_tokens' in err.args[0] or - 'missing 1 required positional argument' in err.args[0]): + 'missing 1 required positional argument' in err.args[0]): raise TypeError('lex() argument must be a lexer instance, ' 'not a class') raise -def format(tokens, formatter, outfile=None): +def format(tokens, formatter, outfile=None): # pylint: disable=redefined-builtin """ Format a tokenlist ``tokens`` with the formatter ``formatter``. @@ -70,7 +70,7 @@ def format(tokens, formatter, outfile=None): except TypeError as err: if isinstance(err.args[0], str) and \ ('unbound method format' in err.args[0] or - 'missing 1 required positional argument' in err.args[0]): + 'missing 1 required positional argument' in err.args[0]): raise TypeError('format() argument must be a formatter instance, ' 'not a class') raise diff --git a/pygments/cmdline.py b/pygments/cmdline.py index f5ea5653..00745edc 100644 --- a/pygments/cmdline.py +++ b/pygments/cmdline.py @@ -19,11 +19,12 @@ from pygments import __version__, highlight from pygments.util import ClassNotFound, OptionError, docstring_headline, \ guess_decode, guess_decode_from_terminal, terminal_encoding from pygments.lexers import get_all_lexers, get_lexer_by_name, guess_lexer, \ - get_lexer_for_filename, find_lexer_class_for_filename, TextLexer + get_lexer_for_filename, find_lexer_class_for_filename +from pygments.lexers.special import TextLexer from pygments.formatters.latex import LatexEmbeddedLexer, LatexFormatter from pygments.formatters import get_all_formatters, get_formatter_by_name, \ - get_formatter_for_filename, find_formatter_class, \ - TerminalFormatter # pylint:disable-msg=E0611 + get_formatter_for_filename, find_formatter_class +from pygments.formatters.terminal import TerminalFormatter from pygments.filters import get_all_filters, find_filter_class from pygments.styles import get_all_styles, get_style_by_name @@ -247,7 +248,7 @@ def main_inner(popts, args, usage): print(usage, file=sys.stderr) return 2 - what, name = args + what, name = args # pylint: disable=unbalanced-tuple-unpacking if what not in ('lexer', 'formatter', 'filter'): print(usage, file=sys.stderr) return 2 @@ -269,7 +270,7 @@ def main_inner(popts, args, usage): opts.pop('-P', None) # encodings - inencoding = parsed_opts.get('inencoding', parsed_opts.get('encoding')) + inencoding = parsed_opts.get('inencoding', parsed_opts.get('encoding')) outencoding = parsed_opts.get('outencoding', parsed_opts.get('encoding')) # handle ``pygmentize -N`` diff --git a/pygments/filter.py b/pygments/filter.py index 529d4f54..c8176ed9 100644 --- a/pygments/filter.py +++ b/pygments/filter.py @@ -69,6 +69,6 @@ class FunctionFilter(Filter): Filter.__init__(self, **options) def filter(self, lexer, stream): - # pylint: disable-msg=E1102 + # pylint: disable=not-callable for ttype, value in self.function(lexer, stream, self.options): yield ttype, value diff --git a/pygments/formatters/_mapping.py b/pygments/formatters/_mapping.py index bfc82253..569ae849 100755 --- a/pygments/formatters/_mapping.py +++ b/pygments/formatters/_mapping.py @@ -20,6 +20,7 @@ FORMATTERS = { 'BmpImageFormatter': ('pygments.formatters.img', 'img_bmp', ('bmp', 'bitmap'), ('*.bmp',), 'Create a bitmap image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), 'GifImageFormatter': ('pygments.formatters.img', 'img_gif', ('gif',), ('*.gif',), 'Create a GIF image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), 'HtmlFormatter': ('pygments.formatters.html', 'HTML', ('html',), ('*.html', '*.htm'), "Format tokens as HTML 4 ``<span>`` tags within a ``<pre>`` tag, wrapped in a ``<div>`` tag. The ``<div>``'s CSS class can be set by the `cssclass` option."), + 'IRCFormatter': ('pygments.formatters.irc', 'IRC', ('irc', 'IRC'), (), 'Format tokens with IRC color sequences'), 'ImageFormatter': ('pygments.formatters.img', 'img', ('img', 'IMG', 'png'), ('*.png',), 'Create a PNG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), 'JpgImageFormatter': ('pygments.formatters.img', 'img_jpg', ('jpg', 'jpeg'), ('*.jpg',), 'Create a JPEG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), 'LatexFormatter': ('pygments.formatters.latex', 'LaTeX', ('latex', 'tex'), ('*.tex',), 'Format tokens as LaTeX code. This needs the `fancyvrb` and `color` standard packages.'), @@ -27,8 +28,9 @@ FORMATTERS = { 'RawTokenFormatter': ('pygments.formatters.other', 'Raw tokens', ('raw', 'tokens'), ('*.raw',), 'Format tokens as a raw representation for storing token streams.'), 'RtfFormatter': ('pygments.formatters.rtf', 'RTF', ('rtf',), ('*.rtf',), 'Format tokens as RTF markup. This formatter automatically outputs full RTF documents with color information and other useful stuff. Perfect for Copy and Paste into Microsoft(R) Word(R) documents.'), 'SvgFormatter': ('pygments.formatters.svg', 'SVG', ('svg',), ('*.svg',), 'Format tokens as an SVG graphics file. This formatter is still experimental. Each line of code is a ``<text>`` element with explicit ``x`` and ``y`` coordinates containing ``<tspan>`` elements with the individual token styles.'), - 'Terminal256Formatter': ('pygments.formatters.terminal256', 'Terminal256', ('terminal256', 'console256', '256'), (), 'Format tokens with ANSI color sequences, for output in a 256-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'), + 'Terminal256Formatter': ('pygments.formatters.terminal256', 'Terminal256', ('terminal256', 'console256', '256'), (), 'Format tokens with ANSI color sequences, for output in a 256-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'), 'TerminalFormatter': ('pygments.formatters.terminal', 'Terminal', ('terminal', 'console'), (), 'Format tokens with ANSI color sequences, for output in a text console. Color sequences are terminated at newlines, so that paging the output works correctly.'), + 'TerminalTrueColorFormatter': ('pygments.formatters.terminal256', 'TerminalTrueColor', ('terminal16m', 'console16m', '16m'), (), 'Format tokens with ANSI color sequences, for output in a true-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'), 'TestcaseFormatter': ('pygments.formatters.other', 'Testcase', ('testcase',), (), 'Format tokens as appropriate for a new testcase.') } @@ -64,11 +66,18 @@ if __name__ == '__main__': # pragma: no cover # extract useful sourcecode from this file with open(__file__) as fp: content = fp.read() + # replace crnl to nl for Windows. + # + # Note that, originally, contributers should keep nl of master + # repository, for example by using some kind of automatic + # management EOL, like `EolExtension + # <https://www.mercurial-scm.org/wiki/EolExtension>`. + content = content.replace("\r\n", "\n") header = content[:content.find('FORMATTERS = {')] footer = content[content.find("if __name__ == '__main__':"):] # write new file - with open(__file__, 'w') as fp: + with open(__file__, 'wb') as fp: fp.write(header) fp.write('FORMATTERS = {\n %s\n}\n\n' % ',\n '.join(found_formatters)) fp.write(footer) diff --git a/pygments/formatters/html.py b/pygments/formatters/html.py index 67ad685f..a0087515 100644 --- a/pygments/formatters/html.py +++ b/pygments/formatters/html.py @@ -140,7 +140,7 @@ class HtmlFormatter(Formatter): When `tagsfile` is set to the path of a ctags index file, it is used to generate hyperlinks from names to their definition. You must enable - `anchorlines` and run ctags with the `-n` option for this to work. The + `lineanchors` and run ctags with the `-n` option for this to work. The `python-ctags` module from PyPI must be installed to use this feature; otherwise a `RuntimeError` will be raised. @@ -321,6 +321,12 @@ class HtmlFormatter(Formatter): .. versionadded:: 1.6 + `filename` + A string used to generate a filename when rendering <pre> blocks, + for example if displaying source code. + + .. versionadded:: 2.1 + **Subclassing the HTML formatter** @@ -388,6 +394,7 @@ class HtmlFormatter(Formatter): self.noclobber_cssfile = get_bool_opt(options, 'noclobber_cssfile', False) self.tagsfile = self._decodeifneeded(options.get('tagsfile', '')) self.tagurlformat = self._decodeifneeded(options.get('tagurlformat', '')) + self.filename = self._decodeifneeded(options.get('filename', '')) if self.tagsfile: if not ctags: @@ -521,7 +528,7 @@ class HtmlFormatter(Formatter): cssfilename = os.path.join(os.path.dirname(filename), self.cssfile) except AttributeError: - print('Note: Cannot determine output file name, ' \ + print('Note: Cannot determine output file name, ' 'using current directory as base for the CSS file name', file=sys.stderr) cssfilename = self.cssfile @@ -530,21 +537,21 @@ class HtmlFormatter(Formatter): if not os.path.exists(cssfilename) or not self.noclobber_cssfile: cf = open(cssfilename, "w") cf.write(CSSFILE_TEMPLATE % - {'styledefs': self.get_style_defs('body')}) + {'styledefs': self.get_style_defs('body')}) cf.close() except IOError as err: err.strerror = 'Error writing CSS file: ' + err.strerror raise yield 0, (DOC_HEADER_EXTERNALCSS % - dict(title = self.title, - cssfile = self.cssfile, - encoding = self.encoding)) + dict(title=self.title, + cssfile=self.cssfile, + encoding=self.encoding)) else: yield 0, (DOC_HEADER % - dict(title = self.title, - styledefs = self.get_style_defs('body'), - encoding = self.encoding)) + dict(title=self.title, + styledefs=self.get_style_defs('body'), + encoding=self.encoding)) for t, line in inner: yield t, line @@ -623,35 +630,35 @@ class HtmlFormatter(Formatter): if self.noclasses: if sp: for t, line in lines: - if num%sp == 0: + if num % sp == 0: style = 'background-color: #ffffc0; padding: 0 5px 0 5px' else: style = 'background-color: #f0f0f0; padding: 0 5px 0 5px' yield 1, '<span style="%s">%*s </span>' % ( - style, mw, (num%st and ' ' or num)) + line + style, mw, (num % st and ' ' or num)) + line num += 1 else: for t, line in lines: yield 1, ('<span style="background-color: #f0f0f0; ' 'padding: 0 5px 0 5px">%*s </span>' % ( - mw, (num%st and ' ' or num)) + line) + mw, (num % st and ' ' or num)) + line) num += 1 elif sp: for t, line in lines: yield 1, '<span class="lineno%s">%*s </span>' % ( - num%sp == 0 and ' special' or '', mw, - (num%st and ' ' or num)) + line + num % sp == 0 and ' special' or '', mw, + (num % st and ' ' or num)) + line num += 1 else: for t, line in lines: yield 1, '<span class="lineno">%*s </span>' % ( - mw, (num%st and ' ' or num)) + line + mw, (num % st and ' ' or num)) + line num += 1 def _wrap_lineanchors(self, inner): s = self.lineanchors - i = self.linenostart - 1 # subtract 1 since we have to increment i - # *before* yielding + # subtract 1 since we have to increment i *before* yielding + i = self.linenostart - 1 for t, line in inner: if t: i += 1 @@ -672,14 +679,14 @@ class HtmlFormatter(Formatter): def _wrap_div(self, inner): style = [] if (self.noclasses and not self.nobackground and - self.style.background_color is not None): + self.style.background_color is not None): style.append('background: %s' % (self.style.background_color,)) if self.cssstyles: style.append(self.cssstyles) style = '; '.join(style) - yield 0, ('<div' + (self.cssclass and ' class="%s"' % self.cssclass) - + (style and (' style="%s"' % style)) + '>') + yield 0, ('<div' + (self.cssclass and ' class="%s"' % self.cssclass) + + (style and (' style="%s"' % style)) + '>') for tup in inner: yield tup yield 0, '</div>\n' @@ -692,6 +699,9 @@ class HtmlFormatter(Formatter): style.append('line-height: 125%') style = '; '.join(style) + if self.filename: + yield 0, ('<span class="filename">' + self.filename + '</span>') + yield 0, ('<pre' + (style and ' style="%s"' % style) + '>') for tup in inner: yield tup @@ -711,7 +721,7 @@ class HtmlFormatter(Formatter): tagsfile = self.tagsfile lspan = '' - line = '' + line = [] for ttype, value in tokensource: if nocls: cclass = getcls(ttype) @@ -742,30 +752,31 @@ class HtmlFormatter(Formatter): for part in parts[:-1]: if line: if lspan != cspan: - line += (lspan and '</span>') + cspan + part + \ - (cspan and '</span>') + lsep - else: # both are the same - line += part + (lspan and '</span>') + lsep - yield 1, line - line = '' + line.extend(((lspan and '</span>'), cspan, part, + (cspan and '</span>'), lsep)) + else: # both are the same + line.extend((part, (lspan and '</span>'), lsep)) + yield 1, ''.join(line) + line = [] elif part: - yield 1, cspan + part + (cspan and '</span>') + lsep + yield 1, ''.join((cspan, part, (cspan and '</span>'), lsep)) else: yield 1, lsep # for the last line if line and parts[-1]: if lspan != cspan: - line += (lspan and '</span>') + cspan + parts[-1] + line.extend(((lspan and '</span>'), cspan, parts[-1])) lspan = cspan else: - line += parts[-1] + line.append(parts[-1]) elif parts[-1]: - line = cspan + parts[-1] + line = [cspan, parts[-1]] lspan = cspan # else we neither have to open a new span nor set lspan if line: - yield 1, line + (lspan and '</span>') + lsep + line.extend(((lspan and '</span>'), lsep)) + yield 1, ''.join(line) def _lookup_ctag(self, token): entry = ctags.TagEntry() @@ -784,7 +795,7 @@ class HtmlFormatter(Formatter): for i, (t, value) in enumerate(tokensource): if t != 1: yield t, value - if i + 1 in hls: # i + 1 because Python indexes start at 0 + if i + 1 in hls: # i + 1 because Python indexes start at 0 if self.noclasses: style = '' if self.style.highlight_color is not None: diff --git a/pygments/formatters/img.py b/pygments/formatters/img.py index 9d1365a4..a7b5d51e 100644 --- a/pygments/formatters/img.py +++ b/pygments/formatters/img.py @@ -15,6 +15,8 @@ from pygments.formatter import Formatter from pygments.util import get_bool_opt, get_int_opt, get_list_opt, \ get_choice_opt, xrange +import subprocess + # Import this carefully try: from PIL import Image, ImageDraw, ImageFont @@ -75,16 +77,13 @@ class FontManager(object): self._create_nix() def _get_nix_font_path(self, name, style): - try: - from commands import getstatusoutput - except ImportError: - from subprocess import getstatusoutput - exit, out = getstatusoutput('fc-list "%s:style=%s" file' % - (name, style)) - if not exit: - lines = out.splitlines() + proc = subprocess.Popen(['fc-list', "%s:style=%s" % (name, style), 'file'], + stdout=subprocess.PIPE, stderr=None) + stdout, _ = proc.communicate() + if proc.returncode == 0: + lines = stdout.splitlines() if lines: - path = lines[0].strip().strip(':') + path = lines[0].decode().strip().strip(':') return path def _create_nix(self): @@ -197,7 +196,7 @@ class ImageFormatter(Formatter): bold and italic fonts will be generated. This really should be a monospace font to look sane. - Default: "Bitstream Vera Sans Mono" + Default: "Bitstream Vera Sans Mono" on Windows, Courier New on \*nix `font_size` The font size in points to be used. diff --git a/pygments/formatters/irc.py b/pygments/formatters/irc.py new file mode 100644 index 00000000..44fe6c4a --- /dev/null +++ b/pygments/formatters/irc.py @@ -0,0 +1,182 @@ +# -*- coding: utf-8 -*- +""" + pygments.formatters.irc + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Formatter for IRC output + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import sys + +from pygments.formatter import Formatter +from pygments.token import Keyword, Name, Comment, String, Error, \ + Number, Operator, Generic, Token, Whitespace +from pygments.util import get_choice_opt + + +__all__ = ['IRCFormatter'] + + +#: Map token types to a tuple of color values for light and dark +#: backgrounds. +IRC_COLORS = { + Token: ('', ''), + + Whitespace: ('lightgray', 'darkgray'), + Comment: ('lightgray', 'darkgray'), + Comment.Preproc: ('teal', 'turquoise'), + Keyword: ('darkblue', 'blue'), + Keyword.Type: ('teal', 'turquoise'), + Operator.Word: ('purple', 'fuchsia'), + Name.Builtin: ('teal', 'turquoise'), + Name.Function: ('darkgreen', 'green'), + Name.Namespace: ('_teal_', '_turquoise_'), + Name.Class: ('_darkgreen_', '_green_'), + Name.Exception: ('teal', 'turquoise'), + Name.Decorator: ('darkgray', 'lightgray'), + Name.Variable: ('darkred', 'red'), + Name.Constant: ('darkred', 'red'), + Name.Attribute: ('teal', 'turquoise'), + Name.Tag: ('blue', 'blue'), + String: ('brown', 'brown'), + Number: ('darkblue', 'blue'), + + Generic.Deleted: ('red', 'red'), + Generic.Inserted: ('darkgreen', 'green'), + Generic.Heading: ('**', '**'), + Generic.Subheading: ('*purple*', '*fuchsia*'), + Generic.Error: ('red', 'red'), + + Error: ('_red_', '_red_'), +} + + +IRC_COLOR_MAP = { + 'white': 0, + 'black': 1, + 'darkblue': 2, + 'green': 3, + 'red': 4, + 'brown': 5, + 'purple': 6, + 'orange': 7, + 'darkgreen': 7, #compat w/ ansi + 'yellow': 8, + 'lightgreen': 9, + 'turquoise': 9, # compat w/ ansi + 'teal': 10, + 'lightblue': 11, + 'darkred': 11, # compat w/ ansi + 'blue': 12, + 'fuchsia': 13, + 'darkgray': 14, + 'lightgray': 15, +} + +def ircformat(color, text): + if len(color) < 1: + return text + add = sub = '' + if '_' in color: # italic + add += '\x1D' + sub = '\x1D' + sub + color = color.strip('_') + if '*' in color: # bold + add += '\x02' + sub = '\x02' + sub + color = color.strip('*') + # underline (\x1F) not supported + # backgrounds (\x03FF,BB) not supported + if len(color) > 0: # actual color - may have issues with ircformat("red", "blah")+"10" type stuff + add += '\x03' + str(IRC_COLOR_MAP[color]).zfill(2) + sub = '\x03' + sub + return add + text + sub + return '<'+add+'>'+text+'</'+sub+'>' + + +class IRCFormatter(Formatter): + r""" + Format tokens with IRC color sequences + + The `get_style_defs()` method doesn't do anything special since there is + no support for common styles. + + Options accepted: + + `bg` + Set to ``"light"`` or ``"dark"`` depending on the terminal's background + (default: ``"light"``). + + `colorscheme` + A dictionary mapping token types to (lightbg, darkbg) color names or + ``None`` (default: ``None`` = use builtin colorscheme). + + `linenos` + Set to ``True`` to have line numbers in the output as well + (default: ``False`` = no line numbers). + """ + name = 'IRC' + aliases = ['irc', 'IRC'] + filenames = [] + + def __init__(self, **options): + Formatter.__init__(self, **options) + self.darkbg = get_choice_opt(options, 'bg', + ['light', 'dark'], 'light') == 'dark' + self.colorscheme = options.get('colorscheme', None) or IRC_COLORS + self.linenos = options.get('linenos', False) + self._lineno = 0 + + def _write_lineno(self, outfile): + self._lineno += 1 + outfile.write("\n%04d: " % self._lineno) + + def _format_unencoded_with_lineno(self, tokensource, outfile): + self._write_lineno(outfile) + + for ttype, value in tokensource: + if value.endswith("\n"): + self._write_lineno(outfile) + value = value[:-1] + color = self.colorscheme.get(ttype) + while color is None: + ttype = ttype[:-1] + color = self.colorscheme.get(ttype) + if color: + color = color[self.darkbg] + spl = value.split('\n') + for line in spl[:-1]: + self._write_lineno(outfile) + if line: + outfile.write(ircformat(color, line[:-1])) + if spl[-1]: + outfile.write(ircformat(color, spl[-1])) + else: + outfile.write(value) + + outfile.write("\n") + + def format_unencoded(self, tokensource, outfile): + if self.linenos: + self._format_unencoded_with_lineno(tokensource, outfile) + return + + for ttype, value in tokensource: + color = self.colorscheme.get(ttype) + while color is None: + ttype = ttype[:-1] + color = self.colorscheme.get(ttype) + if color: + color = color[self.darkbg] + spl = value.split('\n') + for line in spl[:-1]: + if line: + outfile.write(ircformat(color, line)) + outfile.write('\n') + if spl[-1]: + outfile.write(ircformat(color, spl[-1])) + else: + outfile.write(value) diff --git a/pygments/formatters/terminal.py b/pygments/formatters/terminal.py index 3c4b025f..2dbfde7f 100644 --- a/pygments/formatters/terminal.py +++ b/pygments/formatters/terminal.py @@ -49,6 +49,7 @@ TERMINAL_COLORS = { Generic.Inserted: ('darkgreen', 'green'), Generic.Heading: ('**', '**'), Generic.Subheading: ('*purple*', '*fuchsia*'), + Generic.Prompt: ('**', '**'), Generic.Error: ('red', 'red'), Error: ('_red_', '_red_'), @@ -101,51 +102,35 @@ class TerminalFormatter(Formatter): def _write_lineno(self, outfile): self._lineno += 1 - outfile.write("\n%04d: " % self._lineno) - - def _format_unencoded_with_lineno(self, tokensource, outfile): - self._write_lineno(outfile) - - for ttype, value in tokensource: - if value.endswith("\n"): - self._write_lineno(outfile) - value = value[:-1] - color = self.colorscheme.get(ttype) - while color is None: - ttype = ttype[:-1] - color = self.colorscheme.get(ttype) - if color: - color = color[self.darkbg] - spl = value.split('\n') - for line in spl[:-1]: - self._write_lineno(outfile) - if line: - outfile.write(ansiformat(color, line[:-1])) - if spl[-1]: - outfile.write(ansiformat(color, spl[-1])) - else: - outfile.write(value) - - outfile.write("\n") + outfile.write("%s%04d: " % (self._lineno != 1 and '\n' or '', self._lineno)) + + def _get_color(self, ttype): + # self.colorscheme is a dict containing usually generic types, so we + # have to walk the tree of dots. The base Token type must be a key, + # even if it's empty string, as in the default above. + colors = self.colorscheme.get(ttype) + while colors is None: + ttype = ttype.parent + colors = self.colorscheme.get(ttype) + return colors[self.darkbg] def format_unencoded(self, tokensource, outfile): if self.linenos: - self._format_unencoded_with_lineno(tokensource, outfile) - return + self._write_lineno(outfile) for ttype, value in tokensource: - color = self.colorscheme.get(ttype) - while color is None: - ttype = ttype[:-1] - color = self.colorscheme.get(ttype) - if color: - color = color[self.darkbg] - spl = value.split('\n') - for line in spl[:-1]: - if line: - outfile.write(ansiformat(color, line)) - outfile.write('\n') - if spl[-1]: - outfile.write(ansiformat(color, spl[-1])) - else: - outfile.write(value) + color = self._get_color(ttype) + + for line in value.splitlines(True): + if color: + outfile.write(ansiformat(color, line.rstrip('\n'))) + else: + outfile.write(line.rstrip('\n')) + if line.endswith('\n'): + if self.linenos: + self._write_lineno(outfile) + else: + outfile.write('\n') + + if self.linenos: + outfile.write("\n") diff --git a/pygments/formatters/terminal256.py b/pygments/formatters/terminal256.py index 5d794f4e..af311955 100644 --- a/pygments/formatters/terminal256.py +++ b/pygments/formatters/terminal256.py @@ -29,7 +29,7 @@ import sys from pygments.formatter import Formatter -__all__ = ['Terminal256Formatter'] +__all__ = ['Terminal256Formatter', 'TerminalTrueColorFormatter'] class EscapeSequence: @@ -56,6 +56,18 @@ class EscapeSequence: attrs.append("04") return self.escape(attrs) + def true_color_string(self): + attrs = [] + if self.fg: + attrs.extend(("38", "2", str(self.fg[0]), str(self.fg[1]), str(self.fg[2]))) + if self.bg: + attrs.extend(("48", "2", str(self.bg[0]), str(self.bg[1]), str(self.bg[2]))) + if self.bold: + attrs.append("01") + if self.underline: + attrs.append("04") + return self.escape(attrs) + def reset_string(self): attrs = [] if self.fg is not None: @@ -68,9 +80,9 @@ class EscapeSequence: class Terminal256Formatter(Formatter): - r""" + """ Format tokens with ANSI color sequences, for output in a 256-color - terminal or console. Like in `TerminalFormatter` color sequences + terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly. The formatter takes colors from a style defined by the `style` option @@ -221,3 +233,49 @@ class Terminal256Formatter(Formatter): if not_found: outfile.write(value) + + +class TerminalTrueColorFormatter(Terminal256Formatter): + r""" + Format tokens with ANSI color sequences, for output in a true-color + terminal or console. Like in `TerminalFormatter` color sequences + are terminated at newlines, so that paging the output works correctly. + + .. versionadded:: 2.1 + + Options accepted: + + `style` + The style to use, can be a string or a Style subclass (default: + ``'default'``). + """ + name = 'TerminalTrueColor' + aliases = ['terminal16m', 'console16m', '16m'] + filenames = [] + + def _build_color_table(self): + pass + + def _color_tuple(self, color): + try: + rgb = int(str(color), 16) + except ValueError: + return None + r = (rgb >> 16) & 0xff + g = (rgb >> 8) & 0xff + b = rgb & 0xff + return (r, g, b) + + def _setup_styles(self): + for ttype, ndef in self.style: + escape = EscapeSequence() + if ndef['color']: + escape.fg = self._color_tuple(ndef['color']) + if ndef['bgcolor']: + escape.bg = self._color_tuple(ndef['bgcolor']) + if self.usebold and ndef['bold']: + escape.bold = True + if self.useunderline and ndef['underline']: + escape.underline = True + self.style_string[str(ttype)] = (escape.true_color_string(), + escape.reset_string()) diff --git a/pygments/lexer.py b/pygments/lexer.py index 07e81033..dd6c01e4 100644 --- a/pygments/lexer.py +++ b/pygments/lexer.py @@ -14,7 +14,6 @@ from __future__ import print_function import re import sys import time -import itertools from pygments.filter import apply_filters, Filter from pygments.filters import get_filter_by_name @@ -43,10 +42,10 @@ class LexerMeta(type): static methods which always return float values. """ - def __new__(cls, name, bases, d): + def __new__(mcs, name, bases, d): if 'analyse_text' in d: d['analyse_text'] = make_analysator(d['analyse_text']) - return type.__new__(cls, name, bases, d) + return type.__new__(mcs, name, bases, d) @add_metaclass(LexerMeta) @@ -189,7 +188,7 @@ class Lexer(object): text += '\n' def streamer(): - for i, t, v in self.get_tokens_unprocessed(text): + for _, t, v in self.get_tokens_unprocessed(text): yield t, v stream = streamer() if not unfiltered: @@ -246,7 +245,7 @@ class DelegatingLexer(Lexer): # -class include(str): +class include(str): # pylint: disable=invalid-name """ Indicates that a state should include rules from another state. """ @@ -260,10 +259,10 @@ class _inherit(object): def __repr__(self): return 'inherit' -inherit = _inherit() +inherit = _inherit() # pylint: disable=invalid-name -class combined(tuple): +class combined(tuple): # pylint: disable=invalid-name """ Indicates a state combined from multiple states. """ @@ -320,8 +319,8 @@ def bygroups(*args): if data is not None: if ctx: ctx.pos = match.start(i + 1) - for item in action(lexer, _PseudoMatch(match.start(i + 1), - data), ctx): + for item in action( + lexer, _PseudoMatch(match.start(i + 1), data), ctx): if item: yield item if ctx: @@ -655,6 +654,8 @@ class RegexLexer(Lexer): statetokens = tokendefs[statestack[-1]] break else: + # We are here only if all state tokens have been considered + # and there was not a match on any of them. try: if text[pos] == '\n': # at EOL, reset state to "root" diff --git a/pygments/lexers/_cocoa_builtins.py b/pygments/lexers/_cocoa_builtins.py index b97860b3..a4f00d9d 100644 --- a/pygments/lexers/_cocoa_builtins.py +++ b/pygments/lexers/_cocoa_builtins.py @@ -14,16 +14,15 @@ from __future__ import print_function -COCOA_INTERFACES = set(['UITableViewCell', 'HKCorrelationQuery', 'NSURLSessionDataTask', 'PHFetchOptions', 'NSLinguisticTagger', 'NSStream', 'AVAudioUnitDelay', 'GCMotion', 'SKPhysicsWorld', 'NSString', 'CMAttitude', 'AVAudioEnvironmentDistanceAttenuationParameters', 'HKStatisticsCollection', 'SCNPlane', 'CBPeer', 'JSContext', 'SCNTransaction', 'SCNTorus', 'AVAudioUnitEffect', 'UICollectionReusableView', 'MTLSamplerDescriptor', 'AVAssetReaderSampleReferenceOutput', 'AVMutableCompositionTrack', 'GKLeaderboard', 'NSFetchedResultsController', 'SKRange', 'MKTileOverlayRenderer', 'MIDINetworkSession', 'UIVisualEffectView', 'CIWarpKernel', 'PKObject', 'MKRoute', 'MPVolumeView', 'UIPrintInfo', 'SCNText', 'ADClient', 'UIKeyCommand', 'AVMutableAudioMix', 'GLKEffectPropertyLight', 'WKScriptMessage', 'AVMIDIPlayer', 'PHCollectionListChangeRequest', 'UICollectionViewLayout', 'NSMutableCharacterSet', 'SKPaymentTransaction', 'NEOnDemandRuleConnect', 'NSShadow', 'SCNView', 'NSURLSessionConfiguration', 'MTLVertexAttributeDescriptor', 'CBCharacteristic', 'HKQuantityType', 'CKLocationSortDescriptor', 'NEVPNIKEv2SecurityAssociationParameters', 'CMStepCounter', 'NSNetService', 'AVAssetWriterInputMetadataAdaptor', 'UICollectionView', 'UIViewPrintFormatter', 'SCNLevelOfDetail', 'CAShapeLayer', 'MCPeerID', 'MPRatingCommand', 'WKNavigation', 'NSDictionary', 'NSFileVersion', 'CMGyroData', 'AVAudioUnitDistortion', 'CKFetchRecordsOperation', 'SKPhysicsJointSpring', 'SCNHitTestResult', 'AVAudioTime', 'CIFilter', 'UIView', 'SCNConstraint', 'CAPropertyAnimation', 'MKMapItem', 'MPRemoteCommandCenter', 'UICollectionViewFlowLayoutInvalidationContext', 'UIInputViewController', 'PKPass', 'SCNPhysicsBehavior', 'MTLRenderPassColorAttachmentDescriptor', 'MKPolygonRenderer', 'CKNotification', 'JSValue', 'PHCollectionList', 'CLGeocoder', 'NSByteCountFormatter', 'AVCaptureScreenInput', 'MPFeedbackCommand', 'CAAnimation', 'MKOverlayPathView', 'UIActionSheet', 'UIMotionEffectGroup', 'NSLengthFormatter', 'UIBarItem', 'SKProduct', 'AVAssetExportSession', 'NSKeyedUnarchiver', 'NSMutableSet', 'SCNPyramid', 'PHAssetCollection', 'MKMapView', 'HMHomeManager', 'CATransition', 'MTLCompileOptions', 'UIVibrancyEffect', 'CLCircularRegion', 'MKTileOverlay', 'SCNShape', 'ACAccountCredential', 'SKPhysicsJointLimit', 'MKMapSnapshotter', 'AVMediaSelectionGroup', 'NSIndexSet', 'CBPeripheralManager', 'CKRecordZone', 'AVAudioRecorder', 'NSURL', 'CBCentral', 'NSNumber', 'AVAudioOutputNode', 'MTLVertexAttributeDescriptorArray', 'MKETAResponse', 'SKTransition', 'SSReadingList', 'HKSourceQuery', 'UITableViewRowAction', 'UITableView', 'SCNParticlePropertyController', 'AVCaptureStillImageOutput', 'GCController', 'AVAudioPlayerNode', 'AVAudioSessionPortDescription', 'NSHTTPURLResponse', 'NEOnDemandRuleEvaluateConnection', 'SKEffectNode', 'HKQuantity', 'GCControllerElement', 'AVPlayerItemAccessLogEvent', 'SCNBox', 'NSExtensionContext', 'MKOverlayRenderer', 'SCNPhysicsVehicle', 'NSDecimalNumber', 'EKReminder', 'MKPolylineView', 'CKQuery', 'AVAudioMixerNode', 'GKAchievementDescription', 'EKParticipant', 'NSBlockOperation', 'UIActivityItemProvider', 'CLLocation', 'NSBatchUpdateRequest', 'PHContentEditingOutput', 'PHObjectChangeDetails', 'MPMoviePlayerController', 'AVAudioFormat', 'HMTrigger', 'MTLRenderPassDepthAttachmentDescriptor', 'SCNRenderer', 'GKScore', 'UISplitViewController', 'HKSource', 'NSURLConnection', 'ABUnknownPersonViewController', 'SCNTechnique', 'UIMenuController', 'NSEvent', 'SKTextureAtlas', 'NSKeyedArchiver', 'GKLeaderboardSet', 'NSSimpleCString', 'AVAudioPCMBuffer', 'CBATTRequest', 'GKMatchRequest', 'AVMetadataObject', 'SKProductsRequest', 'UIAlertView', 'NSIncrementalStore', 'MFMailComposeViewController', 'SCNFloor', 'NSSortDescriptor', 'CKFetchNotificationChangesOperation', 'MPMovieAccessLog', 'NSManagedObjectContext', 'AVAudioUnitGenerator', 'WKBackForwardList', 'SKMutableTexture', 'AVCaptureAudioDataOutput', 'ACAccount', 'AVMetadataItem', 'MPRatingCommandEvent', 'AVCaptureDeviceInputSource', 'CLLocationManager', 'MPRemoteCommand', 'AVCaptureSession', 'UIStepper', 'UIRefreshControl', 'NEEvaluateConnectionRule', 'CKModifyRecordsOperation', 'UICollectionViewTransitionLayout', 'CBCentralManager', 'NSPurgeableData', 'SLComposeViewController', 'NSHashTable', 'MKUserTrackingBarButtonItem', 'UILexiconEntry', 'CMMotionActivity', 'SKAction', 'SKShader', 'AVPlayerItemOutput', 'MTLRenderPassAttachmentDescriptor', 'UIDocumentInteractionController', 'UIDynamicItemBehavior', 'NSMutableDictionary', 'UILabel', 'AVCaptureInputPort', 'NSExpression', 'CAInterAppAudioTransportView', 'SKMutablePayment', 'UIImage', 'PHCachingImageManager', 'SCNTransformConstraint', 'UIColor', 'SCNGeometrySource', 'AVCaptureAutoExposureBracketedStillImageSettings', 'UIPopoverBackgroundView', 'UIToolbar', 'NSNotificationCenter', 'AVAssetReaderOutputMetadataAdaptor', 'NSEntityMigrationPolicy', 'NSLocale', 'NSURLSession', 'SCNCamera', 'NSTimeZone', 'UIManagedDocument', 'AVMutableVideoCompositionLayerInstruction', 'AVAssetTrackGroup', 'NSInvocationOperation', 'ALAssetRepresentation', 'AVQueuePlayer', 'HMServiceGroup', 'UIPasteboard', 'PHContentEditingInput', 'NSLayoutManager', 'EKCalendarChooser', 'EKObject', 'CATiledLayer', 'GLKReflectionMapEffect', 'NSManagedObjectID', 'NSEnergyFormatter', 'SLRequest', 'HMCharacteristic', 'AVPlayerLayer', 'MTLRenderPassDescriptor', 'SKPayment', 'NSPointerArray', 'AVAudioMix', 'SCNLight', 'MCAdvertiserAssistant', 'MKMapSnapshotOptions', 'HKCategorySample', 'AVAudioEnvironmentReverbParameters', 'SCNMorpher', 'AVTimedMetadataGroup', 'CBMutableCharacteristic', 'NSFetchRequest', 'UIDevice', 'NSManagedObject', 'NKAssetDownload', 'AVOutputSettingsAssistant', 'SKPhysicsJointPin', 'UITabBar', 'UITextInputMode', 'NSFetchRequestExpression', 'HMActionSet', 'CTSubscriber', 'PHAssetChangeRequest', 'NSPersistentStoreRequest', 'UITabBarController', 'HKQuantitySample', 'AVPlayerItem', 'AVSynchronizedLayer', 'MKDirectionsRequest', 'NSMetadataItem', 'UIPresentationController', 'UINavigationItem', 'PHFetchResultChangeDetails', 'PHImageManager', 'AVCaptureManualExposureBracketedStillImageSettings', 'UIStoryboardPopoverSegue', 'SCNLookAtConstraint', 'UIGravityBehavior', 'UIWindow', 'CBMutableDescriptor', 'NEOnDemandRuleDisconnect', 'UIBezierPath', 'UINavigationController', 'ABPeoplePickerNavigationController', 'EKSource', 'AVAssetWriterInput', 'AVPlayerItemTrack', 'GLKEffectPropertyTexture', 'NSURLResponse', 'SKPaymentQueue', 'NSAssertionHandler', 'MKReverseGeocoder', 'GCControllerAxisInput', 'NSArray', 'NSOrthography', 'NSURLSessionUploadTask', 'NSCharacterSet', 'AVMutableVideoCompositionInstruction', 'AVAssetReaderOutput', 'EAGLContext', 'WKFrameInfo', 'CMPedometer', 'MyClass', 'CKModifyBadgeOperation', 'AVCaptureAudioFileOutput', 'SKEmitterNode', 'NSMachPort', 'AVVideoCompositionCoreAnimationTool', 'PHCollection', 'SCNPhysicsWorld', 'NSURLRequest', 'CMAccelerometerData', 'NSNetServiceBrowser', 'CLFloor', 'AVAsynchronousVideoCompositionRequest', 'SCNGeometry', 'SCNIKConstraint', 'CIKernel', 'CAGradientLayer', 'HKCharacteristicType', 'NSFormatter', 'SCNAction', 'CATransaction', 'CBUUID', 'UIStoryboard', 'MPMediaLibrary', 'UITapGestureRecognizer', 'MPMediaItemArtwork', 'NSURLSessionTask', 'AVAudioUnit', 'MCBrowserViewController', 'NSRelationshipDescription', 'HKSample', 'WKWebView', 'NSMutableAttributedString', 'NSPersistentStoreAsynchronousResult', 'MPNowPlayingInfoCenter', 'MKLocalSearch', 'EAAccessory', 'HKCorrelation', 'CATextLayer', 'NSNotificationQueue', 'UINib', 'GLKTextureLoader', 'HKObjectType', 'NSValue', 'NSMutableIndexSet', 'SKPhysicsContact', 'NSProgress', 'AVPlayerViewController', 'CAScrollLayer', 'GKSavedGame', 'NSTextCheckingResult', 'PHObjectPlaceholder', 'SKConstraint', 'EKEventEditViewController', 'NSEntityDescription', 'NSURLCredentialStorage', 'UIApplication', 'SKDownload', 'SCNNode', 'MKLocalSearchRequest', 'SKScene', 'UISearchDisplayController', 'NEOnDemandRule', 'MTLRenderPassStencilAttachmentDescriptor', 'CAReplicatorLayer', 'UIPrintPageRenderer', 'EKCalendarItem', 'NSUUID', 'EAAccessoryManager', 'NEOnDemandRuleIgnore', 'SKRegion', 'AVAssetResourceLoader', 'EAWiFiUnconfiguredAccessoryBrowser', 'NSUserActivity', 'CTCall', 'UIPrinterPickerController', 'CIVector', 'UINavigationBar', 'UIPanGestureRecognizer', 'MPMediaQuery', 'ABNewPersonViewController', 'CKRecordZoneID', 'HKAnchoredObjectQuery', 'CKFetchRecordZonesOperation', 'UIStoryboardSegue', 'ACAccountType', 'GKSession', 'SKVideoNode', 'PHChange', 'SKReceiptRefreshRequest', 'GCExtendedGamepadSnapshot', 'MPSeekCommandEvent', 'GCExtendedGamepad', 'CAValueFunction', 'SCNCylinder', 'NSNotification', 'NSBatchUpdateResult', 'PKPushCredentials', 'SCNPhysicsSliderJoint', 'AVCaptureDeviceFormat', 'AVPlayerItemErrorLog', 'NSMapTable', 'NSSet', 'CMMotionManager', 'GKVoiceChatService', 'UIPageControl', 'UILexicon', 'MTLArrayType', 'AVAudioUnitReverb', 'MKGeodesicPolyline', 'AVMutableComposition', 'NSLayoutConstraint', 'UIPrinter', 'NSOrderedSet', 'CBAttribute', 'PKPushPayload', 'NSIncrementalStoreNode', 'EKEventStore', 'MPRemoteCommandEvent', 'UISlider', 'UIBlurEffect', 'CKAsset', 'AVCaptureInput', 'AVAudioEngine', 'MTLVertexDescriptor', 'SKPhysicsBody', 'NSOperation', 'UIImageAsset', 'MKMapCamera', 'SKProductsResponse', 'GLKEffectPropertyMaterial', 'AVCaptureDevice', 'CTCallCenter', 'CABTMIDILocalPeripheralViewController', 'NEVPNManager', 'HKQuery', 'SCNPhysicsContact', 'CBMutableService', 'AVSampleBufferDisplayLayer', 'SCNSceneSource', 'SKLightNode', 'CKDiscoveredUserInfo', 'NSMutableArray', 'MTLDepthStencilDescriptor', 'MTLArgument', 'NSMassFormatter', 'CIRectangleFeature', 'PKPushRegistry', 'NEVPNConnection', 'MCNearbyServiceBrowser', 'NSOperationQueue', 'MKPolylineRenderer', 'UICollectionViewLayoutAttributes', 'NSValueTransformer', 'UICollectionViewFlowLayout', 'CIBarcodeFeature', 'MPChangePlaybackRateCommandEvent', 'NSEntityMapping', 'SKTexture', 'NSMergePolicy', 'UITextInputStringTokenizer', 'NSRecursiveLock', 'AVAsset', 'NSUndoManager', 'AVAudioUnitSampler', 'NSItemProvider', 'SKUniform', 'MPMediaPickerController', 'CKOperation', 'MTLRenderPipelineDescriptor', 'EAWiFiUnconfiguredAccessory', 'NSFileCoordinator', 'SKRequest', 'NSFileHandle', 'NSConditionLock', 'UISegmentedControl', 'NSManagedObjectModel', 'UITabBarItem', 'SCNCone', 'MPMediaItem', 'SCNMaterial', 'EKRecurrenceRule', 'UIEvent', 'UITouch', 'UIPrintInteractionController', 'CMDeviceMotion', 'NEVPNProtocol', 'NSCompoundPredicate', 'HKHealthStore', 'MKMultiPoint', 'HKSampleType', 'UIPrintFormatter', 'AVAudioUnitEQFilterParameters', 'SKView', 'NSConstantString', 'UIPopoverController', 'CKDatabase', 'AVMetadataFaceObject', 'UIAccelerometer', 'EKEventViewController', 'CMAltitudeData', 'MTLStencilDescriptor', 'UISwipeGestureRecognizer', 'NSPort', 'MKCircleRenderer', 'AVCompositionTrack', 'NSAsynchronousFetchRequest', 'NSUbiquitousKeyValueStore', 'NSMetadataQueryResultGroup', 'AVAssetResourceLoadingDataRequest', 'UITableViewHeaderFooterView', 'CKNotificationID', 'AVAudioSession', 'HKUnit', 'NSNull', 'NSPersistentStoreResult', 'MKCircleView', 'AVAudioChannelLayout', 'NEVPNProtocolIKEv2', 'WKProcessPool', 'UIAttachmentBehavior', 'CLBeacon', 'NSInputStream', 'NSURLCache', 'GKPlayer', 'NSMappingModel', 'NSHTTPCookie', 'AVMutableVideoComposition', 'PHFetchResult', 'NSAttributeDescription', 'AVPlayer', 'MKAnnotationView', 'UIFontDescriptor', 'NSTimer', 'CBDescriptor', 'MKOverlayView', 'AVAudioUnitTimePitch', 'NSSaveChangesRequest', 'UIReferenceLibraryViewController', 'SKPhysicsJointFixed', 'UILocalizedIndexedCollation', 'UIInterpolatingMotionEffect', 'UIDocumentPickerViewController', 'AVAssetWriter', 'NSBundle', 'SKStoreProductViewController', 'GLKViewController', 'NSMetadataQueryAttributeValueTuple', 'GKTurnBasedMatch', 'AVAudioFile', 'UIActivity', 'NSPipe', 'MKShape', 'NSMergeConflict', 'CIImage', 'HKObject', 'UIRotationGestureRecognizer', 'AVPlayerItemLegibleOutput', 'AVAssetImageGenerator', 'GCControllerButtonInput', 'CKMarkNotificationsReadOperation', 'CKSubscription', 'MPTimedMetadata', 'NKIssue', 'UIScreenMode', 'HMAccessoryBrowser', 'GKTurnBasedEventHandler', 'UIWebView', 'MKPolyline', 'JSVirtualMachine', 'AVAssetReader', 'NSAttributedString', 'GKMatchmakerViewController', 'NSCountedSet', 'UIButton', 'WKNavigationResponse', 'GKLocalPlayer', 'MPMovieErrorLog', 'AVSpeechUtterance', 'HKStatistics', 'UILocalNotification', 'HKBiologicalSexObject', 'AVURLAsset', 'CBPeripheral', 'NSDateComponentsFormatter', 'SKSpriteNode', 'UIAccessibilityElement', 'AVAssetWriterInputGroup', 'HMZone', 'AVAssetReaderAudioMixOutput', 'NSEnumerator', 'UIDocument', 'MKLocalSearchResponse', 'UISimpleTextPrintFormatter', 'PHPhotoLibrary', 'CBService', 'UIDocumentMenuViewController', 'MCSession', 'QLPreviewController', 'CAMediaTimingFunction', 'UITextPosition', 'ASIdentifierManager', 'AVAssetResourceLoadingRequest', 'SLComposeServiceViewController', 'UIPinchGestureRecognizer', 'PHObject', 'NSExtensionItem', 'HKSampleQuery', 'MTLRenderPipelineColorAttachmentDescriptorArray', 'MKRouteStep', 'SCNCapsule', 'NSMetadataQuery', 'AVAssetResourceLoadingContentInformationRequest', 'UITraitCollection', 'CTCarrier', 'NSFileSecurity', 'UIAcceleration', 'UIMotionEffect', 'MTLRenderPipelineReflection', 'CLHeading', 'CLVisit', 'MKDirectionsResponse', 'HMAccessory', 'MTLStructType', 'UITextView', 'CMMagnetometerData', 'UICollisionBehavior', 'UIProgressView', 'CKServerChangeToken', 'UISearchBar', 'MKPlacemark', 'AVCaptureConnection', 'NSPropertyMapping', 'ALAssetsFilter', 'SK3DNode', 'AVPlayerItemErrorLogEvent', 'NSJSONSerialization', 'AVAssetReaderVideoCompositionOutput', 'ABPersonViewController', 'CIDetector', 'GKTurnBasedMatchmakerViewController', 'MPMediaItemCollection', 'SCNSphere', 'NSCondition', 'NSURLCredential', 'MIDINetworkConnection', 'NSFileProviderExtension', 'NSDecimalNumberHandler', 'NSAtomicStoreCacheNode', 'NSAtomicStore', 'EKAlarm', 'CKNotificationInfo', 'AVAudioUnitEQ', 'UIPercentDrivenInteractiveTransition', 'MKPolygon', 'AVAssetTrackSegment', 'MTLVertexAttribute', 'NSExpressionDescription', 'HKStatisticsCollectionQuery', 'NSURLAuthenticationChallenge', 'NSDirectoryEnumerator', 'MKDistanceFormatter', 'UIAlertAction', 'NSPropertyListSerialization', 'GKPeerPickerController', 'UIUserNotificationSettings', 'UITableViewController', 'GKNotificationBanner', 'MKPointAnnotation', 'MTLRenderPassColorAttachmentDescriptorArray', 'NSCache', 'SKPhysicsJoint', 'NSXMLParser', 'UIViewController', 'MFMessageComposeViewController', 'AVAudioInputNode', 'NSDataDetector', 'CABTMIDICentralViewController', 'AVAudioUnitMIDIInstrument', 'AVCaptureVideoPreviewLayer', 'AVAssetWriterInputPassDescription', 'MPChangePlaybackRateCommand', 'NSURLComponents', 'CAMetalLayer', 'UISnapBehavior', 'AVMetadataMachineReadableCodeObject', 'CKDiscoverUserInfosOperation', 'NSTextAttachment', 'NSException', 'UIMenuItem', 'CMMotionActivityManager', 'SCNGeometryElement', 'NCWidgetController', 'CAEmitterLayer', 'MKUserLocation', 'UIImagePickerController', 'CIFeature', 'AVCaptureDeviceInput', 'ALAsset', 'NSURLSessionDownloadTask', 'SCNPhysicsHingeJoint', 'MPMoviePlayerViewController', 'NSMutableOrderedSet', 'SCNMaterialProperty', 'UIFont', 'AVCaptureVideoDataOutput', 'NSCachedURLResponse', 'ALAssetsLibrary', 'NSInvocation', 'UILongPressGestureRecognizer', 'NSTextStorage', 'WKWebViewConfiguration', 'CIFaceFeature', 'MKMapSnapshot', 'GLKEffectPropertyFog', 'AVComposition', 'CKDiscoverAllContactsOperation', 'AVAudioMixInputParameters', 'CAEmitterBehavior', 'PKPassLibrary', 'UIMutableUserNotificationCategory', 'NSLock', 'NEVPNProtocolIPSec', 'ADBannerView', 'UIDocumentPickerExtensionViewController', 'UIActivityIndicatorView', 'AVPlayerMediaSelectionCriteria', 'CALayer', 'UIAccessibilityCustomAction', 'UIBarButtonItem', 'AVAudioSessionRouteDescription', 'CLBeaconRegion', 'HKBloodTypeObject', 'MTLVertexBufferLayoutDescriptorArray', 'CABasicAnimation', 'AVVideoCompositionInstruction', 'AVMutableTimedMetadataGroup', 'EKRecurrenceEnd', 'NSTextContainer', 'TWTweetComposeViewController', 'UIScrollView', 'WKNavigationAction', 'AVPlayerItemMetadataOutput', 'EKRecurrenceDayOfWeek', 'NSNumberFormatter', 'MTLComputePipelineReflection', 'UIScreen', 'CLRegion', 'NSProcessInfo', 'GLKTextureInfo', 'SCNSkinner', 'AVCaptureMetadataOutput', 'SCNAnimationEvent', 'NSTextTab', 'JSManagedValue', 'NSDate', 'UITextChecker', 'WKBackForwardListItem', 'NSData', 'NSParagraphStyle', 'AVMutableMetadataItem', 'EKCalendar', 'NSMutableURLRequest', 'UIVideoEditorController', 'HMTimerTrigger', 'AVAudioUnitVarispeed', 'UIDynamicAnimator', 'AVCompositionTrackSegment', 'GCGamepadSnapshot', 'MPMediaEntity', 'GLKSkyboxEffect', 'UISwitch', 'EKStructuredLocation', 'UIGestureRecognizer', 'NSProxy', 'GLKBaseEffect', 'UIPushBehavior', 'GKScoreChallenge', 'NSCoder', 'MPMediaPlaylist', 'NSDateComponents', 'WKUserScript', 'EKEvent', 'NSDateFormatter', 'NSAsynchronousFetchResult', 'AVAssetWriterInputPixelBufferAdaptor', 'UIVisualEffect', 'UICollectionViewCell', 'UITextField', 'CLPlacemark', 'MPPlayableContentManager', 'AVCaptureOutput', 'HMCharacteristicWriteAction', 'CKModifySubscriptionsOperation', 'NSPropertyDescription', 'GCGamepad', 'UIMarkupTextPrintFormatter', 'SCNTube', 'NSPersistentStoreCoordinator', 'AVAudioEnvironmentNode', 'GKMatchmaker', 'CIContext', 'NSThread', 'SLComposeSheetConfigurationItem', 'SKPhysicsJointSliding', 'NSPredicate', 'GKVoiceChat', 'SKCropNode', 'AVCaptureAudioPreviewOutput', 'NSStringDrawingContext', 'GKGameCenterViewController', 'UIPrintPaper', 'SCNPhysicsBallSocketJoint', 'UICollectionViewLayoutInvalidationContext', 'GLKEffectPropertyTransform', 'AVAudioIONode', 'UIDatePicker', 'MKDirections', 'ALAssetsGroup', 'CKRecordZoneNotification', 'SCNScene', 'MPMovieAccessLogEvent', 'CKFetchSubscriptionsOperation', 'CAEmitterCell', 'AVAudioUnitTimeEffect', 'HMCharacteristicMetadata', 'MKPinAnnotationView', 'UIPickerView', 'UIImageView', 'UIUserNotificationCategory', 'SCNPhysicsVehicleWheel', 'HKCategoryType', 'MPMediaQuerySection', 'GKFriendRequestComposeViewController', 'NSError', 'MTLRenderPipelineColorAttachmentDescriptor', 'SCNPhysicsShape', 'UISearchController', 'SCNPhysicsBody', 'CTSubscriberInfo', 'AVPlayerItemAccessLog', 'MPMediaPropertyPredicate', 'CMLogItem', 'NSAutoreleasePool', 'NSSocketPort', 'AVAssetReaderTrackOutput', 'SKNode', 'UIMutableUserNotificationAction', 'SCNProgram', 'AVSpeechSynthesisVoice', 'CMAltimeter', 'AVCaptureAudioChannel', 'GKTurnBasedExchangeReply', 'AVVideoCompositionLayerInstruction', 'AVSpeechSynthesizer', 'GKChallengeEventHandler', 'AVCaptureFileOutput', 'UIControl', 'SCNPhysicsField', 'CKReference', 'LAContext', 'CKRecordID', 'ADInterstitialAd', 'AVAudioSessionDataSourceDescription', 'AVAudioBuffer', 'CIColorKernel', 'GCControllerDirectionPad', 'NSFileManager', 'AVMutableAudioMixInputParameters', 'UIScreenEdgePanGestureRecognizer', 'CAKeyframeAnimation', 'CKQueryNotification', 'PHAdjustmentData', 'EASession', 'AVAssetResourceRenewalRequest', 'UIInputView', 'NSFileWrapper', 'UIResponder', 'NSPointerFunctions', 'NSHTTPCookieStorage', 'AVMediaSelectionOption', 'NSRunLoop', 'NSFileAccessIntent', 'CAAnimationGroup', 'MKCircle', 'UIAlertController', 'NSMigrationManager', 'NSDateIntervalFormatter', 'UICollectionViewUpdateItem', 'CKDatabaseOperation', 'PHImageRequestOptions', 'SKReachConstraints', 'CKRecord', 'CAInterAppAudioSwitcherView', 'WKWindowFeatures', 'GKInvite', 'NSMutableData', 'PHAssetCollectionChangeRequest', 'NSMutableParagraphStyle', 'UIDynamicBehavior', 'GLKEffectProperty', 'CKFetchRecordChangesOperation', 'SKShapeNode', 'MPMovieErrorLogEvent', 'MKPolygonView', 'MPContentItem', 'HMAction', 'NSScanner', 'GKAchievementChallenge', 'AVAudioPlayer', 'CKContainer', 'AVVideoComposition', 'NKLibrary', 'NSPersistentStore', 'AVCaptureMovieFileOutput', 'HMRoom', 'GKChallenge', 'UITextRange', 'NSURLProtectionSpace', 'ACAccountStore', 'MPSkipIntervalCommand', 'NSComparisonPredicate', 'HMHome', 'PHVideoRequestOptions', 'NSOutputStream', 'MPSkipIntervalCommandEvent', 'PKAddPassesViewController', 'UITextSelectionRect', 'CTTelephonyNetworkInfo', 'AVTextStyleRule', 'NSFetchedPropertyDescription', 'UIPageViewController', 'CATransformLayer', 'UICollectionViewController', 'AVAudioNode', 'MCNearbyServiceAdvertiser', 'NSObject', 'PHAsset', 'GKLeaderboardViewController', 'CKQueryCursor', 'MPMusicPlayerController', 'MKOverlayPathRenderer', 'CMPedometerData', 'HMService', 'SKFieldNode', 'GKAchievement', 'WKUserContentController', 'AVAssetTrack', 'TWRequest', 'SKLabelNode', 'AVCaptureBracketedStillImageSettings', 'MIDINetworkHost', 'MPMediaPredicate', 'AVFrameRateRange', 'MTLTextureDescriptor', 'MTLVertexBufferLayoutDescriptor', 'MPFeedbackCommandEvent', 'UIUserNotificationAction', 'HKStatisticsQuery', 'SCNParticleSystem', 'NSIndexPath', 'AVVideoCompositionRenderContext', 'CADisplayLink', 'HKObserverQuery', 'UIPopoverPresentationController', 'CKQueryOperation', 'CAEAGLLayer', 'NSMutableString', 'NSMessagePort', 'NSURLQueryItem', 'MTLStructMember', 'AVAudioSessionChannelDescription', 'GLKView', 'UIActivityViewController', 'GKAchievementViewController', 'GKTurnBasedParticipant', 'NSURLProtocol', 'NSUserDefaults', 'NSCalendar', 'SKKeyframeSequence', 'AVMetadataItemFilter', 'CKModifyRecordZonesOperation', 'WKPreferences', 'NSMethodSignature', 'NSRegularExpression', 'EAGLSharegroup', 'AVPlayerItemVideoOutput', 'PHContentEditingInputRequestOptions', 'GKMatch', 'CIColor', 'UIDictationPhrase']) -COCOA_PROTOCOLS = set(['SKStoreProductViewControllerDelegate', 'AVVideoCompositionInstruction', 'AVAudioSessionDelegate', 'GKMatchDelegate', 'NSFileManagerDelegate', 'UILayoutSupport', 'NSCopying', 'UIPrintInteractionControllerDelegate', 'QLPreviewControllerDataSource', 'SKProductsRequestDelegate', 'NSTextStorageDelegate', 'MCBrowserViewControllerDelegate', 'MTLComputeCommandEncoder', 'SCNSceneExportDelegate', 'UISearchResultsUpdating', 'MFMailComposeViewControllerDelegate', 'MTLBlitCommandEncoder', 'NSDecimalNumberBehaviors', 'PHContentEditingController', 'NSMutableCopying', 'UIActionSheetDelegate', 'UIViewControllerTransitioningDelegate', 'UIAlertViewDelegate', 'AVAudioPlayerDelegate', 'MKReverseGeocoderDelegate', 'NSCoding', 'UITextInputTokenizer', 'GKFriendRequestComposeViewControllerDelegate', 'UIActivityItemSource', 'NSCacheDelegate', 'UIAdaptivePresentationControllerDelegate', 'GKAchievementViewControllerDelegate', 'UIViewControllerTransitionCoordinator', 'EKEventEditViewDelegate', 'NSURLConnectionDelegate', 'UITableViewDelegate', 'GKPeerPickerControllerDelegate', 'UIGuidedAccessRestrictionDelegate', 'AVSpeechSynthesizerDelegate', 'AVAudio3DMixing', 'AVPlayerItemLegibleOutputPushDelegate', 'ADInterstitialAdDelegate', 'HMAccessoryBrowserDelegate', 'AVAssetResourceLoaderDelegate', 'UITabBarControllerDelegate', 'CKRecordValue', 'SKPaymentTransactionObserver', 'AVCaptureAudioDataOutputSampleBufferDelegate', 'UIInputViewAudioFeedback', 'GKChallengeListener', 'SKSceneDelegate', 'UIPickerViewDelegate', 'UIWebViewDelegate', 'UIApplicationDelegate', 'GKInviteEventListener', 'MPMediaPlayback', 'MyClassJavaScriptMethods', 'AVAsynchronousKeyValueLoading', 'QLPreviewItem', 'SCNBoundingVolume', 'NSPortDelegate', 'UIContentContainer', 'SCNNodeRendererDelegate', 'SKRequestDelegate', 'SKPhysicsContactDelegate', 'HMAccessoryDelegate', 'UIPageViewControllerDataSource', 'SCNSceneRendererDelegate', 'SCNPhysicsContactDelegate', 'MKMapViewDelegate', 'AVPlayerItemOutputPushDelegate', 'UICollectionViewDelegate', 'UIImagePickerControllerDelegate', 'MTLRenderCommandEncoder', 'UIToolbarDelegate', 'WKUIDelegate', 'SCNActionable', 'NSURLConnectionDataDelegate', 'MKOverlay', 'CBCentralManagerDelegate', 'JSExport', 'NSTextLayoutOrientationProvider', 'UIPickerViewDataSource', 'PKPushRegistryDelegate', 'UIViewControllerTransitionCoordinatorContext', 'NSLayoutManagerDelegate', 'MTLLibrary', 'NSFetchedResultsControllerDelegate', 'ABPeoplePickerNavigationControllerDelegate', 'MTLResource', 'NSDiscardableContent', 'UITextFieldDelegate', 'MTLBuffer', 'MTLSamplerState', 'GKGameCenterControllerDelegate', 'MPMediaPickerControllerDelegate', 'UISplitViewControllerDelegate', 'UIAppearance', 'UIPickerViewAccessibilityDelegate', 'UITraitEnvironment', 'UIScrollViewAccessibilityDelegate', 'ADBannerViewDelegate', 'MPPlayableContentDataSource', 'MTLComputePipelineState', 'NSURLSessionDelegate', 'MTLCommandBuffer', 'NSXMLParserDelegate', 'UIViewControllerRestoration', 'UISearchBarDelegate', 'UIBarPositioning', 'CBPeripheralDelegate', 'UISearchDisplayDelegate', 'CAAction', 'PKAddPassesViewControllerDelegate', 'MCNearbyServiceAdvertiserDelegate', 'MTLDepthStencilState', 'GKTurnBasedMatchmakerViewControllerDelegate', 'MPPlayableContentDelegate', 'AVCaptureVideoDataOutputSampleBufferDelegate', 'UIAppearanceContainer', 'UIStateRestoring', 'UITextDocumentProxy', 'MTLDrawable', 'NSURLSessionTaskDelegate', 'NSFilePresenter', 'AVAudioStereoMixing', 'UIViewControllerContextTransitioning', 'UITextInput', 'CBPeripheralManagerDelegate', 'UITextInputDelegate', 'NSFastEnumeration', 'NSURLAuthenticationChallengeSender', 'SCNProgramDelegate', 'AVVideoCompositing', 'SCNAnimatable', 'NSSecureCoding', 'MCAdvertiserAssistantDelegate', 'GKLocalPlayerListener', 'GLKNamedEffect', 'UIPopoverControllerDelegate', 'AVCaptureMetadataOutputObjectsDelegate', 'NSExtensionRequestHandling', 'UITextSelecting', 'UIPrinterPickerControllerDelegate', 'NCWidgetProviding', 'MTLCommandEncoder', 'NSURLProtocolClient', 'MFMessageComposeViewControllerDelegate', 'UIVideoEditorControllerDelegate', 'WKNavigationDelegate', 'GKSavedGameListener', 'UITableViewDataSource', 'MTLFunction', 'EKCalendarChooserDelegate', 'NSUserActivityDelegate', 'UICollisionBehaviorDelegate', 'NSStreamDelegate', 'MCNearbyServiceBrowserDelegate', 'HMHomeDelegate', 'UINavigationControllerDelegate', 'MCSessionDelegate', 'UIDocumentPickerDelegate', 'UIViewControllerInteractiveTransitioning', 'GKTurnBasedEventListener', 'SCNSceneRenderer', 'MTLTexture', 'GLKViewDelegate', 'EAAccessoryDelegate', 'WKScriptMessageHandler', 'PHPhotoLibraryChangeObserver', 'NSKeyedUnarchiverDelegate', 'AVPlayerItemMetadataOutputPushDelegate', 'NSMachPortDelegate', 'SCNShadable', 'UIPopoverBackgroundViewMethods', 'UIDocumentMenuDelegate', 'UIBarPositioningDelegate', 'ABPersonViewControllerDelegate', 'NSNetServiceBrowserDelegate', 'EKEventViewDelegate', 'UIScrollViewDelegate', 'NSURLConnectionDownloadDelegate', 'UIGestureRecognizerDelegate', 'UINavigationBarDelegate', 'AVAudioMixing', 'NSFetchedResultsSectionInfo', 'UIDocumentInteractionControllerDelegate', 'MTLParallelRenderCommandEncoder', 'QLPreviewControllerDelegate', 'UIAccessibilityReadingContent', 'ABUnknownPersonViewControllerDelegate', 'GLKViewControllerDelegate', 'UICollectionViewDelegateFlowLayout', 'UIPopoverPresentationControllerDelegate', 'UIDynamicAnimatorDelegate', 'NSTextAttachmentContainer', 'MKAnnotation', 'UIAccessibilityIdentification', 'UICoordinateSpace', 'ABNewPersonViewControllerDelegate', 'MTLDevice', 'CAMediaTiming', 'AVCaptureFileOutputRecordingDelegate', 'HMHomeManagerDelegate', 'UITextViewDelegate', 'UITabBarDelegate', 'GKLeaderboardViewControllerDelegate', 'UISearchControllerDelegate', 'EAWiFiUnconfiguredAccessoryBrowserDelegate', 'UITextInputTraits', 'MTLRenderPipelineState', 'GKVoiceChatClient', 'UIKeyInput', 'UICollectionViewDataSource', 'SCNTechniqueSupport', 'NSLocking', 'AVCaptureFileOutputDelegate', 'GKChallengeEventHandlerDelegate', 'UIObjectRestoration', 'CIFilterConstructor', 'AVPlayerItemOutputPullDelegate', 'EAGLDrawable', 'AVVideoCompositionValidationHandling', 'UIViewControllerAnimatedTransitioning', 'NSURLSessionDownloadDelegate', 'UIAccelerometerDelegate', 'UIPageViewControllerDelegate', 'MTLCommandQueue', 'UIDataSourceModelAssociation', 'AVAudioRecorderDelegate', 'GKSessionDelegate', 'NSKeyedArchiverDelegate', 'CAMetalDrawable', 'UIDynamicItem', 'CLLocationManagerDelegate', 'NSMetadataQueryDelegate', 'NSNetServiceDelegate', 'GKMatchmakerViewControllerDelegate', 'NSURLSessionDataDelegate']) -COCOA_PRIMITIVES = set(['ROTAHeader', '__CFBundle', 'MortSubtable', 'AudioFilePacketTableInfo', 'CGPDFOperatorTable', 'KerxStateEntry', 'ExtendedTempoEvent', 'CTParagraphStyleSetting', 'OpaqueMIDIPort', '_GLKMatrix3', '_GLKMatrix2', '_GLKMatrix4', 'ExtendedControlEvent', 'CAFAudioDescription', 'OpaqueCMBlockBuffer', 'CGTextDrawingMode', 'EKErrorCode', 'GCAcceleration', 'AudioUnitParameterInfo', '__SCPreferences', '__CTFrame', '__CTLine', 'AudioFile_SMPTE_Time', 'gss_krb5_lucid_context_v1', 'OpaqueJSValue', 'TrakTableEntry', 'AudioFramePacketTranslation', 'CGImageSource', 'OpaqueJSPropertyNameAccumulator', 'JustPCGlyphRepeatAddAction', '__CFBinaryHeap', 'OpaqueMIDIThruConnection', 'opaqueCMBufferQueue', 'OpaqueMusicSequence', 'MortRearrangementSubtable', 'MixerDistanceParams', 'MorxSubtable', 'MIDIObjectPropertyChangeNotification', 'SFNTLookupSegment', 'CGImageMetadataErrors', 'CGPath', 'OpaqueMIDIEndpoint', 'AudioComponentPlugInInterface', 'gss_ctx_id_t_desc_struct', 'sfntFontFeatureSetting', 'OpaqueJSContextGroup', '__SCNetworkConnection', 'AudioUnitParameterValueTranslation', 'CGImageMetadataType', 'CGPattern', 'AudioFileTypeAndFormatID', 'CGContext', 'AUNodeInteraction', 'SFNTLookupTable', 'JustPCDecompositionAction', 'KerxControlPointHeader', 'AudioStreamPacketDescription', 'KernSubtableHeader', '__SecCertificate', 'AUMIDIOutputCallbackStruct', 'MIDIMetaEvent', 'AudioQueueChannelAssignment', 'AnchorPoint', 'JustTable', '__CFNetService', 'CF_BRIDGED_TYPE', 'gss_krb5_lucid_key', 'CGPDFDictionary', 'KerxSubtableHeader', 'CAF_UUID_ChunkHeader', 'gss_krb5_cfx_keydata', 'OpaqueJSClass', 'CGGradient', 'OpaqueMIDISetup', 'JustPostcompTable', '__CTParagraphStyle', 'AudioUnitParameterHistoryInfo', 'OpaqueJSContext', 'CGShading', 'MIDIThruConnectionParams', 'BslnFormat0Part', 'SFNTLookupSingle', '__CFHost', '__SecRandom', '__CTFontDescriptor', '_NSRange', 'sfntDirectory', 'AudioQueueLevelMeterState', 'CAFPositionPeak', 'PropLookupSegment', '__CVOpenGLESTextureCache', 'sfntInstance', '_GLKQuaternion', 'AnkrTable', '__SCNetworkProtocol', 'gss_buffer_desc_struct', 'CAFFileHeader', 'KerxOrderedListHeader', 'CGBlendMode', 'STXEntryOne', 'CAFRegion', 'SFNTLookupTrimmedArrayHeader', 'SCNMatrix4', 'KerxControlPointEntry', 'OpaqueMusicTrack', '_GLKVector4', 'gss_OID_set_desc_struct', 'OpaqueMusicPlayer', '_CFHTTPAuthentication', 'CGAffineTransform', 'CAFMarkerChunk', 'AUHostIdentifier', 'ROTAGlyphEntry', 'BslnTable', 'gss_krb5_lucid_context_version', '_GLKMatrixStack', 'CGImage', 'KernStateEntry', 'SFNTLookupSingleHeader', 'MortLigatureSubtable', 'CAFUMIDChunk', 'SMPTETime', 'CAFDataChunk', 'CGPDFStream', 'AudioFileRegionList', 'STEntryTwo', 'SFNTLookupBinarySearchHeader', 'OpbdTable', '__CTGlyphInfo', 'BslnFormat2Part', 'KerxIndexArrayHeader', 'TrakTable', 'KerxKerningPair', '__CFBitVector', 'KernVersion0SubtableHeader', 'OpaqueAudioComponentInstance', 'AudioChannelLayout', '__CFUUID', 'MIDISysexSendRequest', '__CFNumberFormatter', 'CGImageSourceStatus', 'AudioFileMarkerList', 'AUSamplerBankPresetData', 'CGDataProvider', 'AudioFormatInfo', '__SecIdentity', 'sfntCMapExtendedSubHeader', 'MIDIChannelMessage', 'KernOffsetTable', 'CGColorSpaceModel', 'MFMailComposeErrorCode', 'CGFunction', '__SecTrust', 'AVAudio3DAngularOrientation', 'CGFontPostScriptFormat', 'KernStateHeader', 'AudioUnitCocoaViewInfo', 'CGDataConsumer', 'OpaqueMIDIDevice', 'KernVersion0Header', 'AnchorPointTable', 'CGImageDestination', 'CAFInstrumentChunk', 'AudioUnitMeterClipping', 'MorxChain', '__CTFontCollection', 'STEntryOne', 'STXEntryTwo', 'ExtendedNoteOnEvent', 'CGColorRenderingIntent', 'KerxSimpleArrayHeader', 'MorxTable', '_GLKVector3', '_GLKVector2', 'MortTable', 'CGPDFBox', 'AudioUnitParameterValueFromString', '__CFSocket', 'ALCdevice_struct', 'MIDINoteMessage', 'sfntFeatureHeader', 'CGRect', '__SCNetworkInterface', '__CFTree', 'MusicEventUserData', 'TrakTableData', 'GCQuaternion', 'MortContextualSubtable', '__CTRun', 'AudioUnitFrequencyResponseBin', 'MortChain', 'MorxInsertionSubtable', 'CGImageMetadata', 'gss_auth_identity', 'AudioUnitMIDIControlMapping', 'CAFChunkHeader', 'CGImagePropertyOrientation', 'CGPDFScanner', 'OpaqueMusicEventIterator', 'sfntDescriptorHeader', 'AudioUnitNodeConnection', 'OpaqueMIDIDeviceList', 'ExtendedAudioFormatInfo', 'BslnFormat1Part', 'sfntFontDescriptor', 'KernSimpleArrayHeader', '__CFRunLoopObserver', 'CGPatternTiling', 'MIDINotification', 'MorxLigatureSubtable', 'MessageComposeResult', 'MIDIThruConnectionEndpoint', 'MusicDeviceStdNoteParams', 'opaqueCMSimpleQueue', 'ALCcontext_struct', 'OpaqueAudioQueue', 'PropLookupSingle', 'CGInterpolationQuality', 'CGColor', 'AudioOutputUnitStartAtTimeParams', 'gss_name_t_desc_struct', 'CGFunctionCallbacks', 'CAFPacketTableHeader', 'AudioChannelDescription', 'sfntFeatureName', 'MorxContextualSubtable', 'CVSMPTETime', 'AudioValueRange', 'CGTextEncoding', 'AudioStreamBasicDescription', 'AUNodeRenderCallback', 'AudioPanningInfo', 'KerxOrderedListEntry', '__CFAllocator', 'OpaqueJSPropertyNameArray', '__SCDynamicStore', 'OpaqueMIDIEntity', '__CTRubyAnnotation', 'SCNVector4', 'CFHostClientContext', 'CFNetServiceClientContext', 'AudioUnitPresetMAS_SettingData', 'opaqueCMBufferQueueTriggerToken', 'AudioUnitProperty', 'CAFRegionChunk', 'CGPDFString', '__GLsync', '__CFStringTokenizer', 'JustWidthDeltaEntry', 'sfntVariationAxis', '__CFNetDiagnostic', 'CAFOverviewSample', 'sfntCMapEncoding', 'CGVector', '__SCNetworkService', 'opaqueCMSampleBuffer', 'AUHostVersionIdentifier', 'AudioBalanceFade', 'sfntFontRunFeature', 'KerxCoordinateAction', 'sfntCMapSubHeader', 'CVPlanarPixelBufferInfo', 'AUNumVersion', 'AUSamplerInstrumentData', 'AUPreset', '__CTRunDelegate', 'OpaqueAudioQueueProcessingTap', 'KerxTableHeader', '_NSZone', 'OpaqueExtAudioFile', '__CFRunLoopSource', '__CVMetalTextureCache', 'KerxAnchorPointAction', 'OpaqueJSString', 'AudioQueueParameterEvent', '__CFHTTPMessage', 'OpaqueCMClock', 'ScheduledAudioFileRegion', 'STEntryZero', 'AVAudio3DPoint', 'gss_channel_bindings_struct', 'sfntVariationHeader', 'AUChannelInfo', 'UIOffset', 'GLKEffectPropertyPrv', 'KerxStateHeader', 'CGLineJoin', 'CGPDFDocument', '__CFBag', 'KernOrderedListHeader', '__SCNetworkSet', '__SecKey', 'MIDIObjectAddRemoveNotification', 'AudioUnitParameter', 'JustPCActionSubrecord', 'AudioComponentDescription', 'AudioUnitParameterValueName', 'AudioUnitParameterEvent', 'KerxControlPointAction', 'AudioTimeStamp', 'KernKerningPair', 'gss_buffer_set_desc_struct', 'MortFeatureEntry', 'FontVariation', 'CAFStringID', 'LcarCaretClassEntry', 'AudioUnitParameterStringFromValue', 'ACErrorCode', 'ALMXGlyphEntry', 'LtagTable', '__CTTypesetter', 'AuthorizationOpaqueRef', 'UIEdgeInsets', 'CGPathElement', 'CAFMarker', 'KernTableHeader', 'NoteParamsControlValue', 'SSLContext', 'gss_cred_id_t_desc_struct', 'AudioUnitParameterNameInfo', 'CGDataConsumerCallbacks', 'ALMXHeader', 'CGLineCap', 'MIDIControlTransform', 'CGPDFArray', '__SecPolicy', 'AudioConverterPrimeInfo', '__CTTextTab', '__CFNetServiceMonitor', 'AUInputSamplesInOutputCallbackStruct', '__CTFramesetter', 'CGPDFDataFormat', 'STHeader', 'CVPlanarPixelBufferInfo_YCbCrPlanar', 'MIDIValueMap', 'JustDirectionTable', '__SCBondStatus', 'SFNTLookupSegmentHeader', 'OpaqueCMMemoryPool', 'CGPathDrawingMode', 'CGFont', '__SCNetworkReachability', 'AudioClassDescription', 'CGPoint', 'AVAudio3DVectorOrientation', 'CAFStrings', '__CFNetServiceBrowser', 'opaqueMTAudioProcessingTap', 'sfntNameRecord', 'CGPDFPage', 'CGLayer', 'ComponentInstanceRecord', 'CAFInfoStrings', 'HostCallbackInfo', 'MusicDeviceNoteParams', 'OpaqueVTCompressionSession', 'KernIndexArrayHeader', 'CVPlanarPixelBufferInfo_YCbCrBiPlanar', 'MusicTrackLoopInfo', 'opaqueCMFormatDescription', 'STClassTable', 'sfntDirectoryEntry', 'OpaqueCMTimebase', 'CGDataProviderDirectCallbacks', 'MIDIPacketList', 'CAFOverviewChunk', 'MIDIPacket', 'ScheduledAudioSlice', 'CGDataProviderSequentialCallbacks', 'AudioBuffer', 'MorxRearrangementSubtable', 'CGPatternCallbacks', 'AUDistanceAttenuationData', 'MIDIIOErrorNotification', 'CGPDFContentStream', 'IUnknownVTbl', 'MIDITransform', 'MortInsertionSubtable', 'CABarBeatTime', 'AudioBufferList', '__CVBuffer', 'AURenderCallbackStruct', 'STXEntryZero', 'JustPCDuctilityAction', 'OpaqueAudioQueueTimeline', 'VTDecompressionOutputCallbackRecord', 'OpaqueMIDIClient', '__CFPlugInInstance', 'AudioQueueBuffer', '__CFFileDescriptor', 'AudioUnitConnection', '_GKTurnBasedExchangeStatus', 'LcarCaretTable', 'CVPlanarComponentInfo', 'JustWidthDeltaGroup', 'OpaqueAudioComponent', 'ParameterEvent', '__CVPixelBufferPool', '__CTFont', 'CGColorSpace', 'CGSize', 'AUDependentParameter', 'MIDIDriverInterface', 'gss_krb5_rfc1964_keydata', '__CFDateFormatter', 'LtagStringRange', 'OpaqueVTDecompressionSession', 'gss_iov_buffer_desc_struct', 'AUPresetEvent', 'PropTable', 'KernOrderedListEntry', 'CF_BRIDGED_MUTABLE_TYPE', 'gss_OID_desc_struct', 'AudioUnitPresetMAS_Settings', 'AudioFileMarker', 'JustPCConditionalAddAction', 'BslnFormat3Part', '__CFNotificationCenter', 'MortSwashSubtable', 'AUParameterMIDIMapping', 'SCNVector3', 'OpaqueAudioConverter', 'MIDIRawData', 'sfntNameHeader', '__CFRunLoop', 'MFMailComposeResult', 'CATransform3D', 'OpbdSideValues', 'CAF_SMPTE_Time', '__SecAccessControl', 'JustPCAction', 'OpaqueVTFrameSilo', 'OpaqueVTMultiPassStorage', 'CGPathElementType', 'AudioFormatListItem', 'AudioUnitExternalBuffer', 'AudioFileRegion', 'AudioValueTranslation', 'CGImageMetadataTag', 'CAFPeakChunk', 'AudioBytePacketTranslation', 'sfntCMapHeader', '__CFURLEnumerator', 'STXHeader', 'CGPDFObjectType', 'SFNTLookupArrayHeader']) - +COCOA_INTERFACES = set(['UITableViewCell', 'HKCorrelationQuery', 'NSURLSessionDataTask', 'PHFetchOptions', 'NSLinguisticTagger', 'NSStream', 'AVAudioUnitDelay', 'GCMotion', 'SKPhysicsWorld', 'NSString', 'CMAttitude', 'AVAudioEnvironmentDistanceAttenuationParameters', 'HKStatisticsCollection', 'SCNPlane', 'CBPeer', 'JSContext', 'SCNTransaction', 'SCNTorus', 'AVAudioUnitEffect', 'UICollectionReusableView', 'MTLSamplerDescriptor', 'AVAssetReaderSampleReferenceOutput', 'AVMutableCompositionTrack', 'GKLeaderboard', 'NSFetchedResultsController', 'SKRange', 'MKTileOverlayRenderer', 'MIDINetworkSession', 'UIVisualEffectView', 'CIWarpKernel', 'PKObject', 'MKRoute', 'MPVolumeView', 'UIPrintInfo', 'SCNText', 'ADClient', 'PKPayment', 'AVMutableAudioMix', 'GLKEffectPropertyLight', 'WKScriptMessage', 'AVMIDIPlayer', 'PHCollectionListChangeRequest', 'UICollectionViewLayout', 'NSMutableCharacterSet', 'SKPaymentTransaction', 'NEOnDemandRuleConnect', 'NSShadow', 'SCNView', 'NSURLSessionConfiguration', 'MTLVertexAttributeDescriptor', 'CBCharacteristic', 'HKQuantityType', 'CKLocationSortDescriptor', 'NEVPNIKEv2SecurityAssociationParameters', 'CMStepCounter', 'NSNetService', 'AVAssetWriterInputMetadataAdaptor', 'UICollectionView', 'UIViewPrintFormatter', 'SCNLevelOfDetail', 'CAShapeLayer', 'MCPeerID', 'MPRatingCommand', 'WKNavigation', 'NSDictionary', 'NSFileVersion', 'CMGyroData', 'AVAudioUnitDistortion', 'CKFetchRecordsOperation', 'SKPhysicsJointSpring', 'SCNHitTestResult', 'AVAudioTime', 'CIFilter', 'UIView', 'SCNConstraint', 'CAPropertyAnimation', 'MKMapItem', 'MPRemoteCommandCenter', 'PKPaymentSummaryItem', 'UICollectionViewFlowLayoutInvalidationContext', 'UIInputViewController', 'PKPass', 'SCNPhysicsBehavior', 'MTLRenderPassColorAttachmentDescriptor', 'MKPolygonRenderer', 'CKNotification', 'JSValue', 'PHCollectionList', 'CLGeocoder', 'NSByteCountFormatter', 'AVCaptureScreenInput', 'MPFeedbackCommand', 'CAAnimation', 'MKOverlayPathView', 'UIActionSheet', 'UIMotionEffectGroup', 'NSLengthFormatter', 'UIBarItem', 'SKProduct', 'AVAssetExportSession', 'NSKeyedUnarchiver', 'NSMutableSet', 'SCNPyramid', 'PHAssetCollection', 'MKMapView', 'HMHomeManager', 'CATransition', 'MTLCompileOptions', 'UIVibrancyEffect', 'CLCircularRegion', 'MKTileOverlay', 'SCNShape', 'ACAccountCredential', 'SKPhysicsJointLimit', 'MKMapSnapshotter', 'AVMediaSelectionGroup', 'NSIndexSet', 'CBPeripheralManager', 'CKRecordZone', 'AVAudioRecorder', 'NSURL', 'CBCentral', 'NSNumber', 'AVAudioOutputNode', 'MTLVertexAttributeDescriptorArray', 'MKETAResponse', 'SKTransition', 'SSReadingList', 'HKSourceQuery', 'UITableViewRowAction', 'UITableView', 'SCNParticlePropertyController', 'AVCaptureStillImageOutput', 'GCController', 'AVAudioPlayerNode', 'AVAudioSessionPortDescription', 'NSHTTPURLResponse', 'NEOnDemandRuleEvaluateConnection', 'SKEffectNode', 'HKQuantity', 'GCControllerElement', 'AVPlayerItemAccessLogEvent', 'SCNBox', 'NSExtensionContext', 'MKOverlayRenderer', 'SCNPhysicsVehicle', 'NSDecimalNumber', 'EKReminder', 'MKPolylineView', 'CKQuery', 'AVAudioMixerNode', 'GKAchievementDescription', 'EKParticipant', 'NSBlockOperation', 'UIActivityItemProvider', 'CLLocation', 'NSBatchUpdateRequest', 'PHContentEditingOutput', 'PHObjectChangeDetails', 'HKWorkoutType', 'MPMoviePlayerController', 'AVAudioFormat', 'HMTrigger', 'MTLRenderPassDepthAttachmentDescriptor', 'SCNRenderer', 'GKScore', 'UISplitViewController', 'HKSource', 'NSURLConnection', 'ABUnknownPersonViewController', 'SCNTechnique', 'UIMenuController', 'NSEvent', 'SKTextureAtlas', 'NSKeyedArchiver', 'GKLeaderboardSet', 'NSSimpleCString', 'AVAudioPCMBuffer', 'CBATTRequest', 'GKMatchRequest', 'AVMetadataObject', 'SKProductsRequest', 'UIAlertView', 'NSIncrementalStore', 'MFMailComposeViewController', 'SCNFloor', 'NSSortDescriptor', 'CKFetchNotificationChangesOperation', 'MPMovieAccessLog', 'NSManagedObjectContext', 'AVAudioUnitGenerator', 'WKBackForwardList', 'SKMutableTexture', 'AVCaptureAudioDataOutput', 'ACAccount', 'AVMetadataItem', 'MPRatingCommandEvent', 'AVCaptureDeviceInputSource', 'CLLocationManager', 'MPRemoteCommand', 'AVCaptureSession', 'UIStepper', 'UIRefreshControl', 'NEEvaluateConnectionRule', 'CKModifyRecordsOperation', 'UICollectionViewTransitionLayout', 'CBCentralManager', 'NSPurgeableData', 'PKShippingMethod', 'SLComposeViewController', 'NSHashTable', 'MKUserTrackingBarButtonItem', 'UILexiconEntry', 'CMMotionActivity', 'SKAction', 'SKShader', 'AVPlayerItemOutput', 'MTLRenderPassAttachmentDescriptor', 'UIDocumentInteractionController', 'UIDynamicItemBehavior', 'NSMutableDictionary', 'UILabel', 'AVCaptureInputPort', 'NSExpression', 'CAInterAppAudioTransportView', 'SKMutablePayment', 'UIImage', 'PHCachingImageManager', 'SCNTransformConstraint', 'HKCorrelationType', 'UIColor', 'SCNGeometrySource', 'AVCaptureAutoExposureBracketedStillImageSettings', 'UIPopoverBackgroundView', 'UIToolbar', 'NSNotificationCenter', 'UICollectionViewLayoutAttributes', 'AVAssetReaderOutputMetadataAdaptor', 'NSEntityMigrationPolicy', 'HMUser', 'NSLocale', 'NSURLSession', 'SCNCamera', 'NSTimeZone', 'UIManagedDocument', 'AVMutableVideoCompositionLayerInstruction', 'AVAssetTrackGroup', 'NSInvocationOperation', 'ALAssetRepresentation', 'AVQueuePlayer', 'HMServiceGroup', 'UIPasteboard', 'PHContentEditingInput', 'NSLayoutManager', 'EKCalendarChooser', 'EKObject', 'CATiledLayer', 'GLKReflectionMapEffect', 'NSManagedObjectID', 'NSEnergyFormatter', 'SLRequest', 'HMCharacteristic', 'AVPlayerLayer', 'MTLRenderPassDescriptor', 'SKPayment', 'NSPointerArray', 'AVAudioMix', 'SCNLight', 'MCAdvertiserAssistant', 'MKMapSnapshotOptions', 'HKCategorySample', 'AVAudioEnvironmentReverbParameters', 'SCNMorpher', 'AVTimedMetadataGroup', 'CBMutableCharacteristic', 'NSFetchRequest', 'UIDevice', 'NSManagedObject', 'NKAssetDownload', 'AVOutputSettingsAssistant', 'SKPhysicsJointPin', 'UITabBar', 'UITextInputMode', 'NSFetchRequestExpression', 'HMActionSet', 'CTSubscriber', 'PHAssetChangeRequest', 'NSPersistentStoreRequest', 'UITabBarController', 'HKQuantitySample', 'AVPlayerItem', 'AVSynchronizedLayer', 'MKDirectionsRequest', 'NSMetadataItem', 'UIPresentationController', 'UINavigationItem', 'PHFetchResultChangeDetails', 'PHImageManager', 'AVCaptureManualExposureBracketedStillImageSettings', 'UIStoryboardPopoverSegue', 'SCNLookAtConstraint', 'UIGravityBehavior', 'UIWindow', 'CBMutableDescriptor', 'NEOnDemandRuleDisconnect', 'UIBezierPath', 'UINavigationController', 'ABPeoplePickerNavigationController', 'EKSource', 'AVAssetWriterInput', 'AVPlayerItemTrack', 'GLKEffectPropertyTexture', 'NSHTTPCookie', 'NSURLResponse', 'SKPaymentQueue', 'NSAssertionHandler', 'MKReverseGeocoder', 'GCControllerAxisInput', 'NSArray', 'NSOrthography', 'NSURLSessionUploadTask', 'NSCharacterSet', 'AVMutableVideoCompositionInstruction', 'AVAssetReaderOutput', 'EAGLContext', 'WKFrameInfo', 'CMPedometer', 'MyClass', 'CKModifyBadgeOperation', 'AVCaptureAudioFileOutput', 'SKEmitterNode', 'NSMachPort', 'AVVideoCompositionCoreAnimationTool', 'PHCollection', 'SCNPhysicsWorld', 'NSURLRequest', 'CMAccelerometerData', 'NSNetServiceBrowser', 'CLFloor', 'AVAsynchronousVideoCompositionRequest', 'SCNGeometry', 'SCNIKConstraint', 'CIKernel', 'CAGradientLayer', 'HKCharacteristicType', 'NSFormatter', 'SCNAction', 'CATransaction', 'CBUUID', 'UIStoryboard', 'MPMediaLibrary', 'UITapGestureRecognizer', 'MPMediaItemArtwork', 'NSURLSessionTask', 'AVAudioUnit', 'MCBrowserViewController', 'UIFontDescriptor', 'NSRelationshipDescription', 'HKSample', 'WKWebView', 'NSMutableAttributedString', 'NSPersistentStoreAsynchronousResult', 'MPNowPlayingInfoCenter', 'MKLocalSearch', 'EAAccessory', 'HKCorrelation', 'CATextLayer', 'NSNotificationQueue', 'UINib', 'GLKTextureLoader', 'HKObjectType', 'NSValue', 'NSMutableIndexSet', 'SKPhysicsContact', 'NSProgress', 'AVPlayerViewController', 'CAScrollLayer', 'GKSavedGame', 'NSTextCheckingResult', 'PHObjectPlaceholder', 'SKConstraint', 'EKEventEditViewController', 'NSEntityDescription', 'NSURLCredentialStorage', 'UIApplication', 'SKDownload', 'SCNNode', 'MKLocalSearchRequest', 'SKScene', 'UISearchDisplayController', 'NEOnDemandRule', 'MTLRenderPassStencilAttachmentDescriptor', 'CAReplicatorLayer', 'UIPrintPageRenderer', 'EKCalendarItem', 'NSUUID', 'EAAccessoryManager', 'NEOnDemandRuleIgnore', 'SKRegion', 'AVAssetResourceLoader', 'EAWiFiUnconfiguredAccessoryBrowser', 'NSUserActivity', 'CTCall', 'UIPrinterPickerController', 'CIVector', 'UINavigationBar', 'UIPanGestureRecognizer', 'MPMediaQuery', 'ABNewPersonViewController', 'CKRecordZoneID', 'HKAnchoredObjectQuery', 'CKFetchRecordZonesOperation', 'UIStoryboardSegue', 'ACAccountType', 'GKSession', 'SKVideoNode', 'PHChange', 'SKReceiptRefreshRequest', 'GCExtendedGamepadSnapshot', 'MPSeekCommandEvent', 'GCExtendedGamepad', 'CAValueFunction', 'SCNCylinder', 'NSNotification', 'NSBatchUpdateResult', 'PKPushCredentials', 'SCNPhysicsSliderJoint', 'AVCaptureDeviceFormat', 'AVPlayerItemErrorLog', 'NSMapTable', 'NSSet', 'CMMotionManager', 'GKVoiceChatService', 'UIPageControl', 'UILexicon', 'MTLArrayType', 'AVAudioUnitReverb', 'MKGeodesicPolyline', 'AVMutableComposition', 'NSLayoutConstraint', 'UIPrinter', 'NSOrderedSet', 'CBAttribute', 'PKPushPayload', 'NSIncrementalStoreNode', 'EKEventStore', 'MPRemoteCommandEvent', 'UISlider', 'UIBlurEffect', 'CKAsset', 'AVCaptureInput', 'AVAudioEngine', 'MTLVertexDescriptor', 'SKPhysicsBody', 'NSOperation', 'PKPaymentPass', 'UIImageAsset', 'MKMapCamera', 'SKProductsResponse', 'GLKEffectPropertyMaterial', 'AVCaptureDevice', 'CTCallCenter', 'CABTMIDILocalPeripheralViewController', 'NEVPNManager', 'HKQuery', 'SCNPhysicsContact', 'CBMutableService', 'AVSampleBufferDisplayLayer', 'SCNSceneSource', 'SKLightNode', 'CKDiscoveredUserInfo', 'NSMutableArray', 'MTLDepthStencilDescriptor', 'MTLArgument', 'NSMassFormatter', 'CIRectangleFeature', 'PKPushRegistry', 'NEVPNConnection', 'MCNearbyServiceBrowser', 'NSOperationQueue', 'MKPolylineRenderer', 'HKWorkout', 'NSValueTransformer', 'UICollectionViewFlowLayout', 'MPChangePlaybackRateCommandEvent', 'NSEntityMapping', 'SKTexture', 'NSMergePolicy', 'UITextInputStringTokenizer', 'NSRecursiveLock', 'AVAsset', 'NSUndoManager', 'AVAudioUnitSampler', 'NSItemProvider', 'SKUniform', 'MPMediaPickerController', 'CKOperation', 'MTLRenderPipelineDescriptor', 'EAWiFiUnconfiguredAccessory', 'NSFileCoordinator', 'SKRequest', 'NSFileHandle', 'NSConditionLock', 'UISegmentedControl', 'NSManagedObjectModel', 'UITabBarItem', 'SCNCone', 'MPMediaItem', 'SCNMaterial', 'EKRecurrenceRule', 'UIEvent', 'UITouch', 'UIPrintInteractionController', 'CMDeviceMotion', 'NEVPNProtocol', 'NSCompoundPredicate', 'HKHealthStore', 'MKMultiPoint', 'HKSampleType', 'UIPrintFormatter', 'AVAudioUnitEQFilterParameters', 'SKView', 'NSConstantString', 'UIPopoverController', 'CKDatabase', 'AVMetadataFaceObject', 'UIAccelerometer', 'EKEventViewController', 'CMAltitudeData', 'MTLStencilDescriptor', 'UISwipeGestureRecognizer', 'NSPort', 'MKCircleRenderer', 'AVCompositionTrack', 'NSAsynchronousFetchRequest', 'NSUbiquitousKeyValueStore', 'NSMetadataQueryResultGroup', 'AVAssetResourceLoadingDataRequest', 'UITableViewHeaderFooterView', 'CKNotificationID', 'AVAudioSession', 'HKUnit', 'NSNull', 'NSPersistentStoreResult', 'MKCircleView', 'AVAudioChannelLayout', 'NEVPNProtocolIKEv2', 'WKProcessPool', 'UIAttachmentBehavior', 'CLBeacon', 'NSInputStream', 'NSURLCache', 'GKPlayer', 'NSMappingModel', 'CIQRCodeFeature', 'AVMutableVideoComposition', 'PHFetchResult', 'NSAttributeDescription', 'AVPlayer', 'MKAnnotationView', 'PKPaymentRequest', 'NSTimer', 'CBDescriptor', 'MKOverlayView', 'AVAudioUnitTimePitch', 'NSSaveChangesRequest', 'UIReferenceLibraryViewController', 'SKPhysicsJointFixed', 'UILocalizedIndexedCollation', 'UIInterpolatingMotionEffect', 'UIDocumentPickerViewController', 'AVAssetWriter', 'NSBundle', 'SKStoreProductViewController', 'GLKViewController', 'NSMetadataQueryAttributeValueTuple', 'GKTurnBasedMatch', 'AVAudioFile', 'UIActivity', 'NSPipe', 'MKShape', 'NSMergeConflict', 'CIImage', 'HKObject', 'UIRotationGestureRecognizer', 'AVPlayerItemLegibleOutput', 'AVAssetImageGenerator', 'GCControllerButtonInput', 'CKMarkNotificationsReadOperation', 'CKSubscription', 'MPTimedMetadata', 'NKIssue', 'UIScreenMode', 'HMAccessoryBrowser', 'GKTurnBasedEventHandler', 'UIWebView', 'MKPolyline', 'JSVirtualMachine', 'AVAssetReader', 'NSAttributedString', 'GKMatchmakerViewController', 'NSCountedSet', 'UIButton', 'WKNavigationResponse', 'GKLocalPlayer', 'MPMovieErrorLog', 'AVSpeechUtterance', 'HKStatistics', 'UILocalNotification', 'HKBiologicalSexObject', 'AVURLAsset', 'CBPeripheral', 'NSDateComponentsFormatter', 'SKSpriteNode', 'UIAccessibilityElement', 'AVAssetWriterInputGroup', 'HMZone', 'AVAssetReaderAudioMixOutput', 'NSEnumerator', 'UIDocument', 'MKLocalSearchResponse', 'UISimpleTextPrintFormatter', 'PHPhotoLibrary', 'CBService', 'UIDocumentMenuViewController', 'MCSession', 'QLPreviewController', 'CAMediaTimingFunction', 'UITextPosition', 'ASIdentifierManager', 'AVAssetResourceLoadingRequest', 'SLComposeServiceViewController', 'UIPinchGestureRecognizer', 'PHObject', 'NSExtensionItem', 'HKSampleQuery', 'MTLRenderPipelineColorAttachmentDescriptorArray', 'MKRouteStep', 'SCNCapsule', 'NSMetadataQuery', 'AVAssetResourceLoadingContentInformationRequest', 'UITraitCollection', 'CTCarrier', 'NSFileSecurity', 'UIAcceleration', 'UIMotionEffect', 'MTLRenderPipelineReflection', 'CLHeading', 'CLVisit', 'MKDirectionsResponse', 'HMAccessory', 'MTLStructType', 'UITextView', 'CMMagnetometerData', 'UICollisionBehavior', 'UIProgressView', 'CKServerChangeToken', 'UISearchBar', 'MKPlacemark', 'AVCaptureConnection', 'NSPropertyMapping', 'ALAssetsFilter', 'SK3DNode', 'AVPlayerItemErrorLogEvent', 'NSJSONSerialization', 'AVAssetReaderVideoCompositionOutput', 'ABPersonViewController', 'CIDetector', 'GKTurnBasedMatchmakerViewController', 'MPMediaItemCollection', 'SCNSphere', 'NSCondition', 'NSURLCredential', 'MIDINetworkConnection', 'NSFileProviderExtension', 'NSDecimalNumberHandler', 'NSAtomicStoreCacheNode', 'NSAtomicStore', 'EKAlarm', 'CKNotificationInfo', 'AVAudioUnitEQ', 'UIPercentDrivenInteractiveTransition', 'MKPolygon', 'AVAssetTrackSegment', 'MTLVertexAttribute', 'NSExpressionDescription', 'HKStatisticsCollectionQuery', 'NSURLAuthenticationChallenge', 'NSDirectoryEnumerator', 'MKDistanceFormatter', 'UIAlertAction', 'NSPropertyListSerialization', 'GKPeerPickerController', 'UIUserNotificationSettings', 'UITableViewController', 'GKNotificationBanner', 'MKPointAnnotation', 'MTLRenderPassColorAttachmentDescriptorArray', 'NSCache', 'SKPhysicsJoint', 'NSXMLParser', 'UIViewController', 'PKPaymentToken', 'MFMessageComposeViewController', 'AVAudioInputNode', 'NSDataDetector', 'CABTMIDICentralViewController', 'AVAudioUnitMIDIInstrument', 'AVCaptureVideoPreviewLayer', 'AVAssetWriterInputPassDescription', 'MPChangePlaybackRateCommand', 'NSURLComponents', 'CAMetalLayer', 'UISnapBehavior', 'AVMetadataMachineReadableCodeObject', 'CKDiscoverUserInfosOperation', 'NSTextAttachment', 'NSException', 'UIMenuItem', 'CMMotionActivityManager', 'SCNGeometryElement', 'NCWidgetController', 'CAEmitterLayer', 'MKUserLocation', 'UIImagePickerController', 'CIFeature', 'AVCaptureDeviceInput', 'ALAsset', 'NSURLSessionDownloadTask', 'SCNPhysicsHingeJoint', 'MPMoviePlayerViewController', 'NSMutableOrderedSet', 'SCNMaterialProperty', 'UIFont', 'AVCaptureVideoDataOutput', 'NSCachedURLResponse', 'ALAssetsLibrary', 'NSInvocation', 'UILongPressGestureRecognizer', 'NSTextStorage', 'WKWebViewConfiguration', 'CIFaceFeature', 'MKMapSnapshot', 'GLKEffectPropertyFog', 'AVComposition', 'CKDiscoverAllContactsOperation', 'AVAudioMixInputParameters', 'CAEmitterBehavior', 'PKPassLibrary', 'UIMutableUserNotificationCategory', 'NSLock', 'NEVPNProtocolIPSec', 'ADBannerView', 'UIDocumentPickerExtensionViewController', 'UIActivityIndicatorView', 'AVPlayerMediaSelectionCriteria', 'CALayer', 'UIAccessibilityCustomAction', 'UIBarButtonItem', 'AVAudioSessionRouteDescription', 'CLBeaconRegion', 'HKBloodTypeObject', 'MTLVertexBufferLayoutDescriptorArray', 'CABasicAnimation', 'AVVideoCompositionInstruction', 'AVMutableTimedMetadataGroup', 'EKRecurrenceEnd', 'NSTextContainer', 'TWTweetComposeViewController', 'PKPaymentAuthorizationViewController', 'UIScrollView', 'WKNavigationAction', 'AVPlayerItemMetadataOutput', 'EKRecurrenceDayOfWeek', 'NSNumberFormatter', 'MTLComputePipelineReflection', 'UIScreen', 'CLRegion', 'NSProcessInfo', 'GLKTextureInfo', 'SCNSkinner', 'AVCaptureMetadataOutput', 'SCNAnimationEvent', 'NSTextTab', 'JSManagedValue', 'NSDate', 'UITextChecker', 'WKBackForwardListItem', 'NSData', 'NSParagraphStyle', 'AVMutableMetadataItem', 'EKCalendar', 'HKWorkoutEvent', 'NSMutableURLRequest', 'UIVideoEditorController', 'HMTimerTrigger', 'AVAudioUnitVarispeed', 'UIDynamicAnimator', 'AVCompositionTrackSegment', 'GCGamepadSnapshot', 'MPMediaEntity', 'GLKSkyboxEffect', 'UISwitch', 'EKStructuredLocation', 'UIGestureRecognizer', 'NSProxy', 'GLKBaseEffect', 'UIPushBehavior', 'GKScoreChallenge', 'NSCoder', 'MPMediaPlaylist', 'NSDateComponents', 'WKUserScript', 'EKEvent', 'NSDateFormatter', 'NSAsynchronousFetchResult', 'AVAssetWriterInputPixelBufferAdaptor', 'UIVisualEffect', 'UICollectionViewCell', 'UITextField', 'CLPlacemark', 'MPPlayableContentManager', 'AVCaptureOutput', 'HMCharacteristicWriteAction', 'CKModifySubscriptionsOperation', 'NSPropertyDescription', 'GCGamepad', 'UIMarkupTextPrintFormatter', 'SCNTube', 'NSPersistentStoreCoordinator', 'AVAudioEnvironmentNode', 'GKMatchmaker', 'CIContext', 'NSThread', 'SLComposeSheetConfigurationItem', 'SKPhysicsJointSliding', 'NSPredicate', 'GKVoiceChat', 'SKCropNode', 'AVCaptureAudioPreviewOutput', 'NSStringDrawingContext', 'GKGameCenterViewController', 'UIPrintPaper', 'SCNPhysicsBallSocketJoint', 'UICollectionViewLayoutInvalidationContext', 'GLKEffectPropertyTransform', 'AVAudioIONode', 'UIDatePicker', 'MKDirections', 'ALAssetsGroup', 'CKRecordZoneNotification', 'SCNScene', 'MPMovieAccessLogEvent', 'CKFetchSubscriptionsOperation', 'CAEmitterCell', 'AVAudioUnitTimeEffect', 'HMCharacteristicMetadata', 'MKPinAnnotationView', 'UIPickerView', 'UIImageView', 'UIUserNotificationCategory', 'SCNPhysicsVehicleWheel', 'HKCategoryType', 'MPMediaQuerySection', 'GKFriendRequestComposeViewController', 'NSError', 'MTLRenderPipelineColorAttachmentDescriptor', 'SCNPhysicsShape', 'UISearchController', 'SCNPhysicsBody', 'CTSubscriberInfo', 'AVPlayerItemAccessLog', 'MPMediaPropertyPredicate', 'CMLogItem', 'NSAutoreleasePool', 'NSSocketPort', 'AVAssetReaderTrackOutput', 'SKNode', 'UIMutableUserNotificationAction', 'SCNProgram', 'AVSpeechSynthesisVoice', 'CMAltimeter', 'AVCaptureAudioChannel', 'GKTurnBasedExchangeReply', 'AVVideoCompositionLayerInstruction', 'AVSpeechSynthesizer', 'GKChallengeEventHandler', 'AVCaptureFileOutput', 'UIControl', 'SCNPhysicsField', 'CKReference', 'LAContext', 'CKRecordID', 'ADInterstitialAd', 'AVAudioSessionDataSourceDescription', 'AVAudioBuffer', 'CIColorKernel', 'GCControllerDirectionPad', 'NSFileManager', 'AVMutableAudioMixInputParameters', 'UIScreenEdgePanGestureRecognizer', 'CAKeyframeAnimation', 'CKQueryNotification', 'PHAdjustmentData', 'EASession', 'AVAssetResourceRenewalRequest', 'UIInputView', 'NSFileWrapper', 'UIResponder', 'NSPointerFunctions', 'UIKeyCommand', 'NSHTTPCookieStorage', 'AVMediaSelectionOption', 'NSRunLoop', 'NSFileAccessIntent', 'CAAnimationGroup', 'MKCircle', 'UIAlertController', 'NSMigrationManager', 'NSDateIntervalFormatter', 'UICollectionViewUpdateItem', 'CKDatabaseOperation', 'PHImageRequestOptions', 'SKReachConstraints', 'CKRecord', 'CAInterAppAudioSwitcherView', 'WKWindowFeatures', 'GKInvite', 'NSMutableData', 'PHAssetCollectionChangeRequest', 'NSMutableParagraphStyle', 'UIDynamicBehavior', 'GLKEffectProperty', 'CKFetchRecordChangesOperation', 'SKShapeNode', 'MPMovieErrorLogEvent', 'MKPolygonView', 'MPContentItem', 'HMAction', 'NSScanner', 'GKAchievementChallenge', 'AVAudioPlayer', 'CKContainer', 'AVVideoComposition', 'NKLibrary', 'NSPersistentStore', 'AVCaptureMovieFileOutput', 'HMRoom', 'GKChallenge', 'UITextRange', 'NSURLProtectionSpace', 'ACAccountStore', 'MPSkipIntervalCommand', 'NSComparisonPredicate', 'HMHome', 'PHVideoRequestOptions', 'NSOutputStream', 'MPSkipIntervalCommandEvent', 'PKAddPassesViewController', 'UITextSelectionRect', 'CTTelephonyNetworkInfo', 'AVTextStyleRule', 'NSFetchedPropertyDescription', 'UIPageViewController', 'CATransformLayer', 'UICollectionViewController', 'AVAudioNode', 'MCNearbyServiceAdvertiser', 'NSObject', 'PHAsset', 'GKLeaderboardViewController', 'CKQueryCursor', 'MPMusicPlayerController', 'MKOverlayPathRenderer', 'CMPedometerData', 'HMService', 'SKFieldNode', 'GKAchievement', 'WKUserContentController', 'AVAssetTrack', 'TWRequest', 'SKLabelNode', 'AVCaptureBracketedStillImageSettings', 'MIDINetworkHost', 'MPMediaPredicate', 'AVFrameRateRange', 'MTLTextureDescriptor', 'MTLVertexBufferLayoutDescriptor', 'MPFeedbackCommandEvent', 'UIUserNotificationAction', 'HKStatisticsQuery', 'SCNParticleSystem', 'NSIndexPath', 'AVVideoCompositionRenderContext', 'CADisplayLink', 'HKObserverQuery', 'UIPopoverPresentationController', 'CKQueryOperation', 'CAEAGLLayer', 'NSMutableString', 'NSMessagePort', 'NSURLQueryItem', 'MTLStructMember', 'AVAudioSessionChannelDescription', 'GLKView', 'UIActivityViewController', 'GKAchievementViewController', 'GKTurnBasedParticipant', 'NSURLProtocol', 'NSUserDefaults', 'NSCalendar', 'SKKeyframeSequence', 'AVMetadataItemFilter', 'CKModifyRecordZonesOperation', 'WKPreferences', 'NSMethodSignature', 'NSRegularExpression', 'EAGLSharegroup', 'AVPlayerItemVideoOutput', 'PHContentEditingInputRequestOptions', 'GKMatch', 'CIColor', 'UIDictationPhrase']) +COCOA_PROTOCOLS = set(['SKStoreProductViewControllerDelegate', 'AVVideoCompositionInstruction', 'AVAudioSessionDelegate', 'GKMatchDelegate', 'NSFileManagerDelegate', 'UILayoutSupport', 'NSCopying', 'UIPrintInteractionControllerDelegate', 'QLPreviewControllerDataSource', 'SKProductsRequestDelegate', 'NSTextStorageDelegate', 'MCBrowserViewControllerDelegate', 'MTLComputeCommandEncoder', 'SCNSceneExportDelegate', 'UISearchResultsUpdating', 'MFMailComposeViewControllerDelegate', 'MTLBlitCommandEncoder', 'NSDecimalNumberBehaviors', 'PHContentEditingController', 'NSMutableCopying', 'UIActionSheetDelegate', 'UIViewControllerTransitioningDelegate', 'UIAlertViewDelegate', 'AVAudioPlayerDelegate', 'MKReverseGeocoderDelegate', 'NSCoding', 'UITextInputTokenizer', 'GKFriendRequestComposeViewControllerDelegate', 'UIActivityItemSource', 'NSCacheDelegate', 'UIAdaptivePresentationControllerDelegate', 'GKAchievementViewControllerDelegate', 'UIViewControllerTransitionCoordinator', 'EKEventEditViewDelegate', 'NSURLConnectionDelegate', 'UITableViewDelegate', 'GKPeerPickerControllerDelegate', 'UIGuidedAccessRestrictionDelegate', 'AVSpeechSynthesizerDelegate', 'AVAudio3DMixing', 'AVPlayerItemLegibleOutputPushDelegate', 'ADInterstitialAdDelegate', 'HMAccessoryBrowserDelegate', 'AVAssetResourceLoaderDelegate', 'UITabBarControllerDelegate', 'CKRecordValue', 'SKPaymentTransactionObserver', 'AVCaptureAudioDataOutputSampleBufferDelegate', 'UIInputViewAudioFeedback', 'GKChallengeListener', 'SKSceneDelegate', 'UIPickerViewDelegate', 'UIWebViewDelegate', 'UIApplicationDelegate', 'GKInviteEventListener', 'MPMediaPlayback', 'MyClassJavaScriptMethods', 'AVAsynchronousKeyValueLoading', 'QLPreviewItem', 'SCNBoundingVolume', 'NSPortDelegate', 'UIContentContainer', 'SCNNodeRendererDelegate', 'SKRequestDelegate', 'SKPhysicsContactDelegate', 'HMAccessoryDelegate', 'UIPageViewControllerDataSource', 'SCNSceneRendererDelegate', 'SCNPhysicsContactDelegate', 'MKMapViewDelegate', 'AVPlayerItemOutputPushDelegate', 'UICollectionViewDelegate', 'UIImagePickerControllerDelegate', 'MTLRenderCommandEncoder', 'PKPaymentAuthorizationViewControllerDelegate', 'UIToolbarDelegate', 'WKUIDelegate', 'SCNActionable', 'NSURLConnectionDataDelegate', 'MKOverlay', 'CBCentralManagerDelegate', 'JSExport', 'NSTextLayoutOrientationProvider', 'UIPickerViewDataSource', 'PKPushRegistryDelegate', 'UIViewControllerTransitionCoordinatorContext', 'NSLayoutManagerDelegate', 'MTLLibrary', 'NSFetchedResultsControllerDelegate', 'ABPeoplePickerNavigationControllerDelegate', 'MTLResource', 'NSDiscardableContent', 'UITextFieldDelegate', 'MTLBuffer', 'MTLSamplerState', 'GKGameCenterControllerDelegate', 'MPMediaPickerControllerDelegate', 'UISplitViewControllerDelegate', 'UIAppearance', 'UIPickerViewAccessibilityDelegate', 'UITraitEnvironment', 'UIScrollViewAccessibilityDelegate', 'ADBannerViewDelegate', 'MPPlayableContentDataSource', 'MTLComputePipelineState', 'NSURLSessionDelegate', 'MTLCommandBuffer', 'NSXMLParserDelegate', 'UIViewControllerRestoration', 'UISearchBarDelegate', 'UIBarPositioning', 'CBPeripheralDelegate', 'UISearchDisplayDelegate', 'CAAction', 'PKAddPassesViewControllerDelegate', 'MCNearbyServiceAdvertiserDelegate', 'MTLDepthStencilState', 'GKTurnBasedMatchmakerViewControllerDelegate', 'MPPlayableContentDelegate', 'AVCaptureVideoDataOutputSampleBufferDelegate', 'UIAppearanceContainer', 'UIStateRestoring', 'UITextDocumentProxy', 'MTLDrawable', 'NSURLSessionTaskDelegate', 'NSFilePresenter', 'AVAudioStereoMixing', 'UIViewControllerContextTransitioning', 'UITextInput', 'CBPeripheralManagerDelegate', 'UITextInputDelegate', 'NSFastEnumeration', 'NSURLAuthenticationChallengeSender', 'SCNProgramDelegate', 'AVVideoCompositing', 'SCNAnimatable', 'NSSecureCoding', 'MCAdvertiserAssistantDelegate', 'GKLocalPlayerListener', 'GLKNamedEffect', 'UIPopoverControllerDelegate', 'AVCaptureMetadataOutputObjectsDelegate', 'NSExtensionRequestHandling', 'UITextSelecting', 'UIPrinterPickerControllerDelegate', 'NCWidgetProviding', 'MTLCommandEncoder', 'NSURLProtocolClient', 'MFMessageComposeViewControllerDelegate', 'UIVideoEditorControllerDelegate', 'WKNavigationDelegate', 'GKSavedGameListener', 'UITableViewDataSource', 'MTLFunction', 'EKCalendarChooserDelegate', 'NSUserActivityDelegate', 'UICollisionBehaviorDelegate', 'NSStreamDelegate', 'MCNearbyServiceBrowserDelegate', 'HMHomeDelegate', 'UINavigationControllerDelegate', 'MCSessionDelegate', 'UIDocumentPickerDelegate', 'UIViewControllerInteractiveTransitioning', 'GKTurnBasedEventListener', 'SCNSceneRenderer', 'MTLTexture', 'GLKViewDelegate', 'EAAccessoryDelegate', 'WKScriptMessageHandler', 'PHPhotoLibraryChangeObserver', 'NSKeyedUnarchiverDelegate', 'AVPlayerItemMetadataOutputPushDelegate', 'NSMachPortDelegate', 'SCNShadable', 'UIPopoverBackgroundViewMethods', 'UIDocumentMenuDelegate', 'UIBarPositioningDelegate', 'ABPersonViewControllerDelegate', 'NSNetServiceBrowserDelegate', 'EKEventViewDelegate', 'UIScrollViewDelegate', 'NSURLConnectionDownloadDelegate', 'UIGestureRecognizerDelegate', 'UINavigationBarDelegate', 'AVAudioMixing', 'NSFetchedResultsSectionInfo', 'UIDocumentInteractionControllerDelegate', 'MTLParallelRenderCommandEncoder', 'QLPreviewControllerDelegate', 'UIAccessibilityReadingContent', 'ABUnknownPersonViewControllerDelegate', 'GLKViewControllerDelegate', 'UICollectionViewDelegateFlowLayout', 'UIPopoverPresentationControllerDelegate', 'UIDynamicAnimatorDelegate', 'NSTextAttachmentContainer', 'MKAnnotation', 'UIAccessibilityIdentification', 'UICoordinateSpace', 'ABNewPersonViewControllerDelegate', 'MTLDevice', 'CAMediaTiming', 'AVCaptureFileOutputRecordingDelegate', 'HMHomeManagerDelegate', 'UITextViewDelegate', 'UITabBarDelegate', 'GKLeaderboardViewControllerDelegate', 'UISearchControllerDelegate', 'EAWiFiUnconfiguredAccessoryBrowserDelegate', 'UITextInputTraits', 'MTLRenderPipelineState', 'GKVoiceChatClient', 'UIKeyInput', 'UICollectionViewDataSource', 'SCNTechniqueSupport', 'NSLocking', 'AVCaptureFileOutputDelegate', 'GKChallengeEventHandlerDelegate', 'UIObjectRestoration', 'CIFilterConstructor', 'AVPlayerItemOutputPullDelegate', 'EAGLDrawable', 'AVVideoCompositionValidationHandling', 'UIViewControllerAnimatedTransitioning', 'NSURLSessionDownloadDelegate', 'UIAccelerometerDelegate', 'UIPageViewControllerDelegate', 'MTLCommandQueue', 'UIDataSourceModelAssociation', 'AVAudioRecorderDelegate', 'GKSessionDelegate', 'NSKeyedArchiverDelegate', 'CAMetalDrawable', 'UIDynamicItem', 'CLLocationManagerDelegate', 'NSMetadataQueryDelegate', 'NSNetServiceDelegate', 'GKMatchmakerViewControllerDelegate', 'NSURLSessionDataDelegate']) +COCOA_PRIMITIVES = set(['ROTAHeader', '__CFBundle', 'MortSubtable', 'AudioFilePacketTableInfo', 'CGPDFOperatorTable', 'KerxStateEntry', 'ExtendedTempoEvent', 'CTParagraphStyleSetting', 'OpaqueMIDIPort', '_GLKMatrix3', '_GLKMatrix2', '_GLKMatrix4', 'ExtendedControlEvent', 'CAFAudioDescription', 'OpaqueCMBlockBuffer', 'CGTextDrawingMode', 'EKErrorCode', 'gss_buffer_desc_struct', 'AudioUnitParameterInfo', '__SCPreferences', '__CTFrame', '__CTLine', 'AudioFile_SMPTE_Time', 'gss_krb5_lucid_context_v1', 'OpaqueJSValue', 'TrakTableEntry', 'AudioFramePacketTranslation', 'CGImageSource', 'OpaqueJSPropertyNameAccumulator', 'JustPCGlyphRepeatAddAction', '__CFBinaryHeap', 'OpaqueMIDIThruConnection', 'opaqueCMBufferQueue', 'OpaqueMusicSequence', 'MortRearrangementSubtable', 'MixerDistanceParams', 'MorxSubtable', 'MIDIObjectPropertyChangeNotification', 'SFNTLookupSegment', 'CGImageMetadataErrors', 'CGPath', 'OpaqueMIDIEndpoint', 'AudioComponentPlugInInterface', 'gss_ctx_id_t_desc_struct', 'sfntFontFeatureSetting', 'OpaqueJSContextGroup', '__SCNetworkConnection', 'AudioUnitParameterValueTranslation', 'CGImageMetadataType', 'CGPattern', 'AudioFileTypeAndFormatID', 'CGContext', 'AUNodeInteraction', 'SFNTLookupTable', 'JustPCDecompositionAction', 'KerxControlPointHeader', 'AudioStreamPacketDescription', 'KernSubtableHeader', '__SecCertificate', 'AUMIDIOutputCallbackStruct', 'MIDIMetaEvent', 'AudioQueueChannelAssignment', 'AnchorPoint', 'JustTable', '__CFNetService', 'CF_BRIDGED_TYPE', 'gss_krb5_lucid_key', 'CGPDFDictionary', 'KerxSubtableHeader', 'CAF_UUID_ChunkHeader', 'gss_krb5_cfx_keydata', 'OpaqueJSClass', 'CGGradient', 'OpaqueMIDISetup', 'JustPostcompTable', '__CTParagraphStyle', 'AudioUnitParameterHistoryInfo', 'OpaqueJSContext', 'CGShading', 'MIDIThruConnectionParams', 'BslnFormat0Part', 'SFNTLookupSingle', '__CFHost', '__SecRandom', '__CTFontDescriptor', '_NSRange', 'sfntDirectory', 'AudioQueueLevelMeterState', 'CAFPositionPeak', 'PropLookupSegment', '__CVOpenGLESTextureCache', 'sfntInstance', '_GLKQuaternion', 'AnkrTable', '__SCNetworkProtocol', 'CAFFileHeader', 'KerxOrderedListHeader', 'CGBlendMode', 'STXEntryOne', 'CAFRegion', 'SFNTLookupTrimmedArrayHeader', 'SCNMatrix4', 'KerxControlPointEntry', 'OpaqueMusicTrack', '_GLKVector4', 'gss_OID_set_desc_struct', 'OpaqueMusicPlayer', '_CFHTTPAuthentication', 'CGAffineTransform', 'CAFMarkerChunk', 'AUHostIdentifier', 'ROTAGlyphEntry', 'BslnTable', 'gss_krb5_lucid_context_version', '_GLKMatrixStack', 'CGImage', 'KernStateEntry', 'SFNTLookupSingleHeader', 'MortLigatureSubtable', 'CAFUMIDChunk', 'SMPTETime', 'CAFDataChunk', 'CGPDFStream', 'AudioFileRegionList', 'STEntryTwo', 'SFNTLookupBinarySearchHeader', 'OpbdTable', '__CTGlyphInfo', 'BslnFormat2Part', 'KerxIndexArrayHeader', 'TrakTable', 'KerxKerningPair', '__CFBitVector', 'KernVersion0SubtableHeader', 'OpaqueAudioComponentInstance', 'AudioChannelLayout', '__CFUUID', 'MIDISysexSendRequest', '__CFNumberFormatter', 'CGImageSourceStatus', 'AudioFileMarkerList', 'AUSamplerBankPresetData', 'CGDataProvider', 'AudioFormatInfo', '__SecIdentity', 'sfntCMapExtendedSubHeader', 'MIDIChannelMessage', 'KernOffsetTable', 'CGColorSpaceModel', 'MFMailComposeErrorCode', 'CGFunction', '__SecTrust', 'AVAudio3DAngularOrientation', 'CGFontPostScriptFormat', 'KernStateHeader', 'AudioUnitCocoaViewInfo', 'CGDataConsumer', 'OpaqueMIDIDevice', 'KernVersion0Header', 'AnchorPointTable', 'CGImageDestination', 'CAFInstrumentChunk', 'AudioUnitMeterClipping', 'MorxChain', '__CTFontCollection', 'STEntryOne', 'STXEntryTwo', 'ExtendedNoteOnEvent', 'CGColorRenderingIntent', 'KerxSimpleArrayHeader', 'MorxTable', '_GLKVector3', '_GLKVector2', 'MortTable', 'CGPDFBox', 'AudioUnitParameterValueFromString', '__CFSocket', 'ALCdevice_struct', 'MIDINoteMessage', 'sfntFeatureHeader', 'CGRect', '__SCNetworkInterface', '__CFTree', 'MusicEventUserData', 'TrakTableData', 'GCQuaternion', 'MortContextualSubtable', '__CTRun', 'AudioUnitFrequencyResponseBin', 'MortChain', 'MorxInsertionSubtable', 'CGImageMetadata', 'gss_auth_identity', 'AudioUnitMIDIControlMapping', 'CAFChunkHeader', 'CGImagePropertyOrientation', 'CGPDFScanner', 'OpaqueMusicEventIterator', 'sfntDescriptorHeader', 'AudioUnitNodeConnection', 'OpaqueMIDIDeviceList', 'ExtendedAudioFormatInfo', 'BslnFormat1Part', 'sfntFontDescriptor', 'KernSimpleArrayHeader', '__CFRunLoopObserver', 'CGPatternTiling', 'MIDINotification', 'MorxLigatureSubtable', 'MessageComposeResult', 'MIDIThruConnectionEndpoint', 'MusicDeviceStdNoteParams', 'opaqueCMSimpleQueue', 'ALCcontext_struct', 'OpaqueAudioQueue', 'PropLookupSingle', 'CGInterpolationQuality', 'CGColor', 'AudioOutputUnitStartAtTimeParams', 'gss_name_t_desc_struct', 'CGFunctionCallbacks', 'CAFPacketTableHeader', 'AudioChannelDescription', 'sfntFeatureName', 'MorxContextualSubtable', 'CVSMPTETime', 'AudioValueRange', 'CGTextEncoding', 'AudioStreamBasicDescription', 'AUNodeRenderCallback', 'AudioPanningInfo', 'KerxOrderedListEntry', '__CFAllocator', 'OpaqueJSPropertyNameArray', '__SCDynamicStore', 'OpaqueMIDIEntity', '__CTRubyAnnotation', 'SCNVector4', 'CFHostClientContext', 'CFNetServiceClientContext', 'AudioUnitPresetMAS_SettingData', 'opaqueCMBufferQueueTriggerToken', 'AudioUnitProperty', 'CAFRegionChunk', 'CGPDFString', '__GLsync', '__CFStringTokenizer', 'JustWidthDeltaEntry', 'sfntVariationAxis', '__CFNetDiagnostic', 'CAFOverviewSample', 'sfntCMapEncoding', 'CGVector', '__SCNetworkService', 'opaqueCMSampleBuffer', 'AUHostVersionIdentifier', 'AudioBalanceFade', 'sfntFontRunFeature', 'KerxCoordinateAction', 'sfntCMapSubHeader', 'CVPlanarPixelBufferInfo', 'AUNumVersion', 'AUSamplerInstrumentData', 'AUPreset', '__CTRunDelegate', 'OpaqueAudioQueueProcessingTap', 'KerxTableHeader', '_NSZone', 'OpaqueExtAudioFile', '__CFRunLoopSource', '__CVMetalTextureCache', 'KerxAnchorPointAction', 'OpaqueJSString', 'AudioQueueParameterEvent', '__CFHTTPMessage', 'OpaqueCMClock', 'ScheduledAudioFileRegion', 'STEntryZero', 'AVAudio3DPoint', 'gss_channel_bindings_struct', 'sfntVariationHeader', 'AUChannelInfo', 'UIOffset', 'GLKEffectPropertyPrv', 'KerxStateHeader', 'CGLineJoin', 'CGPDFDocument', '__CFBag', 'KernOrderedListHeader', '__SCNetworkSet', '__SecKey', 'MIDIObjectAddRemoveNotification', 'AudioUnitParameter', 'JustPCActionSubrecord', 'AudioComponentDescription', 'AudioUnitParameterValueName', 'AudioUnitParameterEvent', 'KerxControlPointAction', 'AudioTimeStamp', 'KernKerningPair', 'gss_buffer_set_desc_struct', 'MortFeatureEntry', 'FontVariation', 'CAFStringID', 'LcarCaretClassEntry', 'AudioUnitParameterStringFromValue', 'ACErrorCode', 'ALMXGlyphEntry', 'LtagTable', '__CTTypesetter', 'AuthorizationOpaqueRef', 'UIEdgeInsets', 'CGPathElement', 'CAFMarker', 'KernTableHeader', 'NoteParamsControlValue', 'SSLContext', 'gss_cred_id_t_desc_struct', 'AudioUnitParameterNameInfo', 'CGDataConsumerCallbacks', 'ALMXHeader', 'CGLineCap', 'MIDIControlTransform', 'CGPDFArray', '__SecPolicy', 'AudioConverterPrimeInfo', '__CTTextTab', '__CFNetServiceMonitor', 'AUInputSamplesInOutputCallbackStruct', '__CTFramesetter', 'CGPDFDataFormat', 'STHeader', 'CVPlanarPixelBufferInfo_YCbCrPlanar', 'MIDIValueMap', 'JustDirectionTable', '__SCBondStatus', 'SFNTLookupSegmentHeader', 'OpaqueCMMemoryPool', 'CGPathDrawingMode', 'CGFont', '__SCNetworkReachability', 'AudioClassDescription', 'CGPoint', 'AVAudio3DVectorOrientation', 'CAFStrings', '__CFNetServiceBrowser', 'opaqueMTAudioProcessingTap', 'sfntNameRecord', 'CGPDFPage', 'CGLayer', 'ComponentInstanceRecord', 'CAFInfoStrings', 'HostCallbackInfo', 'MusicDeviceNoteParams', 'OpaqueVTCompressionSession', 'KernIndexArrayHeader', 'CVPlanarPixelBufferInfo_YCbCrBiPlanar', 'MusicTrackLoopInfo', 'opaqueCMFormatDescription', 'STClassTable', 'sfntDirectoryEntry', 'OpaqueCMTimebase', 'CGDataProviderDirectCallbacks', 'MIDIPacketList', 'CAFOverviewChunk', 'MIDIPacket', 'ScheduledAudioSlice', 'CGDataProviderSequentialCallbacks', 'AudioBuffer', 'MorxRearrangementSubtable', 'CGPatternCallbacks', 'AUDistanceAttenuationData', 'MIDIIOErrorNotification', 'CGPDFContentStream', 'IUnknownVTbl', 'MIDITransform', 'MortInsertionSubtable', 'CABarBeatTime', 'AudioBufferList', '__CVBuffer', 'AURenderCallbackStruct', 'STXEntryZero', 'JustPCDuctilityAction', 'OpaqueAudioQueueTimeline', 'VTDecompressionOutputCallbackRecord', 'OpaqueMIDIClient', '__CFPlugInInstance', 'AudioQueueBuffer', '__CFFileDescriptor', 'AudioUnitConnection', '_GKTurnBasedExchangeStatus', 'LcarCaretTable', 'CVPlanarComponentInfo', 'JustWidthDeltaGroup', 'OpaqueAudioComponent', 'ParameterEvent', '__CVPixelBufferPool', '__CTFont', 'CGColorSpace', 'CGSize', 'AUDependentParameter', 'MIDIDriverInterface', 'gss_krb5_rfc1964_keydata', '__CFDateFormatter', 'LtagStringRange', 'OpaqueVTDecompressionSession', 'gss_iov_buffer_desc_struct', 'AUPresetEvent', 'PropTable', 'KernOrderedListEntry', 'CF_BRIDGED_MUTABLE_TYPE', 'gss_OID_desc_struct', 'AudioUnitPresetMAS_Settings', 'AudioFileMarker', 'JustPCConditionalAddAction', 'BslnFormat3Part', '__CFNotificationCenter', 'MortSwashSubtable', 'AUParameterMIDIMapping', 'SCNVector3', 'OpaqueAudioConverter', 'MIDIRawData', 'sfntNameHeader', '__CFRunLoop', 'MFMailComposeResult', 'CATransform3D', 'OpbdSideValues', 'CAF_SMPTE_Time', '__SecAccessControl', 'JustPCAction', 'OpaqueVTFrameSilo', 'OpaqueVTMultiPassStorage', 'CGPathElementType', 'AudioFormatListItem', 'AudioUnitExternalBuffer', 'AudioFileRegion', 'AudioValueTranslation', 'CGImageMetadataTag', 'CAFPeakChunk', 'AudioBytePacketTranslation', 'sfntCMapHeader', '__CFURLEnumerator', 'STXHeader', 'CGPDFObjectType', 'SFNTLookupArrayHeader']) if __name__ == '__main__': # pragma: no cover import os import re - FRAMEWORKS_PATH = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/' + FRAMEWORKS_PATH = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/' frameworks = os.listdir(FRAMEWORKS_PATH) all_interfaces = set() diff --git a/pygments/lexers/_csound_builtins.py b/pygments/lexers/_csound_builtins.py new file mode 100644 index 00000000..5f7a798a --- /dev/null +++ b/pygments/lexers/_csound_builtins.py @@ -0,0 +1,1339 @@ +# -*- coding: utf-8 -*- + +# Opcodes in Csound 6.05 from +# csound --list-opcodes +# except +# cggoto <http://www.csounds.com/manual/html/cggoto.html> +# cigoto <http://www.csounds.com/manual/html/cigoto.html> +# cingoto (undocumented) +# ckgoto <http://www.csounds.com/manual/html/ckgoto.html> +# cngoto <http://www.csounds.com/manual/html/cngoto.html> +# endin <http://www.csounds.com/manual/html/endin.html +# endop <http://www.csounds.com/manual/html/endop.html +# goto <http://www.csounds.com/manual/html/goto.html> +# igoto <http://www.csounds.com/manual/html/igoto.html> +# instr <http://www.csounds.com/manual/html/instr.html> +# kgoto <http://www.csounds.com/manual/html/kgoto.html> +# loop_ge <http://www.csounds.com/manual/html/loop_ge.html> +# loop_gt <http://www.csounds.com/manual/html/loop_gt.html> +# loop_le <http://www.csounds.com/manual/html/loop_le.html> +# loop_lt <http://www.csounds.com/manual/html/loop_lt.html> +# opcode <http://www.csounds.com/manual/html/opcode.html> +# return <http://www.csounds.com/manual/html/return.html> +# rigoto <http://www.csounds.com/manual/html/rigoto.html> +# tigoto <http://www.csounds.com/manual/html/tigoto.html> +# timout <http://www.csounds.com/manual/html/timout.html> +# which are treated as keywords; the scoreline opcodes +# scoreline <http://www.csounds.com/manual/html/scoreline.html> +# scoreline_i <http://www.csounds.com/manual/html/scoreline_i.html> +# which allow Csound Score highlighting; the pyrun opcodes +# <http://www.csounds.com/manual/html/pyrun.html> +# pylrun +# pylruni +# pylrunt +# pyrun +# pyruni +# pyrunt +# which allow Python highlighting; and the Lua opcodes +# lua_exec <http://www.csounds.com/manual/html/lua_exec.html> +# lua_opdef <http://www.csounds.com/manual/html/lua_opdef.html> +# which allow Lua highlighting. +OPCODES = set(( + 'ATSadd', + 'ATSaddnz', + 'ATSbufread', + 'ATScross', + 'ATSinfo', + 'ATSinterpread', + 'ATSpartialtap', + 'ATSread', + 'ATSreadnz', + 'ATSsinnoi', + 'FLbox', + 'FLbutBank', + 'FLbutton', + 'FLcloseButton', + 'FLcolor', + 'FLcolor2', + 'FLcount', + 'FLexecButton', + 'FLgetsnap', + 'FLgroup', + 'FLgroupEnd', + 'FLgroup_end', + 'FLhide', + 'FLhvsBox', + 'FLhvsBoxSetValue', + 'FLjoy', + 'FLkeyIn', + 'FLknob', + 'FLlabel', + 'FLloadsnap', + 'FLmouse', + 'FLpack', + 'FLpackEnd', + 'FLpack_end', + 'FLpanel', + 'FLpanelEnd', + 'FLpanel_end', + 'FLprintk', + 'FLprintk2', + 'FLroller', + 'FLrun', + 'FLsavesnap', + 'FLscroll', + 'FLscrollEnd', + 'FLscroll_end', + 'FLsetAlign', + 'FLsetBox', + 'FLsetColor', + 'FLsetColor2', + 'FLsetFont', + 'FLsetPosition', + 'FLsetSize', + 'FLsetSnapGroup', + 'FLsetText', + 'FLsetTextColor', + 'FLsetTextSize', + 'FLsetTextType', + 'FLsetVal', + 'FLsetVal_i', + 'FLsetVali', + 'FLsetsnap', + 'FLshow', + 'FLslidBnk', + 'FLslidBnk2', + 'FLslidBnk2Set', + 'FLslidBnk2Setk', + 'FLslidBnkGetHandle', + 'FLslidBnkSet', + 'FLslidBnkSetk', + 'FLslider', + 'FLtabs', + 'FLtabsEnd', + 'FLtabs_end', + 'FLtext', + 'FLupdate', + 'FLvalue', + 'FLvkeybd', + 'FLvslidBnk', + 'FLvslidBnk2', + 'FLxyin', + 'MixerClear', + 'MixerGetLevel', + 'MixerReceive', + 'MixerSend', + 'MixerSetLevel', + 'MixerSetLevel_i', + 'OSCinit', + 'OSClisten', + 'OSCsend', + 'a', + 'abs', + 'active', + 'adsr', + 'adsyn', + 'adsynt', + 'adsynt2', + 'aftouch', + 'alpass', + 'alwayson', + 'ampdb', + 'ampdbfs', + 'ampmidi', + 'ampmidid', + 'areson', + 'aresonk', + 'array', + 'atone', + 'atonek', + 'atonex', + 'babo', + 'balance', + 'bamboo', + 'barmodel', + 'bbcutm', + 'bbcuts', + 'betarand', + 'bexprnd', + 'bformdec', + 'bformdec1', + 'bformenc', + 'bformenc1', + 'binit', + 'biquad', + 'biquada', + 'birnd', + 'bqrez', + 'buchla', + 'butbp', + 'butbr', + 'buthp', + 'butlp', + 'butterbp', + 'butterbr', + 'butterhp', + 'butterlp', + 'button', + 'buzz', + 'c2r', + 'cabasa', + 'cauchy', + 'cauchyi', + 'ceil', + 'cell', + 'cent', + 'centroid', + 'ceps', + #'cggoto', + 'chanctrl', + 'changed', + 'chani', + 'chano', + 'chebyshevpoly', + 'checkbox', + 'chn_S', + 'chn_a', + 'chn_k', + 'chnclear', + 'chnexport', + 'chnget', + 'chnmix', + 'chnparams', + 'chnset', + 'chuap', + #'cigoto', + #'cingoto', + #'ckgoto', + 'clear', + 'clfilt', + 'clip', + 'clockoff', + 'clockon', + 'cmplxprod', + #'cngoto', + 'comb', + 'combinv', + 'compilecsd', + 'compileorc', + 'compilestr', + 'compress', + 'connect', + 'control', + 'convle', + 'convolve', + 'copy2ftab', + 'copy2ttab', + 'copya2ftab', + 'copyf2array', + 'cos', + 'cosh', + 'cosinv', + 'cosseg', + 'cossegb', + 'cossegr', + 'cps2pch', + 'cpsmidi', + 'cpsmidib', + 'cpsmidinn', + 'cpsoct', + 'cpspch', + 'cpstmid', + 'cpstun', + 'cpstuni', + 'cpsxpch', + 'cpuprc', + 'cross2', + 'crossfm', + 'crossfmi', + 'crossfmpm', + 'crossfmpmi', + 'crosspm', + 'crosspmi', + 'crunch', + 'ctlchn', + 'ctrl14', + 'ctrl21', + 'ctrl7', + 'ctrlinit', + 'cuserrnd', + 'dam', + 'date', + 'dates', + 'db', + 'dbamp', + 'dbfsamp', + 'dcblock', + 'dcblock2', + 'dconv', + 'delay', + 'delay1', + 'delayk', + 'delayr', + 'delayw', + 'deltap', + 'deltap3', + 'deltapi', + 'deltapn', + 'deltapx', + 'deltapxw', + 'denorm', + 'diff', + 'diskgrain', + 'diskin', + 'diskin2', + 'dispfft', + 'display', + 'distort', + 'distort1', + 'divz', + 'doppler', + 'downsamp', + 'dripwater', + 'dumpk', + 'dumpk2', + 'dumpk3', + 'dumpk4', + 'duserrnd', + 'dust', + 'dust2', + #'endin', + #'endop', + 'envlpx', + 'envlpxr', + 'ephasor', + 'eqfil', + 'evalstr', + 'event', + 'event_i', + 'exciter', + 'exitnow', + 'exp', + 'expcurve', + 'expon', + 'exprand', + 'exprandi', + 'expseg', + 'expsega', + 'expsegb', + 'expsegba', + 'expsegr', + 'fareylen', + 'fareyleni', + 'faustaudio', + 'faustcompile', + 'faustctl', + 'faustgen', + 'fft', + 'fftinv', + 'ficlose', + 'filebit', + 'filelen', + 'filenchnls', + 'filepeak', + 'filesr', + 'filevalid', + 'fillarray', + 'filter2', + 'fin', + 'fini', + 'fink', + 'fiopen', + 'flanger', + 'flashtxt', + 'flooper', + 'flooper2', + 'floor', + 'fluidAllOut', + 'fluidCCi', + 'fluidCCk', + 'fluidControl', + 'fluidEngine', + 'fluidLoad', + 'fluidNote', + 'fluidOut', + 'fluidProgramSelect', + 'fluidSetInterpMethod', + 'fmb3', + 'fmbell', + 'fmmetal', + 'fmpercfl', + 'fmrhode', + 'fmvoice', + 'fmwurlie', + 'fof', + 'fof2', + 'fofilter', + 'fog', + 'fold', + 'follow', + 'follow2', + 'foscil', + 'foscili', + 'fout', + 'fouti', + 'foutir', + 'foutk', + 'fprintks', + 'fprints', + 'frac', + 'fractalnoise', + 'freeverb', + 'ftchnls', + 'ftconv', + 'ftcps', + 'ftfree', + 'ftgen', + 'ftgenonce', + 'ftgentmp', + 'ftlen', + 'ftload', + 'ftloadk', + 'ftlptim', + 'ftmorf', + 'ftresize', + 'ftresizei', + 'ftsave', + 'ftsavek', + 'ftsr', + 'gain', + 'gainslider', + 'gauss', + 'gaussi', + 'gausstrig', + 'gbuzz', + 'genarray', + 'genarray_i', + 'gendy', + 'gendyc', + 'gendyx', + 'getcfg', + 'getcol', + 'getrow', + 'gogobel', + #'goto', + 'grain', + 'grain2', + 'grain3', + 'granule', + 'guiro', + 'harmon', + 'harmon2', + 'harmon3', + 'harmon4', + 'hdf5read', + 'hdf5write', + 'hilbert', + 'hrtfearly', + 'hrtfer', + 'hrtfmove', + 'hrtfmove2', + 'hrtfreverb', + 'hrtfstat', + 'hsboscil', + 'hvs1', + 'hvs2', + 'hvs3', + 'i', + 'iceps', + #'igoto', + 'ihold', + 'imagecreate', + 'imagefree', + 'imagegetpixel', + 'imageload', + 'imagesave', + 'imagesetpixel', + 'imagesize', + 'in', + 'in32', + 'inch', + 'inh', + 'init', + 'initc14', + 'initc21', + 'initc7', + 'inleta', + 'inletf', + 'inletk', + 'inletkid', + 'inletv', + 'ino', + 'inq', + 'inrg', + 'ins', + 'insglobal', + 'insremot', + #'instr', + 'int', + 'integ', + 'interp', + 'invalue', + 'inx', + 'inz', + 'jitter', + 'jitter2', + 'jspline', + 'k', + #'kgoto', + 'ktableseg', + 'lenarray', + 'lentab', + 'lfo', + 'limit', + 'line', + 'linen', + 'linenr', + 'lineto', + 'linrand', + 'linseg', + 'linsegb', + 'linsegr', + 'locsend', + 'locsig', + 'log', + 'log10', + 'log2', + 'logbtwo', + 'logcurve', + #'loop_ge', + #'loop_gt', + #'loop_le', + #'loop_lt', + 'loopseg', + 'loopsegp', + 'looptseg', + 'loopxseg', + 'lorenz', + 'loscil', + 'loscil3', + 'loscilx', + 'lowpass2', + 'lowres', + 'lowresx', + 'lpf18', + 'lpform', + 'lpfreson', + 'lphasor', + 'lpinterp', + 'lposcil', + 'lposcil3', + 'lposcila', + 'lposcilsa', + 'lposcilsa2', + 'lpread', + 'lpreson', + 'lpshold', + 'lpsholdp', + 'lpslot', + #'lua_exec', + 'lua_ikopcall', + #'lua_opdef', + 'mac', + 'maca', + 'madsr', + 'mags', + 'mandel', + 'mandol', + 'maparray', + 'maparray_i', + 'marimba', + 'massign', + 'max', + 'max_k', + 'maxabs', + 'maxabsaccum', + 'maxaccum', + 'maxalloc', + 'maxarray', + 'maxtab', + 'mclock', + 'mdelay', + 'median', + 'mediank', + 'metro', + 'midglobal', + 'midic14', + 'midic21', + 'midic7', + 'midichannelaftertouch', + 'midichn', + 'midicontrolchange', + 'midictrl', + 'mididefault', + 'midifilestatus', + 'midiin', + 'midinoteoff', + 'midinoteoncps', + 'midinoteonkey', + 'midinoteonoct', + 'midinoteonpch', + 'midion', + 'midion2', + 'midiout', + 'midipgm', + 'midipitchbend', + 'midipolyaftertouch', + 'midiprogramchange', + 'miditempo', + 'midremot', + 'min', + 'minabs', + 'minabsaccum', + 'minaccum', + 'minarray', + 'mincer', + 'mintab', + 'mirror', + 'mode', + 'modmatrix', + 'monitor', + 'moog', + 'moogladder', + 'moogvcf', + 'moogvcf2', + 'moscil', + 'mp3bitrate', + 'mp3in', + 'mp3len', + 'mp3nchnls', + 'mp3sr', + 'mpulse', + 'mrtmsg', + 'multitap', + 'mute', + 'mxadsr', + 'nestedap', + 'nlalp', + 'nlfilt', + 'nlfilt2', + 'noise', + 'noteoff', + 'noteon', + 'noteondur', + 'noteondur2', + 'notnum', + 'nreverb', + 'nrpn', + 'nsamp', + 'nstance', + 'nstrnum', + 'ntrpol', + 'octave', + 'octcps', + 'octmidi', + 'octmidib', + 'octmidinn', + 'octpch', + #'opcode', + 'oscbnk', + 'oscil', + 'oscil1', + 'oscil1i', + 'oscil3', + 'oscili', + 'oscilikt', + 'osciliktp', + 'oscilikts', + 'osciln', + 'oscils', + 'oscilx', + 'out', + 'out32', + 'outc', + 'outch', + 'outh', + 'outiat', + 'outic', + 'outic14', + 'outipat', + 'outipb', + 'outipc', + 'outkat', + 'outkc', + 'outkc14', + 'outkpat', + 'outkpb', + 'outkpc', + 'outleta', + 'outletf', + 'outletk', + 'outletkid', + 'outletv', + 'outo', + 'outq', + 'outq1', + 'outq2', + 'outq3', + 'outq4', + 'outrg', + 'outs', + 'outs1', + 'outs2', + 'outvalue', + 'outx', + 'outz', + 'p', + 'pan', + 'pan2', + 'pareq', + 'partials', + 'partikkel', + 'partikkelget', + 'partikkelset', + 'partikkelsync', + 'passign', + 'pcauchy', + 'pchbend', + 'pchmidi', + 'pchmidib', + 'pchmidinn', + 'pchoct', + 'pconvolve', + 'pcount', + 'pdclip', + 'pdhalf', + 'pdhalfy', + 'peak', + 'pgmassign', + 'pgmchn', + 'phaser1', + 'phaser2', + 'phasor', + 'phasorbnk', + 'phs', + 'pindex', + 'pinker', + 'pinkish', + 'pitch', + 'pitchac', + 'pitchamdf', + 'planet', + 'platerev', + 'plltrack', + 'pluck', + 'poisson', + 'pol2rect', + 'polyaft', + 'polynomial', + 'pop', + 'pop_f', + 'port', + 'portk', + 'poscil', + 'poscil3', + 'pow', + 'powershape', + 'powoftwo', + 'prealloc', + 'prepiano', + 'print', + 'print_type', + 'printf', + 'printf_i', + 'printk', + 'printk2', + 'printks', + 'printks2', + 'prints', + 'product', + 'pset', + 'ptable', + 'ptable3', + 'ptablei', + 'ptableiw', + 'ptablew', + 'ptrack', + 'push', + 'push_f', + 'puts', + 'pvadd', + 'pvbufread', + 'pvcross', + 'pvinterp', + 'pvoc', + 'pvread', + 'pvs2array', + 'pvs2tab', + 'pvsadsyn', + 'pvsanal', + 'pvsarp', + 'pvsbandp', + 'pvsbandr', + 'pvsbin', + 'pvsblur', + 'pvsbuffer', + 'pvsbufread', + 'pvsbufread2', + 'pvscale', + 'pvscent', + 'pvsceps', + 'pvscross', + 'pvsdemix', + 'pvsdiskin', + 'pvsdisp', + 'pvsenvftw', + 'pvsfilter', + 'pvsfread', + 'pvsfreeze', + 'pvsfromarray', + 'pvsftr', + 'pvsftw', + 'pvsfwrite', + 'pvsgain', + 'pvsgendy', + 'pvshift', + 'pvsifd', + 'pvsin', + 'pvsinfo', + 'pvsinit', + 'pvslock', + 'pvsmaska', + 'pvsmix', + 'pvsmooth', + 'pvsmorph', + 'pvsosc', + 'pvsout', + 'pvspitch', + 'pvstanal', + 'pvstencil', + 'pvsvoc', + 'pvswarp', + 'pvsynth', + 'pwd', + 'pyassign', + 'pyassigni', + 'pyassignt', + 'pycall', + 'pycall1', + 'pycall1i', + 'pycall1t', + 'pycall2', + 'pycall2i', + 'pycall2t', + 'pycall3', + 'pycall3i', + 'pycall3t', + 'pycall4', + 'pycall4i', + 'pycall4t', + 'pycall5', + 'pycall5i', + 'pycall5t', + 'pycall6', + 'pycall6i', + 'pycall6t', + 'pycall7', + 'pycall7i', + 'pycall7t', + 'pycall8', + 'pycall8i', + 'pycall8t', + 'pycalli', + 'pycalln', + 'pycallni', + 'pycallt', + 'pyeval', + 'pyevali', + 'pyevalt', + 'pyexec', + 'pyexeci', + 'pyexect', + 'pyinit', + 'pylassign', + 'pylassigni', + 'pylassignt', + 'pylcall', + 'pylcall1', + 'pylcall1i', + 'pylcall1t', + 'pylcall2', + 'pylcall2i', + 'pylcall2t', + 'pylcall3', + 'pylcall3i', + 'pylcall3t', + 'pylcall4', + 'pylcall4i', + 'pylcall4t', + 'pylcall5', + 'pylcall5i', + 'pylcall5t', + 'pylcall6', + 'pylcall6i', + 'pylcall6t', + 'pylcall7', + 'pylcall7i', + 'pylcall7t', + 'pylcall8', + 'pylcall8i', + 'pylcall8t', + 'pylcalli', + 'pylcalln', + 'pylcallni', + 'pylcallt', + 'pyleval', + 'pylevali', + 'pylevalt', + 'pylexec', + 'pylexeci', + 'pylexect', + #'pylrun', + #'pylruni', + #'pylrunt', + #'pyrun', + #'pyruni', + #'pyrunt', + 'qinf', + 'qnan', + 'r2c', + 'rand', + 'randh', + 'randi', + 'random', + 'randomh', + 'randomi', + 'rbjeq', + 'readclock', + 'readf', + 'readfi', + 'readk', + 'readk2', + 'readk3', + 'readk4', + 'readks', + 'readscore', + 'readscratch', + 'rect2pol', + 'reinit', + 'release', + 'remoteport', + 'remove', + 'repluck', + 'reson', + 'resonk', + 'resonr', + 'resonx', + 'resonxk', + 'resony', + 'resonz', + 'resyn', + #'return', + 'reverb', + 'reverb2', + 'reverbsc', + 'rewindscore', + 'rezzy', + 'rfft', + 'rifft', + #'rigoto', + 'rireturn', + 'rms', + 'rnd', + 'rnd31', + 'round', + 'rspline', + 'rtclock', + 's16b14', + 's32b14', + 'samphold', + 'sandpaper', + 'scale', + 'scalearray', + 'scalet', + 'scanhammer', + 'scans', + 'scantable', + 'scanu', + 'schedkwhen', + 'schedkwhennamed', + 'schedule', + 'schedwhen', + #'scoreline', + #'scoreline_i', + 'seed', + 'sekere', + 'semitone', + 'sense', + 'sensekey', + 'seqtime', + 'seqtime2', + 'serialBegin', + 'serialEnd', + 'serialFlush', + 'serialPrint', + 'serialRead', + 'serialWrite', + 'serialWrite_i', + 'setcol', + 'setctrl', + 'setksmps', + 'setrow', + 'setscorepos', + 'sfilist', + 'sfinstr', + 'sfinstr3', + 'sfinstr3m', + 'sfinstrm', + 'sfload', + 'sflooper', + 'sfpassign', + 'sfplay', + 'sfplay3', + 'sfplay3m', + 'sfplaym', + 'sfplist', + 'sfpreset', + 'shaker', + 'shiftin', + 'shiftout', + 'signalflowgraph', + 'signum', + 'sin', + 'sinh', + 'sininv', + 'sinsyn', + 'sleighbells', + 'slicearray', + 'slider16', + 'slider16f', + 'slider16table', + 'slider16tablef', + 'slider32', + 'slider32f', + 'slider32table', + 'slider32tablef', + 'slider64', + 'slider64f', + 'slider64table', + 'slider64tablef', + 'slider8', + 'slider8f', + 'slider8table', + 'slider8tablef', + 'sliderKawai', + 'sndload', + 'sndloop', + 'sndwarp', + 'sndwarpst', + 'sockrecv', + 'sockrecvs', + 'socksend', + 'socksends', + 'soundin', + 'soundout', + 'soundouts', + 'space', + 'spat3d', + 'spat3di', + 'spat3dt', + 'spdist', + 'specaddm', + 'specdiff', + 'specdisp', + 'specfilt', + 'spechist', + 'specptrk', + 'specscal', + 'specsum', + 'spectrum', + 'splitrig', + 'sprintf', + 'sprintfk', + 'spsend', + 'sqrt', + 'stack', + 'statevar', + 'stix', + 'strcat', + 'strcatk', + 'strchar', + 'strchark', + 'strcmp', + 'strcmpk', + 'strcpy', + 'strcpyk', + 'strecv', + 'streson', + 'strfromurl', + 'strget', + 'strindex', + 'strindexk', + 'strlen', + 'strlenk', + 'strlower', + 'strlowerk', + 'strrindex', + 'strrindexk', + 'strset', + 'strsub', + 'strsubk', + 'strtod', + 'strtodk', + 'strtol', + 'strtolk', + 'strupper', + 'strupperk', + 'stsend', + 'subinstr', + 'subinstrinit', + 'sum', + 'sumarray', + 'sumtab', + 'svfilter', + 'syncgrain', + 'syncloop', + 'syncphasor', + 'system', + 'system_i', + 'tab', + 'tab2pvs', + 'tab_i', + 'tabgen', + 'table', + 'table3', + 'table3kt', + 'tablecopy', + 'tablefilter', + 'tablefilteri', + 'tablegpw', + 'tablei', + 'tableicopy', + 'tableigpw', + 'tableikt', + 'tableimix', + 'tableiw', + 'tablekt', + 'tablemix', + 'tableng', + 'tablera', + 'tableseg', + 'tableshuffle', + 'tableshufflei', + 'tablew', + 'tablewa', + 'tablewkt', + 'tablexkt', + 'tablexseg', + 'tabmap', + 'tabmap_i', + 'tabmorph', + 'tabmorpha', + 'tabmorphak', + 'tabmorphi', + 'tabplay', + 'tabrec', + 'tabslice', + 'tabsum', + 'tabw', + 'tabw_i', + 'tambourine', + 'tan', + 'tanh', + 'taninv', + 'taninv2', + 'tb0', + 'tb0_init', + 'tb1', + 'tb10', + 'tb10_init', + 'tb11', + 'tb11_init', + 'tb12', + 'tb12_init', + 'tb13', + 'tb13_init', + 'tb14', + 'tb14_init', + 'tb15', + 'tb15_init', + 'tb1_init', + 'tb2', + 'tb2_init', + 'tb3', + 'tb3_init', + 'tb4', + 'tb4_init', + 'tb5', + 'tb5_init', + 'tb6', + 'tb6_init', + 'tb7', + 'tb7_init', + 'tb8', + 'tb8_init', + 'tb9', + 'tb9_init', + 'tbvcf', + 'tempest', + 'tempo', + 'temposcal', + 'tempoval', + #'tigoto', + 'timedseq', + 'timeinstk', + 'timeinsts', + 'timek', + 'times', + #'timout', + 'tival', + 'tlineto', + 'tone', + 'tonek', + 'tonex', + 'tradsyn', + 'trandom', + 'transeg', + 'transegb', + 'transegr', + 'trcross', + 'trfilter', + 'trhighest', + 'trigger', + 'trigseq', + 'trirand', + 'trlowest', + 'trmix', + 'trscale', + 'trshift', + 'trsplit', + 'turnoff', + 'turnoff2', + 'turnon', + 'unirand', + 'unwrap', + 'upsamp', + 'urd', + 'vactrol', + 'vadd', + 'vadd_i', + 'vaddv', + 'vaddv_i', + 'vaget', + 'valpass', + 'vaset', + 'vbap', + 'vbap16', + 'vbap4', + 'vbap4move', + 'vbap8', + 'vbap8move', + 'vbapg', + 'vbapgmove', + 'vbaplsinit', + 'vbapmove', + 'vbapz', + 'vbapzmove', + 'vcella', + 'vco', + 'vco2', + 'vco2ft', + 'vco2ift', + 'vco2init', + 'vcomb', + 'vcopy', + 'vcopy_i', + 'vdel_k', + 'vdelay', + 'vdelay3', + 'vdelayk', + 'vdelayx', + 'vdelayxq', + 'vdelayxs', + 'vdelayxw', + 'vdelayxwq', + 'vdelayxws', + 'vdivv', + 'vdivv_i', + 'vecdelay', + 'veloc', + 'vexp', + 'vexp_i', + 'vexpseg', + 'vexpv', + 'vexpv_i', + 'vibes', + 'vibr', + 'vibrato', + 'vincr', + 'vlimit', + 'vlinseg', + 'vlowres', + 'vmap', + 'vmirror', + 'vmult', + 'vmult_i', + 'vmultv', + 'vmultv_i', + 'voice', + 'vosim', + 'vphaseseg', + 'vport', + 'vpow', + 'vpow_i', + 'vpowv', + 'vpowv_i', + 'vpvoc', + 'vrandh', + 'vrandi', + 'vsubv', + 'vsubv_i', + 'vtaba', + 'vtabi', + 'vtabk', + 'vtable1k', + 'vtablea', + 'vtablei', + 'vtablek', + 'vtablewa', + 'vtablewi', + 'vtablewk', + 'vtabwa', + 'vtabwi', + 'vtabwk', + 'vwrap', + 'waveset', + 'weibull', + 'wgbow', + 'wgbowedbar', + 'wgbrass', + 'wgclar', + 'wgflute', + 'wgpluck', + 'wgpluck2', + 'wguide1', + 'wguide2', + 'wiiconnect', + 'wiidata', + 'wiirange', + 'wiisend', + 'window', + 'wrap', + 'writescratch', + 'wterrain', + 'xadsr', + 'xin', + 'xout', + 'xscanmap', + 'xscans', + 'xscansmap', + 'xscanu', + 'xtratim', + 'xyin', + 'zacl', + 'zakinit', + 'zamod', + 'zar', + 'zarg', + 'zaw', + 'zawm', + 'zfilter2', + 'zir', + 'ziw', + 'ziwm', + 'zkcl', + 'zkmod', + 'zkr', + 'zkw', + 'zkwm' +)) diff --git a/pygments/lexers/_lasso_builtins.py b/pygments/lexers/_lasso_builtins.py index 6c442800..7c6fd6d4 100644 --- a/pygments/lexers/_lasso_builtins.py +++ b/pygments/lexers/_lasso_builtins.py @@ -11,978 +11,672 @@ BUILTINS = { 'Types': ( - 'null', - 'void', - 'tag', - 'trait', - 'integer', - 'decimal', + 'array', + 'atbegin', 'boolean', - 'capture', - 'string', + 'bson_iter', + 'bson', + 'bytes_document_body', 'bytes', - 'keyword', - 'custom', - 'staticarray', - 'signature', - 'memberstream', - 'dsinfo', - 'sourcefile', - 'array', - 'pair', - 'opaque', - 'filedesc', - 'dirdesc', - 'locale', - 'ucal', - 'xml_domimplementation', - 'xml_node', - 'xml_characterdata', - 'xml_document', - 'xml_element', - 'xml_attr', - 'xml_text', - 'xml_cdatasection', - 'xml_entityreference', - 'xml_entity', - 'xml_processinginstruction', - 'xml_comment', - 'xml_documenttype', - 'xml_documentfragment', - 'xml_notation', - 'xml_nodelist', - 'xml_namednodemap', - 'xml_namednodemap_ht', - 'xml_namednodemap_attr', - 'xmlstream', - 'sqlite3', - 'sqlite3_stmt', - 'mime_reader', - 'curltoken', - 'regexp', - 'zip_impl', - 'zip_file_impl', - 'library_thread_loader', - 'generateforeachunkeyed', - 'generateforeachkeyed', - 'eacher', - 'queriable_where', - 'queriable_select', - 'queriable_selectmany', - 'queriable_groupby', - 'queriable_join', - 'queriable_groupjoin', - 'queriable_orderby', - 'queriable_orderbydescending', - 'queriable_thenby', - 'queriable_thenbydescending', - 'queriable_skip', - 'queriable_take', - 'queriable_grouping', - 'generateseries', - 'tie', - 'pairup', - 'delve', - 'repeat', - 'pair_compare', - 'serialization_object_identity_compare', - 'serialization_element', - 'serialization_writer_standin', - 'serialization_writer_ref', - 'serialization_writer', - 'serialization_reader', - 'tree_nullnode', - 'tree_node', - 'tree_base', - 'map_node', - 'map', - 'file', - 'date', - 'dir', - 'magick_image', - 'ldap', - 'os_process', - 'java_jnienv', - 'jobject', - 'jmethodid', - 'jfieldid', - 'database_registry', - 'sqlite_db', - 'sqlite_results', - 'sqlite_currentrow', - 'sqlite_table', - 'sqlite_column', - 'curl', - 'debugging_stack', - 'dbgp_server', - 'dbgp_packet', - 'duration', - 'inline_type', - 'json_literal', - 'json_object', - 'list_node', - 'list', - 'jchar', - 'jchararray', - 'jbyte', - 'jbytearray', - 'jfloat', - 'jint', - 'jshort', - 'currency', - 'scientific', - 'percent', - 'dateandtime', - 'timeonly', - 'net_tcp', - 'net_tcpssl', - 'net_tcp_ssl', - 'net_named_pipe', - 'net_udppacket', - 'net_udp_packet', - 'net_udp', - 'pdf_typebase', - 'pdf_doc', - 'pdf_color', - 'pdf_barcode', - 'pdf_font', - 'pdf_image', - 'pdf_list', - 'pdf_read', - 'pdf_table', - 'pdf_text', - 'pdf_hyphenator', - 'pdf_chunk', - 'pdf_phrase', - 'pdf_paragraph', - 'queue', - 'set', - 'sys_process', - 'worker_pool', - 'zip_file', - 'zip', 'cache_server_element', 'cache_server', - 'dns_response', + 'capture', + 'client_address', + 'client_ip', + 'component_container', 'component_render_state', 'component', - 'component_container', + 'curl', + 'curltoken', + 'currency', + 'custom', + 'data_document', + 'database_registry', + 'date', + 'dateandtime', + 'dbgp_packet', + 'dbgp_server', + 'debugging_stack', + 'decimal', + 'delve', + 'dir', + 'dirdesc', + 'dns_response', 'document_base', 'document_body', 'document_header', - 'text_document', - 'data_document', + 'dsinfo', + 'duration', + 'eacher', 'email_compose', - 'email_pop', 'email_parse', + 'email_pop', 'email_queue_impl_base', + 'email_queue_impl', + 'email_smtp', 'email_stage_impl_base', - 'fcgi_record', - 'web_request_impl', - 'fcgi_request', - 'include_cache', - 'atbegin', + 'email_stage_impl', 'fastcgi_each_fcgi_param', 'fastcgi_server', + 'fcgi_record', + 'fcgi_request', + 'file', + 'filedesc', 'filemaker_datasource', - 'http_document', - 'http_document_header', - 'http_header_field', - 'html_document_head', - 'html_document_body', - 'raw_document_body', - 'bytes_document_body', - 'html_attr', + 'generateforeachkeyed', + 'generateforeachunkeyed', + 'generateseries', + 'hash_map', 'html_atomic_element', - 'html_container_element', - 'http_error', - 'html_script', - 'html_text', - 'html_raw', + 'html_attr', + 'html_base', 'html_binary', - 'html_json', + 'html_br', 'html_cdata', - 'html_eol', + 'html_container_element', 'html_div', - 'html_span', - 'html_br', - 'html_hr', + 'html_document_body', + 'html_document_head', + 'html_eol', + 'html_fieldset', + 'html_form', 'html_h1', 'html_h2', 'html_h3', 'html_h4', 'html_h5', 'html_h6', - 'html_meta', + 'html_hr', + 'html_img', + 'html_input', + 'html_json', + 'html_label', + 'html_legend', 'html_link', + 'html_meta', 'html_object', + 'html_option', + 'html_raw', + 'html_script', + 'html_select', + 'html_span', 'html_style', - 'html_base', 'html_table', - 'html_tr', 'html_td', + 'html_text', 'html_th', - 'html_img', - 'html_form', - 'html_fieldset', - 'html_legend', - 'html_input', - 'html_label', - 'html_option', - 'html_select', + 'html_tr', + 'http_document_header', + 'http_document', + 'http_error', + 'http_header_field', + 'http_server_connection_handler_globals', + 'http_server_connection_handler', + 'http_server_request_logger_thread', 'http_server_web_connection', 'http_server', - 'http_server_connection_handler', 'image', - 'lassoapp_installer', + 'include_cache', + 'inline_type', + 'integer', + 'java_jnienv', + 'jbyte', + 'jbytearray', + 'jchar', + 'jchararray', + 'jfieldid', + 'jfloat', + 'jint', + 'jmethodid', + 'jobject', + 'jshort', + 'json_decode', + 'json_encode', + 'json_literal', + 'json_object', + 'keyword', + 'lassoapp_compiledsrc_appsource', + 'lassoapp_compiledsrc_fileresource', 'lassoapp_content_rep_halt', - 'lassoapp_dirsrc_fileresource', 'lassoapp_dirsrc_appsource', - 'lassoapp_livesrc_fileresource', + 'lassoapp_dirsrc_fileresource', + 'lassoapp_installer', 'lassoapp_livesrc_appsource', + 'lassoapp_livesrc_fileresource', 'lassoapp_long_expiring_bytes', + 'lassoapp_manualsrc_appsource', 'lassoapp_zip_file_server', - 'lassoapp_zipsrc_fileresource', 'lassoapp_zipsrc_appsource', - 'lassoapp_compiledsrc_fileresource', - 'lassoapp_compiledsrc_appsource', - 'lassoapp_manualsrc_appsource', + 'lassoapp_zipsrc_fileresource', + 'ldap', + 'library_thread_loader', + 'list_node', + 'list', + 'locale', 'log_impl_base', - 'portal_impl', - 'security_registry', + 'log_impl', + 'magick_image', + 'map_node', + 'map', + 'memberstream', 'memory_session_driver_impl_entry', 'memory_session_driver_impl', - 'sqlite_session_driver_impl_entry', - 'sqlite_session_driver_impl', + 'memory_session_driver', + 'mime_reader', + 'mongo_client', + 'mongo_collection', + 'mongo_cursor', + 'mustache_ctx', 'mysql_session_driver_impl', + 'mysql_session_driver', + 'net_named_pipe', + 'net_tcp_ssl', + 'net_tcp', + 'net_udp_packet', + 'net_udp', + 'null', 'odbc_session_driver_impl', + 'odbc_session_driver', + 'opaque', + 'os_process', + 'pair_compare', + 'pair', + 'pairup', + 'pdf_barcode', + 'pdf_chunk', + 'pdf_color', + 'pdf_doc', + 'pdf_font', + 'pdf_hyphenator', + 'pdf_image', + 'pdf_list', + 'pdf_paragraph', + 'pdf_phrase', + 'pdf_read', + 'pdf_table', + 'pdf_text', + 'pdf_typebase', + 'percent', + 'portal_impl', + 'queriable_groupby', + 'queriable_grouping', + 'queriable_groupjoin', + 'queriable_join', + 'queriable_orderby', + 'queriable_orderbydescending', + 'queriable_select', + 'queriable_selectmany', + 'queriable_skip', + 'queriable_take', + 'queriable_thenby', + 'queriable_thenbydescending', + 'queriable_where', + 'queue', + 'raw_document_body', + 'regexp', + 'repeat', + 'scientific', + 'security_registry', + 'serialization_element', + 'serialization_object_identity_compare', + 'serialization_reader', + 'serialization_writer_ref', + 'serialization_writer_standin', + 'serialization_writer', 'session_delete_expired_thread', - 'email_smtp', - 'client_address', - 'client_ip', + 'set', + 'signature', + 'sourcefile', + 'sqlite_column', + 'sqlite_currentrow', + 'sqlite_db', + 'sqlite_results', + 'sqlite_session_driver_impl_entry', + 'sqlite_session_driver_impl', + 'sqlite_session_driver', + 'sqlite_table', + 'sqlite3_stmt', + 'sqlite3', + 'staticarray', + 'string', + 'sys_process', + 'tag', + 'text_document', + 'tie', + 'timeonly', + 'trait', + 'tree_base', + 'tree_node', + 'tree_nullnode', + 'ucal', + 'usgcpu', + 'usgvm', + 'void', + 'web_error_atend', 'web_node_base', - 'web_node_root', - 'web_node_content_representation_xhr_container', - 'web_node_content_representation_html_specialized', 'web_node_content_representation_css_specialized', + 'web_node_content_representation_html_specialized', 'web_node_content_representation_js_specialized', + 'web_node_content_representation_xhr_container', 'web_node_echo', - 'web_error_atend', + 'web_node_root', + 'web_request_impl', + 'web_request', 'web_response_impl', - 'web_router' + 'web_response', + 'web_router', + 'websocket_handler', + 'worker_pool', + 'xml_attr', + 'xml_cdatasection', + 'xml_characterdata', + 'xml_comment', + 'xml_document', + 'xml_documentfragment', + 'xml_documenttype', + 'xml_domimplementation', + 'xml_element', + 'xml_entity', + 'xml_entityreference', + 'xml_namednodemap_attr', + 'xml_namednodemap_ht', + 'xml_namednodemap', + 'xml_node', + 'xml_nodelist', + 'xml_notation', + 'xml_processinginstruction', + 'xml_text', + 'xmlstream', + 'zip_file_impl', + 'zip_file', + 'zip_impl', + 'zip', ), 'Traits': ( - 'trait_asstring', 'any', - 'trait_generator', + 'formattingbase', + 'html_attributed', + 'html_element_coreattrs', + 'html_element_eventsattrs', + 'html_element_i18nattrs', + 'lassoapp_capabilities', + 'lassoapp_resource', + 'lassoapp_source', + 'queriable_asstring', + 'session_driver', + 'trait_array', + 'trait_asstring', + 'trait_backcontractible', + 'trait_backended', + 'trait_backexpandable', + 'trait_close', + 'trait_contractible', 'trait_decompose_assignment', - 'trait_foreach', - 'trait_generatorcentric', - 'trait_foreachtextelement', + 'trait_doubleended', + 'trait_each_sub', + 'trait_encodeurl', + 'trait_endedfullymutable', + 'trait_expandable', + 'trait_file', 'trait_finite', 'trait_finiteforeach', - 'trait_keyed', - 'trait_keyedfinite', - 'trait_keyedforeach', + 'trait_foreach', + 'trait_foreachtextelement', + 'trait_frontcontractible', 'trait_frontended', - 'trait_backended', - 'trait_doubleended', - 'trait_positionallykeyed', - 'trait_expandable', 'trait_frontexpandable', - 'trait_backexpandable', - 'trait_contractible', - 'trait_frontcontractible', - 'trait_backcontractible', 'trait_fullymutable', + 'trait_generator', + 'trait_generatorcentric', + 'trait_hashable', + 'trait_json_serialize', + 'trait_keyed', + 'trait_keyedfinite', + 'trait_keyedforeach', 'trait_keyedmutable', - 'trait_endedfullymutable', - 'trait_setoperations', - 'trait_searchable', - 'trait_positionallysearchable', + 'trait_list', + 'trait_map', + 'trait_net', 'trait_pathcomponents', + 'trait_positionallykeyed', + 'trait_positionallysearchable', + 'trait_queriable', + 'trait_queriablelambda', 'trait_readbytes', - 'trait_writebytes', - 'trait_setencoding', 'trait_readstring', - 'trait_writestring', - 'trait_hashable', - 'trait_each_sub', - 'trait_stack', - 'trait_list', - 'trait_array', - 'trait_map', - 'trait_close', - 'trait_file', 'trait_scalar', - 'trait_queriablelambda', - 'trait_queriable', - 'queriable_asstring', + 'trait_searchable', 'trait_serializable', + 'trait_setencoding', + 'trait_setoperations', + 'trait_stack', 'trait_treenode', - 'trait_json_serialize', - 'formattingbase', - 'trait_net', + 'trait_writebytes', + 'trait_writestring', 'trait_xml_elementcompat', 'trait_xml_nodecompat', 'web_connection', - 'html_element_coreattrs', - 'html_element_i18nattrs', - 'html_element_eventsattrs', - 'html_attributed', - 'lassoapp_resource', - 'lassoapp_source', - 'lassoapp_capabilities', - 'session_driver', - 'web_node_content_json_specialized', - 'web_node', 'web_node_container', + 'web_node_content_css_specialized', + 'web_node_content_document', + 'web_node_content_html_specialized', + 'web_node_content_js_specialized', + 'web_node_content_json_specialized', 'web_node_content_representation', 'web_node_content', - 'web_node_content_document', 'web_node_postable', - 'web_node_content_html_specialized', - 'web_node_content_css_specialized', - 'web_node_content_js_specialized' + 'web_node', ), 'Unbound Methods': ( - 'fail_now', - 'register', - 'register_thread', - 'escape_tag', - 'handle', - 'handle_failure', - 'protect_now', - 'threadvar_get', - 'threadvar_set', - 'threadvar_set_asrt', - 'threadvar_find', - 'abort_now', 'abort_clear', - 'failure_clear', - 'var_keys', - 'var_values', - 'staticarray_join', - 'suspend', - 'main_thread_only', - 'split_thread', - 'capture_nearestloopcount', - 'capture_nearestloopcontinue', + 'abort_now', + 'abort', + 'action_param', + 'action_params', + 'action_statement', + 'admin_authorization', + 'admin_currentgroups', + 'admin_currentuserid', + 'admin_currentusername', + 'admin_getpref', + 'admin_initialize', + 'admin_lassoservicepath', + 'admin_removepref', + 'admin_setpref', + 'admin_userexists', + 'all', + 'auth_admin', + 'auth_check', + 'auth_custom', + 'auth_group', + 'auth_prompt', + 'auth_user', + 'bom_utf16be', + 'bom_utf16le', + 'bom_utf32be', + 'bom_utf32le', + 'bom_utf8', + 'bw', 'capture_nearestloopabort', - 'io_file_o_rdonly', - 'io_file_o_wronly', - 'io_file_o_rdwr', - 'io_file_o_nonblock', - 'io_file_o_sync', - 'io_file_o_shlock', - 'io_file_o_exlock', - 'io_file_o_async', - 'io_file_o_fsync', - 'io_file_o_nofollow', - 'io_file_s_irwxu', - 'io_file_s_irusr', - 'io_file_s_iwusr', - 'io_file_s_ixusr', - 'io_file_s_irwxg', - 'io_file_s_irgrp', - 'io_file_s_iwgrp', - 'io_file_s_ixgrp', - 'io_file_s_irwxo', - 'io_file_s_iroth', - 'io_file_s_iwoth', - 'io_file_s_ixoth', - 'io_file_s_isuid', - 'io_file_s_isgid', - 'io_file_s_isvtx', - 'io_file_s_ifmt', - 'io_file_s_ifchr', - 'io_file_s_ifdir', - 'io_file_s_ifreg', - 'io_file_o_append', - 'io_file_o_creat', - 'io_file_o_trunc', - 'io_file_o_excl', - 'io_file_seek_set', - 'io_file_seek_cur', - 'io_file_seek_end', - 'io_file_s_ififo', - 'io_file_s_ifblk', - 'io_file_s_iflnk', - 'io_file_s_ifsock', - 'io_net_shut_rd', - 'io_net_shut_wr', - 'io_net_shut_rdwr', - 'io_net_sock_stream', - 'io_net_sock_dgram', - 'io_net_sock_raw', - 'io_net_sock_rdm', - 'io_net_sock_seqpacket', - 'io_net_so_debug', - 'io_net_so_acceptconn', - 'io_net_so_reuseaddr', - 'io_net_so_keepalive', - 'io_net_so_dontroute', - 'io_net_so_broadcast', - 'io_net_so_useloopback', - 'io_net_so_linger', - 'io_net_so_oobinline', - 'io_net_so_timestamp', - 'io_net_so_sndbuf', - 'io_net_so_rcvbuf', - 'io_net_so_sndlowat', - 'io_net_so_rcvlowat', - 'io_net_so_sndtimeo', - 'io_net_so_rcvtimeo', - 'io_net_so_error', - 'io_net_so_type', - 'io_net_sol_socket', - 'io_net_af_unix', - 'io_net_af_inet', - 'io_net_af_inet6', - 'io_net_ipproto_ip', - 'io_net_ipproto_udp', - 'io_net_msg_peek', - 'io_net_msg_oob', - 'io_net_msg_waitall', - 'io_file_fioclex', - 'io_file_fionclex', - 'io_file_fionread', - 'io_file_fionbio', - 'io_file_fioasync', - 'io_file_fiosetown', - 'io_file_fiogetown', - 'io_file_fiodtype', - 'io_file_f_dupfd', - 'io_file_f_getfd', - 'io_file_f_setfd', - 'io_file_f_getfl', - 'io_file_f_setfl', - 'io_file_f_getlk', - 'io_file_f_setlk', - 'io_file_f_setlkw', - 'io_file_fd_cloexec', - 'io_file_f_rdlck', - 'io_file_f_unlck', - 'io_file_f_wrlck', - 'io_dir_dt_unknown', - 'io_dir_dt_fifo', - 'io_dir_dt_chr', - 'io_dir_dt_blk', - 'io_dir_dt_reg', - 'io_dir_dt_sock', - 'io_dir_dt_wht', - 'io_dir_dt_lnk', - 'io_dir_dt_dir', - 'io_file_access', - 'io_file_chdir', - 'io_file_getcwd', - 'io_file_chown', - 'io_file_lchown', - 'io_file_truncate', - 'io_file_link', - 'io_file_pipe', - 'io_file_rmdir', - 'io_file_symlink', - 'io_file_unlink', - 'io_file_remove', - 'io_file_rename', - 'io_file_tempnam', - 'io_file_mkstemp', - 'io_file_dirname', - 'io_file_realpath', - 'io_file_chmod', - 'io_file_mkdir', - 'io_file_mkfifo', - 'io_file_umask', - 'io_net_socket', - 'io_net_bind', - 'io_net_connect', - 'io_net_listen', - 'io_net_recv', - 'io_net_recvfrom', - 'io_net_accept', - 'io_net_send', - 'io_net_sendto', - 'io_net_shutdown', - 'io_net_getpeername', - 'io_net_getsockname', - 'io_net_ssl_begin', - 'io_net_ssl_end', - 'io_net_ssl_shutdown', - 'io_net_ssl_setverifylocations', - 'io_net_ssl_usecertificatechainfile', - 'io_net_ssl_useprivatekeyfile', - 'io_net_ssl_connect', - 'io_net_ssl_accept', - 'io_net_ssl_error', - 'io_net_ssl_errorstring', - 'io_net_ssl_liberrorstring', - 'io_net_ssl_funcerrorstring', - 'io_net_ssl_reasonerrorstring', - 'io_net_ssl_setconnectstate', - 'io_net_ssl_setacceptstate', - 'io_net_ssl_read', - 'io_net_ssl_write', - 'io_file_stat_size', - 'io_file_stat_mode', - 'io_file_stat_mtime', - 'io_file_stat_atime', - 'io_file_lstat_size', - 'io_file_lstat_mode', - 'io_file_lstat_mtime', - 'io_file_lstat_atime', - 'io_file_readlink', - 'io_file_lockf', - 'io_file_f_ulock', - 'io_file_f_tlock', - 'io_file_f_test', - 'io_file_stdin', - 'io_file_stdout', - 'io_file_stderr', - 'uchar_alphabetic', - 'uchar_ascii_hex_digit', - 'uchar_bidi_control', - 'uchar_bidi_mirrored', - 'uchar_dash', - 'uchar_default_ignorable_code_point', - 'uchar_deprecated', - 'uchar_diacritic', - 'uchar_extender', - 'uchar_full_composition_exclusion', - 'uchar_grapheme_base', - 'uchar_grapheme_extend', - 'uchar_grapheme_link', - 'uchar_hex_digit', - 'uchar_hyphen', - 'uchar_id_continue', - 'uchar_ideographic', - 'uchar_ids_binary_operator', - 'uchar_ids_trinary_operator', - 'uchar_join_control', - 'uchar_logical_order_exception', - 'uchar_lowercase', - 'uchar_math', - 'uchar_noncharacter_code_point', - 'uchar_quotation_mark', - 'uchar_radical', - 'uchar_soft_dotted', - 'uchar_terminal_punctuation', - 'uchar_unified_ideograph', - 'uchar_uppercase', - 'uchar_white_space', - 'uchar_xid_continue', - 'uchar_case_sensitive', - 'uchar_s_term', - 'uchar_variation_selector', - 'uchar_nfd_inert', - 'uchar_nfkd_inert', - 'uchar_nfc_inert', - 'uchar_nfkc_inert', - 'uchar_segment_starter', - 'uchar_pattern_syntax', - 'uchar_pattern_white_space', - 'uchar_posix_alnum', - 'uchar_posix_blank', - 'uchar_posix_graph', - 'uchar_posix_print', - 'uchar_posix_xdigit', - 'uchar_bidi_class', - 'uchar_block', - 'uchar_canonical_combining_class', - 'uchar_decomposition_type', - 'uchar_east_asian_width', - 'uchar_general_category', - 'uchar_joining_group', - 'uchar_joining_type', - 'uchar_line_break', - 'uchar_numeric_type', - 'uchar_script', - 'uchar_hangul_syllable_type', - 'uchar_nfd_quick_check', - 'uchar_nfkd_quick_check', - 'uchar_nfc_quick_check', - 'uchar_nfkc_quick_check', - 'uchar_lead_canonical_combining_class', - 'uchar_trail_canonical_combining_class', - 'uchar_grapheme_cluster_break', - 'uchar_sentence_break', - 'uchar_word_break', - 'uchar_general_category_mask', - 'uchar_numeric_value', - 'uchar_age', - 'uchar_bidi_mirroring_glyph', - 'uchar_case_folding', - 'uchar_iso_comment', - 'uchar_lowercase_mapping', - 'uchar_name', - 'uchar_simple_case_folding', - 'uchar_simple_lowercase_mapping', - 'uchar_simple_titlecase_mapping', - 'uchar_simple_uppercase_mapping', - 'uchar_titlecase_mapping', - 'uchar_unicode_1_name', - 'uchar_uppercase_mapping', - 'u_wb_other', - 'u_wb_aletter', - 'u_wb_format', - 'u_wb_katakana', - 'u_wb_midletter', - 'u_wb_midnum', - 'u_wb_numeric', - 'u_wb_extendnumlet', - 'u_sb_other', - 'u_sb_aterm', - 'u_sb_close', - 'u_sb_format', - 'u_sb_lower', - 'u_sb_numeric', - 'u_sb_oletter', - 'u_sb_sep', - 'u_sb_sp', - 'u_sb_sterm', - 'u_sb_upper', - 'u_lb_unknown', - 'u_lb_ambiguous', - 'u_lb_alphabetic', - 'u_lb_break_both', - 'u_lb_break_after', - 'u_lb_break_before', - 'u_lb_mandatory_break', - 'u_lb_contingent_break', - 'u_lb_close_punctuation', - 'u_lb_combining_mark', - 'u_lb_carriage_return', - 'u_lb_exclamation', - 'u_lb_glue', - 'u_lb_hyphen', - 'u_lb_ideographic', - 'u_lb_inseparable', - 'u_lb_infix_numeric', - 'u_lb_line_feed', - 'u_lb_nonstarter', - 'u_lb_numeric', - 'u_lb_open_punctuation', - 'u_lb_postfix_numeric', - 'u_lb_prefix_numeric', - 'u_lb_quotation', - 'u_lb_complex_context', - 'u_lb_surrogate', - 'u_lb_space', - 'u_lb_break_symbols', - 'u_lb_zwspace', - 'u_lb_next_line', - 'u_lb_word_joiner', - 'u_lb_h2', - 'u_lb_h3', - 'u_lb_jl', - 'u_lb_jt', - 'u_lb_jv', - 'u_nt_none', - 'u_nt_decimal', - 'u_nt_digit', - 'u_nt_numeric', - 'locale_english', - 'locale_french', - 'locale_german', - 'locale_italian', - 'locale_japanese', - 'locale_korean', - 'locale_chinese', - 'locale_simplifiedchinese', - 'locale_traditionalchinese', - 'locale_france', - 'locale_germany', - 'locale_italy', - 'locale_japan', - 'locale_korea', - 'locale_china', - 'locale_prc', - 'locale_taiwan', - 'locale_uk', - 'locale_us', - 'locale_canada', - 'locale_canadafrench', - 'locale_default', - 'locale_setdefault', - 'locale_isocountries', - 'locale_isolanguages', - 'locale_availablelocales', - 'ucal_listtimezones', - 'ucal_era', - 'ucal_year', - 'ucal_month', - 'ucal_weekofyear', - 'ucal_weekofmonth', - 'ucal_dayofmonth', - 'ucal_dayofyear', - 'ucal_dayofweek', - 'ucal_dayofweekinmonth', - 'ucal_ampm', - 'ucal_hour', - 'ucal_hourofday', - 'ucal_minute', - 'ucal_second', - 'ucal_millisecond', - 'ucal_zoneoffset', - 'ucal_dstoffset', - 'ucal_yearwoy', - 'ucal_dowlocal', - 'ucal_extendedyear', - 'ucal_julianday', - 'ucal_millisecondsinday', - 'ucal_lenient', - 'ucal_firstdayofweek', - 'ucal_daysinfirstweek', - 'sys_sigalrm', - 'sys_sighup', - 'sys_sigkill', - 'sys_sigpipe', - 'sys_sigquit', - 'sys_sigusr1', - 'sys_sigusr2', - 'sys_sigchld', - 'sys_sigcont', - 'sys_sigstop', - 'sys_sigtstp', - 'sys_sigttin', - 'sys_sigttou', - 'sys_sigbus', - 'sys_sigprof', - 'sys_sigsys', - 'sys_sigtrap', - 'sys_sigurg', - 'sys_sigvtalrm', - 'sys_sigxcpu', - 'sys_sigxfsz', - 'sys_wcontinued', - 'sys_wnohang', - 'sys_wuntraced', - 'sys_sigabrt', - 'sys_sigfpe', - 'sys_sigill', - 'sys_sigint', - 'sys_sigsegv', - 'sys_sigterm', - 'sys_exit', - 'sys_fork', - 'sys_kill', - 'sys_waitpid', - 'sys_getegid', - 'sys_geteuid', - 'sys_getgid', - 'sys_getlogin', - 'sys_getpid', - 'sys_getppid', - 'sys_getuid', - 'sys_setuid', - 'sys_setgid', - 'sys_setsid', - 'sys_errno', - 'sys_strerror', - 'sys_time', - 'sys_difftime', - 'sys_getpwuid', - 'sys_getpwnam', - 'sys_getgrnam', - 'sys_drand48', - 'sys_erand48', - 'sys_jrand48', - 'sys_lcong48', - 'sys_lrand48', - 'sys_mrand48', - 'sys_nrand48', - 'sys_srand48', - 'sys_random', - 'sys_srandom', - 'sys_seed48', - 'sys_rand', - 'sys_srand', - 'sys_environ', - 'sys_getenv', - 'sys_setenv', - 'sys_unsetenv', - 'sys_uname', - 'uuid_compare', - 'uuid_copy', - 'uuid_generate', - 'uuid_generate_random', - 'uuid_generate_time', - 'uuid_is_null', - 'uuid_parse', - 'uuid_unparse', - 'uuid_unparse_lower', - 'uuid_unparse_upper', - 'sys_credits', - 'sleep', - 'sys_dll_ext', - 'sys_listtypes', - 'sys_listtraits', - 'sys_listunboundmethods', - 'sys_getthreadcount', - 'sys_growheapby', - 'sys_getheapsize', - 'sys_getheapfreebytes', - 'sys_getbytessincegc', - 'sys_garbagecollect', - 'sys_clock', - 'sys_getstartclock', - 'sys_clockspersec', - 'sys_pointersize', - 'sys_loadlibrary', - 'sys_getchar', - 'sys_chroot', - 'sys_exec', - 'sys_kill_exec', - 'sys_wait_exec', - 'sys_test_exec', - 'sys_detach_exec', - 'sys_pid_exec', - 'wifexited', - 'wexitstatus', - 'wifsignaled', - 'wtermsig', - 'wifstopped', - 'wstopsig', - 'wifcontinued', - 'sys_eol', - 'sys_iswindows', - 'sys_is_windows', - 'sys_isfullpath', - 'sys_is_full_path', - 'lcapi_loadmodule', - 'lcapi_listdatasources', - 'encrypt_blowfish', - 'decrypt_blowfish', + 'capture_nearestloopcontinue', + 'capture_nearestloopcount', + 'checked', + 'cipher_decrypt_private', + 'cipher_decrypt_public', + 'cipher_decrypt', 'cipher_digest', + 'cipher_encrypt_private', + 'cipher_encrypt_public', 'cipher_encrypt', - 'cipher_decrypt', - 'cipher_list', - 'cipher_keylength', + 'cipher_generate_key', 'cipher_hmac', - 'cipher_seal', + 'cipher_keylength', + 'cipher_list', 'cipher_open', + 'cipher_seal', 'cipher_sign', 'cipher_verify', - 'cipher_decrypt_private', - 'cipher_decrypt_public', - 'cipher_encrypt_private', - 'cipher_encrypt_public', - 'cipher_generate_key', - 'tag_exists', - 'curl_easy_init', - 'curl_easy_duphandle', + 'client_addr', + 'client_authorization', + 'client_browser', + 'client_contentlength', + 'client_contenttype', + 'client_cookielist', + 'client_cookies', + 'client_encoding', + 'client_formmethod', + 'client_getargs', + 'client_getparam', + 'client_getparams', + 'client_headers', + 'client_integertoip', + 'client_iptointeger', + 'client_password', + 'client_postargs', + 'client_postparam', + 'client_postparams', + 'client_type', + 'client_url', + 'client_username', + 'cn', + 'column_name', + 'column_names', + 'column_type', + 'column', + 'compress', + 'content_addheader', + 'content_body', + 'content_encoding', + 'content_header', + 'content_replaceheader', + 'content_type', + 'cookie_set', + 'cookie', 'curl_easy_cleanup', + 'curl_easy_duphandle', 'curl_easy_getinfo', - 'curl_multi_perform', - 'curl_multi_result', + 'curl_easy_init', 'curl_easy_reset', 'curl_easy_setopt', 'curl_easy_strerror', 'curl_getdate', - 'curl_version', + 'curl_http_version_1_0', + 'curl_http_version_1_1', + 'curl_http_version_none', + 'curl_ipresolve_v4', + 'curl_ipresolve_v6', + 'curl_ipresolve_whatever', + 'curl_multi_perform', + 'curl_multi_result', + 'curl_netrc_ignored', + 'curl_netrc_optional', + 'curl_netrc_required', + 'curl_version_asynchdns', + 'curl_version_debug', + 'curl_version_gssnegotiate', + 'curl_version_idn', 'curl_version_info', - 'curlinfo_effective_url', + 'curl_version_ipv6', + 'curl_version_kerberos4', + 'curl_version_largefile', + 'curl_version_libz', + 'curl_version_ntlm', + 'curl_version_spnego', + 'curl_version_ssl', + 'curl_version', + 'curlauth_any', + 'curlauth_anysafe', + 'curlauth_basic', + 'curlauth_digest', + 'curlauth_gssnegotiate', + 'curlauth_none', + 'curlauth_ntlm', + 'curle_aborted_by_callback', + 'curle_bad_calling_order', + 'curle_bad_content_encoding', + 'curle_bad_download_resume', + 'curle_bad_function_argument', + 'curle_bad_password_entered', + 'curle_couldnt_connect', + 'curle_couldnt_resolve_host', + 'curle_couldnt_resolve_proxy', + 'curle_failed_init', + 'curle_file_couldnt_read_file', + 'curle_filesize_exceeded', + 'curle_ftp_access_denied', + 'curle_ftp_cant_get_host', + 'curle_ftp_cant_reconnect', + 'curle_ftp_couldnt_get_size', + 'curle_ftp_couldnt_retr_file', + 'curle_ftp_couldnt_set_ascii', + 'curle_ftp_couldnt_set_binary', + 'curle_ftp_couldnt_use_rest', + 'curle_ftp_port_failed', + 'curle_ftp_quote_error', + 'curle_ftp_ssl_failed', + 'curle_ftp_user_password_incorrect', + 'curle_ftp_weird_227_format', + 'curle_ftp_weird_pass_reply', + 'curle_ftp_weird_pasv_reply', + 'curle_ftp_weird_server_reply', + 'curle_ftp_weird_user_reply', + 'curle_ftp_write_error', + 'curle_function_not_found', + 'curle_got_nothing', + 'curle_http_post_error', + 'curle_http_range_error', + 'curle_http_returned_error', + 'curle_interface_failed', + 'curle_ldap_cannot_bind', + 'curle_ldap_invalid_url', + 'curle_ldap_search_failed', + 'curle_library_not_found', + 'curle_login_denied', + 'curle_malformat_user', + 'curle_obsolete', + 'curle_ok', + 'curle_operation_timeouted', + 'curle_out_of_memory', + 'curle_partial_file', + 'curle_read_error', + 'curle_recv_error', + 'curle_send_error', + 'curle_send_fail_rewind', + 'curle_share_in_use', + 'curle_ssl_cacert', + 'curle_ssl_certproblem', + 'curle_ssl_cipher', + 'curle_ssl_connect_error', + 'curle_ssl_engine_initfailed', + 'curle_ssl_engine_notfound', + 'curle_ssl_engine_setfailed', + 'curle_ssl_peer_certificate', + 'curle_telnet_option_syntax', + 'curle_too_many_redirects', + 'curle_unknown_telnet_option', + 'curle_unsupported_protocol', + 'curle_url_malformat_user', + 'curle_url_malformat', + 'curle_write_error', + 'curlftpauth_default', + 'curlftpauth_ssl', + 'curlftpauth_tls', + 'curlftpssl_all', + 'curlftpssl_control', + 'curlftpssl_last', + 'curlftpssl_none', + 'curlftpssl_try', + 'curlinfo_connect_time', + 'curlinfo_content_length_download', + 'curlinfo_content_length_upload', 'curlinfo_content_type', - 'curlinfo_response_code', - 'curlinfo_header_size', - 'curlinfo_request_size', - 'curlinfo_ssl_verifyresult', + 'curlinfo_effective_url', 'curlinfo_filetime', - 'curlinfo_redirect_count', + 'curlinfo_header_size', 'curlinfo_http_connectcode', 'curlinfo_httpauth_avail', - 'curlinfo_proxyauth_avail', - 'curlinfo_os_errno', - 'curlinfo_num_connects', - 'curlinfo_total_time', 'curlinfo_namelookup_time', - 'curlinfo_connect_time', + 'curlinfo_num_connects', + 'curlinfo_os_errno', 'curlinfo_pretransfer_time', - 'curlinfo_size_upload', + 'curlinfo_proxyauth_avail', + 'curlinfo_redirect_count', + 'curlinfo_redirect_time', + 'curlinfo_request_size', + 'curlinfo_response_code', 'curlinfo_size_download', + 'curlinfo_size_upload', 'curlinfo_speed_download', 'curlinfo_speed_upload', - 'curlinfo_content_length_download', - 'curlinfo_content_length_upload', - 'curlinfo_starttransfer_time', - 'curlinfo_redirect_time', 'curlinfo_ssl_engines', - 'curlopt_url', - 'curlopt_postfields', + 'curlinfo_ssl_verifyresult', + 'curlinfo_starttransfer_time', + 'curlinfo_total_time', + 'curlmsg_done', + 'curlopt_autoreferer', + 'curlopt_buffersize', 'curlopt_cainfo', 'curlopt_capath', + 'curlopt_connecttimeout', 'curlopt_cookie', 'curlopt_cookiefile', 'curlopt_cookiejar', - 'curlopt_customrequest', - 'curlopt_egdsocket', - 'curlopt_encoding', - 'curlopt_ftp_account', - 'curlopt_ftpport', - 'curlopt_interface', - 'curlopt_krb4level', - 'curlopt_netrc_file', - 'curlopt_proxy', - 'curlopt_proxyuserpwd', - 'curlopt_random_file', - 'curlopt_range', - 'curlopt_readdata', - 'curlopt_referer', - 'curlopt_ssl_cipher_list', - 'curlopt_sslcert', - 'curlopt_sslcerttype', - 'curlopt_sslengine', - 'curlopt_sslkey', - 'curlopt_sslkeypasswd', - 'curlopt_sslkeytype', - 'curlopt_useragent', - 'curlopt_userpwd', - 'curlopt_postfieldsize', - 'curlopt_autoreferer', - 'curlopt_buffersize', - 'curlopt_connecttimeout', 'curlopt_cookiesession', 'curlopt_crlf', + 'curlopt_customrequest', 'curlopt_dns_use_global_cache', + 'curlopt_egdsocket', + 'curlopt_encoding', 'curlopt_failonerror', 'curlopt_filetime', 'curlopt_followlocation', 'curlopt_forbid_reuse', 'curlopt_fresh_connect', + 'curlopt_ftp_account', 'curlopt_ftp_create_missing_dirs', 'curlopt_ftp_response_timeout', 'curlopt_ftp_ssl', - 'curlopt_use_ssl', 'curlopt_ftp_use_eprt', 'curlopt_ftp_use_epsv', 'curlopt_ftpappend', 'curlopt_ftplistonly', + 'curlopt_ftpport', 'curlopt_ftpsslauth', 'curlopt_header', 'curlopt_http_version', + 'curlopt_http200aliases', 'curlopt_httpauth', 'curlopt_httpget', + 'curlopt_httpheader', + 'curlopt_httppost', 'curlopt_httpproxytunnel', + 'curlopt_infilesize_large', 'curlopt_infilesize', + 'curlopt_interface', 'curlopt_ipresolve', + 'curlopt_krb4level', 'curlopt_low_speed_limit', 'curlopt_low_speed_time', + 'curlopt_mail_from', + 'curlopt_mail_rcpt', 'curlopt_maxconnects', + 'curlopt_maxfilesize_large', 'curlopt_maxfilesize', 'curlopt_maxredirs', + 'curlopt_netrc_file', 'curlopt_netrc', 'curlopt_nobody', 'curlopt_noprogress', 'curlopt_port', 'curlopt_post', + 'curlopt_postfields', + 'curlopt_postfieldsize_large', + 'curlopt_postfieldsize', + 'curlopt_postquote', + 'curlopt_prequote', + 'curlopt_proxy', 'curlopt_proxyauth', 'curlopt_proxyport', 'curlopt_proxytype', + 'curlopt_proxyuserpwd', 'curlopt_put', + 'curlopt_quote', + 'curlopt_random_file', + 'curlopt_range', + 'curlopt_readdata', + 'curlopt_referer', + 'curlopt_resume_from_large', 'curlopt_resume_from', + 'curlopt_ssl_cipher_list', 'curlopt_ssl_verifyhost', 'curlopt_ssl_verifypeer', + 'curlopt_sslcert', + 'curlopt_sslcerttype', 'curlopt_sslengine_default', + 'curlopt_sslengine', + 'curlopt_sslkey', + 'curlopt_sslkeypasswd', + 'curlopt_sslkeytype', 'curlopt_sslversion', 'curlopt_tcp_nodelay', 'curlopt_timecondition', @@ -991,860 +685,1221 @@ BUILTINS = { 'curlopt_transfertext', 'curlopt_unrestricted_auth', 'curlopt_upload', + 'curlopt_url', + 'curlopt_use_ssl', + 'curlopt_useragent', + 'curlopt_userpwd', 'curlopt_verbose', - 'curlopt_infilesize_large', - 'curlopt_maxfilesize_large', - 'curlopt_postfieldsize_large', - 'curlopt_resume_from_large', - 'curlopt_http200aliases', - 'curlopt_httpheader', - 'curlopt_postquote', - 'curlopt_prequote', - 'curlopt_quote', - 'curlopt_httppost', 'curlopt_writedata', - 'curl_version_ipv6', - 'curl_version_kerberos4', - 'curl_version_ssl', - 'curl_version_libz', - 'curl_version_ntlm', - 'curl_version_gssnegotiate', - 'curl_version_debug', - 'curl_version_asynchdns', - 'curl_version_spnego', - 'curl_version_largefile', - 'curl_version_idn', - 'curl_netrc_ignored', - 'curl_netrc_optional', - 'curl_netrc_required', - 'curl_http_version_none', - 'curl_http_version_1_0', - 'curl_http_version_1_1', - 'curl_ipresolve_whatever', - 'curl_ipresolve_v4', - 'curl_ipresolve_v6', - 'curlftpssl_none', - 'curlftpssl_try', - 'curlftpssl_control', - 'curlftpssl_all', - 'curlftpssl_last', - 'curlftpauth_default', - 'curlftpauth_ssl', - 'curlftpauth_tls', - 'curlauth_none', - 'curlauth_basic', - 'curlauth_digest', - 'curlauth_gssnegotiate', - 'curlauth_ntlm', - 'curlauth_any', - 'curlauth_anysafe', 'curlproxy_http', 'curlproxy_socks4', 'curlproxy_socks5', - 'curle_ok', - 'curle_unsupported_protocol', - 'curle_failed_init', - 'curle_url_malformat', - 'curle_url_malformat_user', - 'curle_couldnt_resolve_proxy', - 'curle_couldnt_resolve_host', - 'curle_couldnt_connect', - 'curle_ftp_weird_server_reply', - 'curle_ftp_access_denied', - 'curle_ftp_user_password_incorrect', - 'curle_ftp_weird_pass_reply', - 'curle_ftp_weird_user_reply', - 'curle_ftp_weird_pasv_reply', - 'curle_ftp_weird_227_format', - 'curle_ftp_cant_get_host', - 'curle_ftp_cant_reconnect', - 'curle_ftp_couldnt_set_binary', - 'curle_partial_file', - 'curle_ftp_couldnt_retr_file', - 'curle_ftp_write_error', - 'curle_ftp_quote_error', - 'curle_http_returned_error', - 'curle_write_error', - 'curle_malformat_user', - 'curle_read_error', - 'curle_out_of_memory', - 'curle_operation_timeouted', - 'curle_ftp_couldnt_set_ascii', - 'curle_ftp_port_failed', - 'curle_ftp_couldnt_use_rest', - 'curle_ftp_couldnt_get_size', - 'curle_http_range_error', - 'curle_http_post_error', - 'curle_ssl_connect_error', - 'curle_bad_download_resume', - 'curle_file_couldnt_read_file', - 'curle_ldap_cannot_bind', - 'curle_ldap_search_failed', - 'curle_library_not_found', - 'curle_function_not_found', - 'curle_aborted_by_callback', - 'curle_bad_function_argument', - 'curle_bad_calling_order', - 'curle_interface_failed', - 'curle_bad_password_entered', - 'curle_too_many_redirects', - 'curle_unknown_telnet_option', - 'curle_telnet_option_syntax', - 'curle_obsolete', - 'curle_ssl_peer_certificate', - 'curle_got_nothing', - 'curle_ssl_engine_notfound', - 'curle_ssl_engine_setfailed', - 'curle_send_error', - 'curle_recv_error', - 'curle_share_in_use', - 'curle_ssl_certproblem', - 'curle_ssl_cipher', - 'curle_ssl_cacert', - 'curle_bad_content_encoding', - 'curle_ldap_invalid_url', - 'curle_filesize_exceeded', - 'curle_ftp_ssl_failed', - 'curle_send_fail_rewind', - 'curle_ssl_engine_initfailed', - 'curle_login_denied', - 'curlmsg_done', - 'zip_open', - 'zip_name_locate', - 'zip_fopen', - 'zip_fopen_index', - 'zip_fread', - 'zip_fclose', - 'zip_close', - 'zip_stat', - 'zip_stat_index', - 'zip_get_archive_comment', - 'zip_get_file_comment', - 'zip_get_name', - 'zip_get_num_files', - 'zip_add', - 'zip_replace', - 'zip_add_dir', - 'zip_set_file_comment', - 'zip_rename', - 'zip_delete', - 'zip_unchange', - 'zip_unchange_all', - 'zip_unchange_archive', - 'zip_set_archive_comment', - 'zip_error_to_str', - 'zip_file_strerror', - 'zip_strerror', - 'zip_error_get', - 'zip_file_error_get', - 'zip_error_get_sys_type', - 'zlib_version', - 'fastcgi_initiate_request', - 'debugging_enabled', - 'debugging_stop', - 'evdns_resolve_ipv4', - 'evdns_resolve_ipv6', - 'evdns_resolve_reverse', - 'evdns_resolve_reverse_ipv6', - 'stdout', - 'stdoutnl', - 'fail', - 'fail_if', - 'fail_ifnot', - 'error_code', - 'error_msg', - 'error_obj', - 'error_stack', - 'error_push', - 'error_pop', - 'error_reset', - 'error_msg_invalidparameter', - 'error_code_invalidparameter', - 'error_msg_networkerror', - 'error_code_networkerror', - 'error_msg_runtimeassertion', - 'error_code_runtimeassertion', - 'error_msg_methodnotfound', - 'error_code_methodnotfound', - 'error_msg_resnotfound', - 'error_code_resnotfound', - 'error_msg_filenotfound', - 'error_code_filenotfound', - 'error_msg_aborted', - 'error_code_aborted', - 'error_msg_dividebyzero', - 'error_code_dividebyzero', - 'error_msg_noerror', - 'error_code_noerror', - 'abort', - 'protect', - 'generateforeach', - 'method_name', - 'queriable_do', - 'queriable_sum', - 'queriable_average', - 'queriable_min', - 'queriable_max', - 'queriable_internal_combinebindings', - 'queriable_defaultcompare', - 'queriable_reversecompare', - 'queriable_qsort', - 'timer', - 'thread_var_push', - 'thread_var_pop', - 'thread_var_get', - 'loop_value', - 'loop_value_push', - 'loop_value_pop', - 'loop_key', - 'loop_key_push', - 'loop_key_pop', - 'loop_push', - 'loop_pop', - 'loop_count', - 'loop_continue', - 'loop_abort', - 'loop', - 'sys_while', - 'sys_iterate', - 'string_validcharset', - 'eol', - 'encoding_utf8', - 'encoding_iso88591', - 'integer_random', - 'integer_bitor', - 'millis', - 'micros', - 'max', - 'min', - 'range', - 'median', - 'decimal_random', - 'pi', - 'lcapi_datasourceinit', - 'lcapi_datasourceterm', - 'lcapi_datasourcenames', - 'lcapi_datasourcetablenames', - 'lcapi_datasourcesearch', - 'lcapi_datasourceadd', - 'lcapi_datasourceupdate', - 'lcapi_datasourcedelete', - 'lcapi_datasourceinfo', - 'lcapi_datasourceexecsql', - 'lcapi_datasourcerandom', - 'lcapi_datasourceschemanames', - 'lcapi_datasourcecloseconnection', - 'lcapi_datasourcetickle', - 'lcapi_datasourceduplicate', - 'lcapi_datasourcescripts', - 'lcapi_datasourceimage', - 'lcapi_datasourcefindall', - 'lcapi_datasourcematchesname', - 'lcapi_datasourcepreparesql', - 'lcapi_datasourceunpreparesql', - 'lcapi_datasourcenothing', - 'lcapi_fourchartointeger', - 'lcapi_datasourcetypestring', - 'lcapi_datasourcetypeinteger', - 'lcapi_datasourcetypeboolean', - 'lcapi_datasourcetypeblob', - 'lcapi_datasourcetypedecimal', - 'lcapi_datasourcetypedate', - 'lcapi_datasourceprotectionnone', - 'lcapi_datasourceprotectionreadonly', - 'lcapi_datasourceopgt', - 'lcapi_datasourceopgteq', - 'lcapi_datasourceopeq', - 'lcapi_datasourceopneq', - 'lcapi_datasourceoplt', - 'lcapi_datasourceoplteq', - 'lcapi_datasourceopbw', - 'lcapi_datasourceopew', - 'lcapi_datasourceopct', - 'lcapi_datasourceopnct', - 'lcapi_datasourceopnbw', - 'lcapi_datasourceopnew', - 'lcapi_datasourceopand', - 'lcapi_datasourceopor', - 'lcapi_datasourceopnot', - 'lcapi_datasourceopno', - 'lcapi_datasourceopany', - 'lcapi_datasourceopin', - 'lcapi_datasourceopnin', - 'lcapi_datasourceopft', - 'lcapi_datasourceoprx', - 'lcapi_datasourceopnrx', - 'lcapi_datasourcesortascending', - 'lcapi_datasourcesortdescending', - 'lcapi_datasourcesortcustom', - 'lcapi_updatedatasourceslist', - 'lcapi_loadmodules', - 'lasso_version', - 'lasso_uniqueid', - 'usage', - 'file_defaultencoding', - 'file_copybuffersize', - 'file_modeline', - 'file_modechar', - 'file_forceroot', - 'file_tempfile', - 'file_stdin', - 'file_stdout', - 'file_stderr', - 'lasso_tagexists', - 'lasso_methodexists', - 'output', - 'if_empty', - 'if_null', - 'if_true', - 'if_false', - 'process', - 'treemap', - 'locale_format', - 'compress', - 'uncompress', - 'decompress', - 'tag_name', - 'series', - 'nslookup', - 'all', - 'bw', - 'cn', - 'eq', - 'ew', - 'ft', - 'gt', - 'gte', - 'lt', - 'lte', - 'neq', - 'nrx', - 'rx', - 'none', - 'minimal', - 'full', - 'output_none', - 'lasso_executiontimelimit', - 'namespace_global', - 'namespace_using', - 'namespace_import', - 'site_id', - 'site_name', - 'sys_homepath', - 'sys_masterhomepath', - 'sys_supportpath', - 'sys_librariespath', - 'sys_databasespath', - 'sys_usercapimodulepath', - 'sys_appspath', - 'sys_userstartuppath', - 'ldap_scope_base', - 'ldap_scope_onelevel', - 'ldap_scope_subtree', - 'mysqlds', - 'odbc', - 'sqliteconnector', - 'sqlite_createdb', - 'sqlite_setsleepmillis', - 'sqlite_setsleeptries', - 'java_jvm_getenv', - 'java_jvm_create', - 'java_jdbc_load', + 'database_adddefaultsqlitehost', 'database_database', - 'database_table_datasources', - 'database_table_datasource_hosts', - 'database_table_datasource_databases', + 'database_initialize', + 'database_name', + 'database_qs', 'database_table_database_tables', + 'database_table_datasource_databases', + 'database_table_datasource_hosts', + 'database_table_datasources', 'database_table_table_fields', - 'database_qs', - 'database_initialize', 'database_util_cleanpath', - 'database_adddefaultsqlitehost', - 'sqlite_ok', - 'sqlite_error', - 'sqlite_internal', - 'sqlite_perm', - 'sqlite_abort', - 'sqlite_busy', - 'sqlite_locked', - 'sqlite_nomem', - 'sqlite_readonly', - 'sqlite_interrupt', - 'sqlite_ioerr', - 'sqlite_corrupt', - 'sqlite_notfound', - 'sqlite_full', - 'sqlite_cantopen', - 'sqlite_protocol', - 'sqlite_empty', - 'sqlite_schema', - 'sqlite_toobig', - 'sqlite_constraint', - 'sqlite_mismatch', - 'sqlite_misuse', - 'sqlite_nolfs', - 'sqlite_auth', - 'sqlite_format', - 'sqlite_range', - 'sqlite_notadb', - 'sqlite_row', - 'sqlite_done', - 'sqlite_integer', - 'sqlite_float', - 'sqlite_blob', - 'sqlite_null', - 'sqlite_text', - 'bom_utf16be', - 'bom_utf16le', - 'bom_utf32be', - 'bom_utf32le', - 'bom_utf8', - 'include_url', - 'ftp_getdata', - 'ftp_getfile', - 'ftp_getlisting', - 'ftp_putdata', - 'ftp_putfile', - 'ftp_deletefile', - 'debugging_step_in', - 'debugging_get_stack', - 'debugging_get_context', - 'debugging_detach', - 'debugging_step_over', - 'debugging_step_out', - 'debugging_run', + 'dbgp_stop_stack_name', 'debugging_break', - 'debugging_breakpoint_set', 'debugging_breakpoint_get', - 'debugging_breakpoint_remove', 'debugging_breakpoint_list', + 'debugging_breakpoint_remove', + 'debugging_breakpoint_set', 'debugging_breakpoint_update', - 'debugging_terminate', 'debugging_context_locals', - 'debugging_context_vars', 'debugging_context_self', - 'dbgp_stop_stack_name', - 'encrypt_md5', - 'inline_columninfo_pos', - 'inline_resultrows_pos', - 'inline_foundcount_pos', - 'inline_colinfo_name_pos', - 'inline_colinfo_valuelist_pos', - 'inline_scopeget', - 'inline_scopepush', - 'inline_scopepop', - 'inline_namedget', - 'inline_namedput', - 'inline', - 'resultset_count', - 'resultset', - 'resultsets', - 'rows', - 'rows_impl', - 'records', - 'column', - 'field', - 'column_names', - 'field_names', - 'column_name', - 'field_name', - 'found_count', - 'shown_count', - 'shown_first', - 'shown_last', - 'action_statement', - 'lasso_currentaction', - 'maxrecords_value', - 'skiprecords_value', - 'action_param', - 'action_params', - 'admin_authorization', - 'admin_currentgroups', - 'admin_currentuserid', - 'admin_currentusername', - 'database_name', - 'table_name', - 'layout_name', - 'schema_name', - 'keycolumn_name', - 'keyfield_name', - 'keycolumn_value', - 'keyfield_value', - 'inline_colinfo_type_pos', - 'column_type', - 'rows_array', - 'records_array', - 'records_map', - 'json_serialize', - 'json_consume_string', - 'json_consume_token', - 'json_consume_array', - 'json_consume_object', - 'json_deserialize', - 'json_rpccall', - 'ljapi_initialize', - 'locale_format_style_full', - 'locale_format_style_long', - 'locale_format_style_medium', - 'locale_format_style_short', - 'locale_format_style_default', - 'locale_format_style_none', - 'locale_format_style_date_time', - 'net_connectinprogress', - 'net_connectok', - 'net_typessl', - 'net_typessltcp', - 'net_typessludp', - 'net_typetcp', - 'net_typeudp', - 'net_waitread', - 'net_waittimeout', - 'net_waitwrite', - 'admin_initialize', - 'admin_getpref', - 'admin_setpref', - 'admin_removepref', - 'admin_userexists', - 'admin_lassoservicepath', - 'pdf_package', - 'pdf_rectangle', - 'pdf_serve', - 'random_seed', - 'xml', - 'xml_transform', - 'zip_create', - 'zip_excl', - 'zip_checkcons', - 'zip_fl_nocase', - 'zip_fl_nodir', - 'zip_fl_compressed', - 'zip_fl_unchanged', - 'zip_er_ok', - 'zip_er_multidisk', - 'zip_er_rename', - 'zip_er_close', - 'zip_er_seek', - 'zip_er_read', - 'zip_er_write', - 'zip_er_crc', - 'zip_er_zipclosed', - 'zip_er_noent', - 'zip_er_exists', - 'zip_er_open', - 'zip_er_tmpopen', - 'zip_er_zlib', - 'zip_er_memory', - 'zip_er_changed', - 'zip_er_compnotsupp', - 'zip_er_eof', - 'zip_er_inval', - 'zip_er_nozip', - 'zip_er_internal', - 'zip_er_incons', - 'zip_er_remove', - 'zip_er_deleted', - 'zip_et_none', - 'zip_et_sys', - 'zip_et_zlib', - 'zip_cm_default', - 'zip_cm_store', - 'zip_cm_shrink', - 'zip_cm_reduce_1', - 'zip_cm_reduce_2', - 'zip_cm_reduce_3', - 'zip_cm_reduce_4', - 'zip_cm_implode', - 'zip_cm_deflate', - 'zip_cm_deflate64', - 'zip_cm_pkware_implode', - 'zip_cm_bzip2', - 'zip_em_none', - 'zip_em_trad_pkware', - 'zip_em_des', - 'zip_em_rc2_old', - 'zip_em_3des_168', - 'zip_em_3des_112', - 'zip_em_aes_128', - 'zip_em_aes_192', - 'zip_em_aes_256', - 'zip_em_rc2', - 'zip_em_rc4', - 'zip_em_unknown', - 'dns_lookup', + 'debugging_context_vars', + 'debugging_detach', + 'debugging_enabled', + 'debugging_get_context', + 'debugging_get_stack', + 'debugging_run', + 'debugging_step_in', + 'debugging_step_out', + 'debugging_step_over', + 'debugging_stop', + 'debugging_terminate', + 'decimal_random', + 'decompress', + 'decrypt_blowfish', + 'define_atbegin', + 'define_atend', 'dns_default', - 'string_charfromname', - 'string_concatenate', - 'string_endswith', - 'string_extract', - 'string_findposition', - 'string_findregexp', - 'string_getunicodeversion', - 'string_insert', - 'string_isalpha', - 'string_isalphanumeric', - 'string_isdigit', - 'string_ishexdigit', - 'string_islower', - 'string_isnumeric', - 'string_ispunctuation', - 'string_isspace', - 'string_isupper', - 'string_length', - 'string_remove', - 'string_removeleading', - 'string_removetrailing', - 'string_replace', - 'string_replaceregexp', - 'string_todecimal', - 'string_tointeger', - 'string_uppercase', - 'string_lowercase', + 'dns_lookup', 'document', 'email_attachment_mime_type', - 'email_translatebreakstocrlf', + 'email_batch', + 'email_digestchallenge', + 'email_digestresponse', + 'email_extract', 'email_findemails', - 'email_fix_address', 'email_fix_address_list', - 'encode_qheader', - 'email_send', - 'email_queue', + 'email_fix_address', + 'email_fs_error_clean', 'email_immediate', - 'email_result', - 'email_status', - 'email_token', + 'email_initialize', 'email_merge', - 'email_batch', - 'email_safeemail', - 'email_extract', - 'email_pop_priv_substring', + 'email_mxlookup', 'email_pop_priv_extract', - 'email_digestchallenge', 'email_pop_priv_quote', - 'email_digestresponse', - 'encrypt_hmac', + 'email_pop_priv_substring', + 'email_queue', + 'email_result', + 'email_safeemail', + 'email_send', + 'email_status', + 'email_token', + 'email_translatebreakstocrlf', + 'encode_qheader', + 'encoding_iso88591', + 'encoding_utf8', + 'encrypt_blowfish', 'encrypt_crammd5', - 'email_fs_error_clean', - 'email_initialize', - 'email_mxlookup', - 'lasso_errorreporting', - 'fcgi_version_1', - 'fcgi_null_request_id', - 'fcgi_begin_request', + 'encrypt_hmac', + 'encrypt_md5', + 'eol', + 'eq', + 'error_code_aborted', + 'error_code_dividebyzero', + 'error_code_filenotfound', + 'error_code_invalidparameter', + 'error_code_methodnotfound', + 'error_code_networkerror', + 'error_code_noerror', + 'error_code_resnotfound', + 'error_code_runtimeassertion', + 'error_code', + 'error_msg_aborted', + 'error_msg_dividebyzero', + 'error_msg_filenotfound', + 'error_msg_invalidparameter', + 'error_msg_methodnotfound', + 'error_msg_networkerror', + 'error_msg_noerror', + 'error_msg_resnotfound', + 'error_msg_runtimeassertion', + 'error_msg', + 'error_obj', + 'error_pop', + 'error_push', + 'error_reset', + 'error_stack', + 'escape_tag', + 'evdns_resolve_ipv4', + 'evdns_resolve_ipv6', + 'evdns_resolve_reverse_ipv6', + 'evdns_resolve_reverse', + 'ew', + 'fail_if', + 'fail_ifnot', + 'fail_now', + 'fail', + 'failure_clear', + 'fastcgi_createfcgirequest', + 'fastcgi_handlecon', + 'fastcgi_handlereq', + 'fastcgi_initialize', + 'fastcgi_initiate_request', 'fcgi_abort_request', - 'fcgi_end_request', - 'fcgi_params', - 'fcgi_stdin', - 'fcgi_stdout', - 'fcgi_stderr', + 'fcgi_authorize', + 'fcgi_begin_request', + 'fcgi_bodychunksize', + 'fcgi_cant_mpx_conn', 'fcgi_data', - 'fcgi_get_values', + 'fcgi_end_request', + 'fcgi_filter', 'fcgi_get_values_result', - 'fcgi_unknown_type', + 'fcgi_get_values', 'fcgi_keep_conn', - 'fcgi_responder', - 'fcgi_authorize', - 'fcgi_filter', - 'fcgi_request_complete', - 'fcgi_cant_mpx_conn', - 'fcgi_overloaded', - 'fcgi_unknown_role', + 'fcgi_makeendrequestbody', + 'fcgi_makestdoutbody', 'fcgi_max_conns', 'fcgi_max_reqs', 'fcgi_mpxs_conns', + 'fcgi_null_request_id', + 'fcgi_overloaded', + 'fcgi_params', 'fcgi_read_timeout_seconds', - 'fcgi_makeendrequestbody', - 'fcgi_bodychunksize', - 'fcgi_makestdoutbody', 'fcgi_readparam', - 'web_request', - 'include_cache_compare', - 'fastcgi_initialize', - 'fastcgi_handlecon', - 'fastcgi_handlereq', - 'fastcgi_createfcgirequest', - 'web_handlefcgirequest', + 'fcgi_request_complete', + 'fcgi_responder', + 'fcgi_stderr', + 'fcgi_stdin', + 'fcgi_stdout', + 'fcgi_unknown_role', + 'fcgi_unknown_type', + 'fcgi_version_1', + 'fcgi_x_stdin', + 'field_name', + 'field_names', + 'field', + 'file_copybuffersize', + 'file_defaultencoding', + 'file_forceroot', + 'file_modechar', + 'file_modeline', + 'file_stderr', + 'file_stdin', + 'file_stdout', + 'file_tempfile', 'filemakerds_initialize', 'filemakerds', - 'value_listitem', - 'valuelistitem', - 'selected', - 'checked', - 'value_list', - 'http_char_space', - 'http_char_htab', + 'found_count', + 'ft', + 'ftp_deletefile', + 'ftp_getdata', + 'ftp_getfile', + 'ftp_getlisting', + 'ftp_putdata', + 'ftp_putfile', + 'full', + 'generateforeach', + 'gt', + 'gte', + 'handle_failure', + 'handle', + 'hash_primes', + 'html_comment', + 'http_char_colon', 'http_char_cr', + 'http_char_htab', 'http_char_lf', 'http_char_question', - 'http_char_colon', - 'http_read_timeout_secs', + 'http_char_space', 'http_default_files', + 'http_read_headers', + 'http_read_timeout_secs', 'http_server_apps_path', + 'http_server_request_logger', + 'if_empty', + 'if_false', + 'if_null', + 'if_true', + 'include_cache_compare', + 'include_currentpath', + 'include_filepath', + 'include_localpath', + 'include_once', + 'include_path', + 'include_raw', + 'include_url', + 'include', + 'includes', + 'inline_colinfo_name_pos', + 'inline_colinfo_type_pos', + 'inline_colinfo_valuelist_pos', + 'inline_columninfo_pos', + 'inline_foundcount_pos', + 'inline_namedget', + 'inline_namedput', + 'inline_resultrows_pos', + 'inline_scopeget', + 'inline_scopepop', + 'inline_scopepush', + 'inline', + 'integer_bitor', + 'integer_random', + 'io_dir_dt_blk', + 'io_dir_dt_chr', + 'io_dir_dt_dir', + 'io_dir_dt_fifo', + 'io_dir_dt_lnk', + 'io_dir_dt_reg', + 'io_dir_dt_sock', + 'io_dir_dt_unknown', + 'io_dir_dt_wht', + 'io_file_access', + 'io_file_chdir', + 'io_file_chmod', + 'io_file_chown', + 'io_file_dirname', + 'io_file_f_dupfd', + 'io_file_f_getfd', + 'io_file_f_getfl', + 'io_file_f_getlk', + 'io_file_f_rdlck', + 'io_file_f_setfd', + 'io_file_f_setfl', + 'io_file_f_setlk', + 'io_file_f_setlkw', + 'io_file_f_test', + 'io_file_f_tlock', + 'io_file_f_ulock', + 'io_file_f_unlck', + 'io_file_f_wrlck', + 'io_file_fd_cloexec', + 'io_file_fioasync', + 'io_file_fioclex', + 'io_file_fiodtype', + 'io_file_fiogetown', + 'io_file_fionbio', + 'io_file_fionclex', + 'io_file_fionread', + 'io_file_fiosetown', + 'io_file_getcwd', + 'io_file_lchown', + 'io_file_link', + 'io_file_lockf', + 'io_file_lstat_atime', + 'io_file_lstat_mode', + 'io_file_lstat_mtime', + 'io_file_lstat_size', + 'io_file_mkdir', + 'io_file_mkfifo', + 'io_file_mkstemp', + 'io_file_o_append', + 'io_file_o_async', + 'io_file_o_creat', + 'io_file_o_excl', + 'io_file_o_exlock', + 'io_file_o_fsync', + 'io_file_o_nofollow', + 'io_file_o_nonblock', + 'io_file_o_rdonly', + 'io_file_o_rdwr', + 'io_file_o_shlock', + 'io_file_o_sync', + 'io_file_o_trunc', + 'io_file_o_wronly', + 'io_file_pipe', + 'io_file_readlink', + 'io_file_realpath', + 'io_file_remove', + 'io_file_rename', + 'io_file_rmdir', + 'io_file_s_ifblk', + 'io_file_s_ifchr', + 'io_file_s_ifdir', + 'io_file_s_ififo', + 'io_file_s_iflnk', + 'io_file_s_ifmt', + 'io_file_s_ifreg', + 'io_file_s_ifsock', + 'io_file_s_irgrp', + 'io_file_s_iroth', + 'io_file_s_irusr', + 'io_file_s_irwxg', + 'io_file_s_irwxo', + 'io_file_s_irwxu', + 'io_file_s_isgid', + 'io_file_s_isuid', + 'io_file_s_isvtx', + 'io_file_s_iwgrp', + 'io_file_s_iwoth', + 'io_file_s_iwusr', + 'io_file_s_ixgrp', + 'io_file_s_ixoth', + 'io_file_s_ixusr', + 'io_file_seek_cur', + 'io_file_seek_end', + 'io_file_seek_set', + 'io_file_stat_atime', + 'io_file_stat_mode', + 'io_file_stat_mtime', + 'io_file_stat_size', + 'io_file_stderr', + 'io_file_stdin', + 'io_file_stdout', + 'io_file_symlink', + 'io_file_tempnam', + 'io_file_truncate', + 'io_file_umask', + 'io_file_unlink', + 'io_net_accept', + 'io_net_af_inet', + 'io_net_af_inet6', + 'io_net_af_unix', + 'io_net_bind', + 'io_net_connect', + 'io_net_getpeername', + 'io_net_getsockname', + 'io_net_ipproto_ip', + 'io_net_ipproto_udp', + 'io_net_listen', + 'io_net_msg_oob', + 'io_net_msg_peek', + 'io_net_msg_waitall', + 'io_net_recv', + 'io_net_recvfrom', + 'io_net_send', + 'io_net_sendto', + 'io_net_shut_rd', + 'io_net_shut_rdwr', + 'io_net_shut_wr', + 'io_net_shutdown', + 'io_net_so_acceptconn', + 'io_net_so_broadcast', + 'io_net_so_debug', + 'io_net_so_dontroute', + 'io_net_so_error', + 'io_net_so_keepalive', + 'io_net_so_linger', + 'io_net_so_oobinline', + 'io_net_so_rcvbuf', + 'io_net_so_rcvlowat', + 'io_net_so_rcvtimeo', + 'io_net_so_reuseaddr', + 'io_net_so_sndbuf', + 'io_net_so_sndlowat', + 'io_net_so_sndtimeo', + 'io_net_so_timestamp', + 'io_net_so_type', + 'io_net_so_useloopback', + 'io_net_sock_dgram', + 'io_net_sock_raw', + 'io_net_sock_rdm', + 'io_net_sock_seqpacket', + 'io_net_sock_stream', + 'io_net_socket', + 'io_net_sol_socket', + 'io_net_ssl_accept', + 'io_net_ssl_begin', + 'io_net_ssl_connect', + 'io_net_ssl_end', + 'io_net_ssl_error', + 'io_net_ssl_errorstring', + 'io_net_ssl_funcerrorstring', + 'io_net_ssl_liberrorstring', + 'io_net_ssl_read', + 'io_net_ssl_reasonerrorstring', + 'io_net_ssl_setacceptstate', + 'io_net_ssl_setconnectstate', + 'io_net_ssl_setverifylocations', + 'io_net_ssl_shutdown', + 'io_net_ssl_usecertificatechainfile', + 'io_net_ssl_useprivatekeyfile', + 'io_net_ssl_write', + 'java_jvm_create', + 'java_jvm_getenv', 'jdbc_initialize', - 'lassoapp_settingsdb', + 'json_back_slash', + 'json_back_space', + 'json_close_array', + 'json_close_object', + 'json_colon', + 'json_comma', + 'json_consume_array', + 'json_consume_object', + 'json_consume_string', + 'json_consume_token', + 'json_cr', + 'json_debug', + 'json_deserialize', + 'json_e_lower', + 'json_e_upper', + 'json_f_lower', + 'json_form_feed', + 'json_forward_slash', + 'json_lf', + 'json_n_lower', + 'json_negative', + 'json_open_array', + 'json_open_object', + 'json_period', + 'json_quote_double', + 'json_rpccall', + 'json_serialize', + 'json_t_lower', + 'json_tab', + 'json_white_space', + 'keycolumn_name', + 'keycolumn_value', + 'keyfield_name', + 'keyfield_value', + 'lasso_currentaction', + 'lasso_errorreporting', + 'lasso_executiontimelimit', + 'lasso_methodexists', + 'lasso_tagexists', + 'lasso_uniqueid', + 'lasso_version', + 'lassoapp_current_app', + 'lassoapp_current_include', + 'lassoapp_do_with_include', + 'lassoapp_exists', + 'lassoapp_find_missing_file', 'lassoapp_format_mod_date', + 'lassoapp_get_capabilities_name', 'lassoapp_include_current', 'lassoapp_include', - 'lassoapp_find_missing_file', - 'lassoapp_get_capabilities_name', - 'lassoapp_exists', - 'lassoapp_path_to_method_name', - 'lassoapp_invoke_resource', 'lassoapp_initialize_db', 'lassoapp_initialize', + 'lassoapp_invoke_resource', 'lassoapp_issourcefileextension', - 'lassoapp_current_include', - 'lassoapp_current_app', - 'lassoapp_do_with_include', 'lassoapp_link', 'lassoapp_load_module', - 'lassoapp_mime_type_html', - 'lassoapp_mime_type_lasso', - 'lassoapp_mime_type_xml', - 'lassoapp_mime_type_ppt', - 'lassoapp_mime_type_js', - 'lassoapp_mime_type_txt', - 'lassoapp_mime_type_jpg', - 'lassoapp_mime_type_png', - 'lassoapp_mime_type_gif', + 'lassoapp_mime_get', + 'lassoapp_mime_type_appcache', 'lassoapp_mime_type_css', 'lassoapp_mime_type_csv', - 'lassoapp_mime_type_tif', + 'lassoapp_mime_type_doc', + 'lassoapp_mime_type_docx', + 'lassoapp_mime_type_eof', + 'lassoapp_mime_type_eot', + 'lassoapp_mime_type_gif', + 'lassoapp_mime_type_html', 'lassoapp_mime_type_ico', - 'lassoapp_mime_type_rss', - 'lassoapp_mime_type_xhr', + 'lassoapp_mime_type_jpg', + 'lassoapp_mime_type_js', + 'lassoapp_mime_type_lasso', + 'lassoapp_mime_type_map', 'lassoapp_mime_type_pdf', - 'lassoapp_mime_type_docx', - 'lassoapp_mime_type_doc', - 'lassoapp_mime_type_zip', + 'lassoapp_mime_type_png', + 'lassoapp_mime_type_ppt', + 'lassoapp_mime_type_rss', 'lassoapp_mime_type_svg', + 'lassoapp_mime_type_swf', + 'lassoapp_mime_type_tif', 'lassoapp_mime_type_ttf', + 'lassoapp_mime_type_txt', 'lassoapp_mime_type_woff', - 'lassoapp_mime_type_swf', - 'lassoapp_mime_get', + 'lassoapp_mime_type_xaml', + 'lassoapp_mime_type_xap', + 'lassoapp_mime_type_xbap', + 'lassoapp_mime_type_xhr', + 'lassoapp_mime_type_xml', + 'lassoapp_mime_type_zip', + 'lassoapp_path_to_method_name', + 'lassoapp_settingsdb', + 'layout_name', + 'lcapi_datasourceadd', + 'lcapi_datasourcecloseconnection', + 'lcapi_datasourcedelete', + 'lcapi_datasourceduplicate', + 'lcapi_datasourceexecsql', + 'lcapi_datasourcefindall', + 'lcapi_datasourceimage', + 'lcapi_datasourceinfo', + 'lcapi_datasourceinit', + 'lcapi_datasourcematchesname', + 'lcapi_datasourcenames', + 'lcapi_datasourcenothing', + 'lcapi_datasourceopand', + 'lcapi_datasourceopany', + 'lcapi_datasourceopbw', + 'lcapi_datasourceopct', + 'lcapi_datasourceopeq', + 'lcapi_datasourceopew', + 'lcapi_datasourceopft', + 'lcapi_datasourceopgt', + 'lcapi_datasourceopgteq', + 'lcapi_datasourceopin', + 'lcapi_datasourceoplt', + 'lcapi_datasourceoplteq', + 'lcapi_datasourceopnbw', + 'lcapi_datasourceopnct', + 'lcapi_datasourceopneq', + 'lcapi_datasourceopnew', + 'lcapi_datasourceopnin', + 'lcapi_datasourceopno', + 'lcapi_datasourceopnot', + 'lcapi_datasourceopnrx', + 'lcapi_datasourceopor', + 'lcapi_datasourceoprx', + 'lcapi_datasourcepreparesql', + 'lcapi_datasourceprotectionnone', + 'lcapi_datasourceprotectionreadonly', + 'lcapi_datasourcerandom', + 'lcapi_datasourceschemanames', + 'lcapi_datasourcescripts', + 'lcapi_datasourcesearch', + 'lcapi_datasourcesortascending', + 'lcapi_datasourcesortcustom', + 'lcapi_datasourcesortdescending', + 'lcapi_datasourcetablenames', + 'lcapi_datasourceterm', + 'lcapi_datasourcetickle', + 'lcapi_datasourcetypeblob', + 'lcapi_datasourcetypeboolean', + 'lcapi_datasourcetypedate', + 'lcapi_datasourcetypedecimal', + 'lcapi_datasourcetypeinteger', + 'lcapi_datasourcetypestring', + 'lcapi_datasourceunpreparesql', + 'lcapi_datasourceupdate', + 'lcapi_fourchartointeger', + 'lcapi_listdatasources', + 'lcapi_loadmodule', + 'lcapi_loadmodules', + 'lcapi_updatedatasourceslist', + 'ldap_scope_base', + 'ldap_scope_onelevel', + 'ldap_scope_subtree', + 'library_once', + 'library', + 'ljapi_initialize', + 'locale_availablelocales', + 'locale_canada', + 'locale_canadafrench', + 'locale_china', + 'locale_chinese', + 'locale_default', + 'locale_english', + 'locale_format_style_date_time', + 'locale_format_style_default', + 'locale_format_style_full', + 'locale_format_style_long', + 'locale_format_style_medium', + 'locale_format_style_none', + 'locale_format_style_short', + 'locale_format', + 'locale_france', + 'locale_french', + 'locale_german', + 'locale_germany', + 'locale_isocountries', + 'locale_isolanguages', + 'locale_italian', + 'locale_italy', + 'locale_japan', + 'locale_japanese', + 'locale_korea', + 'locale_korean', + 'locale_prc', + 'locale_setdefault', + 'locale_simplifiedchinese', + 'locale_taiwan', + 'locale_traditionalchinese', + 'locale_uk', + 'locale_us', + 'log_always', + 'log_critical', + 'log_deprecated', + 'log_destination_console', + 'log_destination_database', + 'log_destination_file', + 'log_detail', + 'log_initialize', 'log_level_critical', - 'log_level_warning', + 'log_level_deprecated', 'log_level_detail', 'log_level_sql', - 'log_level_deprecated', - 'log_destination_console', - 'log_destination_file', - 'log_destination_database', - 'log', + 'log_level_warning', + 'log_max_file_size', 'log_setdestination', - 'log_always', - 'log_critical', - 'log_warning', - 'log_detail', 'log_sql', - 'log_deprecated', - 'log_max_file_size', 'log_trim_file_size', - 'log_initialize', - 'portal', - 'security_database', - 'security_table_groups', - 'security_table_users', - 'security_table_ug_map', - 'security_default_realm', - 'security_initialize', - 'session_initialize', - 'session_getdefaultdriver', - 'session_setdefaultdriver', - 'session_start', - 'session_addvar', - 'session_removevar', - 'session_end', - 'session_id', - 'session_abort', - 'session_result', - 'session_deleteexpired', + 'log_warning', + 'log', + 'loop_abort', + 'loop_continue', + 'loop_count', + 'loop_key_pop', + 'loop_key_push', + 'loop_key', + 'loop_pop', + 'loop_push', + 'loop_value_pop', + 'loop_value_push', + 'loop_value', + 'loop', + 'lt', + 'lte', + 'main_thread_only', + 'max', + 'maxrecords_value', + 'median', + 'method_name', + 'micros', + 'millis', + 'min', + 'minimal', + 'mongo_insert_continue_on_error', + 'mongo_insert_no_validate', + 'mongo_insert_none', + 'mongo_query_await_data', + 'mongo_query_exhaust', + 'mongo_query_no_cursor_timeout', + 'mongo_query_none', + 'mongo_query_oplog_replay', + 'mongo_query_partial', + 'mongo_query_slave_ok', + 'mongo_query_tailable_cursor', + 'mongo_remove_none', + 'mongo_remove_single_remove', + 'mongo_update_multi_update', + 'mongo_update_no_validate', + 'mongo_update_none', + 'mongo_update_upsert', + 'mustache_compile_file', + 'mustache_compile_string', + 'mustache_include', + 'mysqlds', + 'namespace_global', + 'namespace_import', + 'namespace_using', + 'nbw', + 'ncn', + 'neq', + 'net_connectinprogress', + 'net_connectok', + 'net_typessl', + 'net_typessltcp', + 'net_typessludp', + 'net_typetcp', + 'net_typeudp', + 'net_waitread', + 'net_waittimeout', + 'net_waitwrite', + 'new', + 'none', + 'nrx', + 'nslookup', 'odbc_session_driver_mssql', - 'session_decorate', - 'auth_admin', - 'auth_check', - 'auth_custom', - 'auth_group', - 'auth_prompt', - 'auth_user', - 'client_addr', - 'client_authorization', - 'client_browser', - 'client_contentlength', - 'client_contenttype', - 'client_cookielist', - 'client_cookies', - 'client_encoding', - 'client_formmethod', - 'client_getargs', - 'client_getparams', - 'client_getparam', - 'client_headers', - 'client_integertoip', - 'client_iptointeger', - 'client_password', - 'client_postargs', - 'client_postparams', - 'client_postparam', - 'client_type', - 'client_username', - 'client_url', + 'odbc', + 'output_none', + 'output', + 'pdf_package', + 'pdf_rectangle', + 'pdf_serve', + 'pi', + 'portal', + 'postgresql', + 'process', + 'protect_now', + 'protect', + 'queriable_average', + 'queriable_defaultcompare', + 'queriable_do', + 'queriable_internal_combinebindings', + 'queriable_max', + 'queriable_min', + 'queriable_qsort', + 'queriable_reversecompare', + 'queriable_sum', + 'random_seed', + 'range', + 'records_array', + 'records_map', + 'records', + 'redirect_url', 'referer_url', 'referrer_url', - 'content_type', - 'content_encoding', - 'cookie', - 'cookie_set', - 'include', - 'include_currentpath', - 'include_filepath', - 'include_localpath', - 'include_once', - 'include_path', - 'include_raw', - 'includes', - 'library', - 'library_once', + 'register_thread', + 'register', 'response_filepath', 'response_localpath', 'response_path', 'response_realm', 'response_root', - 'redirect_url', + 'resultset_count', + 'resultset', + 'resultsets', + 'rows_array', + 'rows_impl', + 'rows', + 'rx', + 'schema_name', + 'security_database', + 'security_default_realm', + 'security_initialize', + 'security_table_groups', + 'security_table_ug_map', + 'security_table_users', + 'selected', + 'series', 'server_admin', - 'server_name', 'server_ip', + 'server_name', 'server_port', 'server_protocol', + 'server_push', 'server_signature', 'server_software', - 'server_push', + 'session_abort', + 'session_addvar', + 'session_decorate', + 'session_deleteexpired', + 'session_end', + 'session_getdefaultdriver', + 'session_id', + 'session_initialize', + 'session_removevar', + 'session_result', + 'session_setdefaultdriver', + 'session_start', + 'shown_count', + 'shown_first', + 'shown_last', + 'site_id', + 'site_name', + 'skiprecords_value', + 'sleep', + 'split_thread', + 'sqlite_abort', + 'sqlite_auth', + 'sqlite_blob', + 'sqlite_busy', + 'sqlite_cantopen', + 'sqlite_constraint', + 'sqlite_corrupt', + 'sqlite_createdb', + 'sqlite_done', + 'sqlite_empty', + 'sqlite_error', + 'sqlite_float', + 'sqlite_format', + 'sqlite_full', + 'sqlite_integer', + 'sqlite_internal', + 'sqlite_interrupt', + 'sqlite_ioerr', + 'sqlite_locked', + 'sqlite_mismatch', + 'sqlite_misuse', + 'sqlite_nolfs', + 'sqlite_nomem', + 'sqlite_notadb', + 'sqlite_notfound', + 'sqlite_null', + 'sqlite_ok', + 'sqlite_perm', + 'sqlite_protocol', + 'sqlite_range', + 'sqlite_readonly', + 'sqlite_row', + 'sqlite_schema', + 'sqlite_setsleepmillis', + 'sqlite_setsleeptries', + 'sqlite_text', + 'sqlite_toobig', + 'sqliteconnector', + 'staticarray_join', + 'stdout', + 'stdoutnl', + 'string_validcharset', + 'suspend', + 'sys_appspath', + 'sys_chroot', + 'sys_clock', + 'sys_clockspersec', + 'sys_credits', + 'sys_databasespath', + 'sys_detach_exec', + 'sys_difftime', + 'sys_dll_ext', + 'sys_drand48', + 'sys_environ', + 'sys_eol', + 'sys_erand48', + 'sys_errno', + 'sys_exec_pid_to_os_pid', + 'sys_exec', + 'sys_exit', + 'sys_fork', + 'sys_garbagecollect', + 'sys_getbytessincegc', + 'sys_getchar', + 'sys_getegid', + 'sys_getenv', + 'sys_geteuid', + 'sys_getgid', + 'sys_getgrnam', + 'sys_getheapfreebytes', + 'sys_getheapsize', + 'sys_getlogin', + 'sys_getpid', + 'sys_getppid', + 'sys_getpwnam', + 'sys_getpwuid', + 'sys_getstartclock', + 'sys_getthreadcount', + 'sys_getuid', + 'sys_growheapby', + 'sys_homepath', + 'sys_is_full_path', + 'sys_is_windows', + 'sys_isfullpath', + 'sys_iswindows', + 'sys_iterate', + 'sys_jrand48', + 'sys_kill_exec', + 'sys_kill', + 'sys_lcong48', + 'sys_librariespath', + 'sys_listtraits', + 'sys_listtypes', + 'sys_listunboundmethods', + 'sys_loadlibrary', + 'sys_lrand48', + 'sys_masterhomepath', + 'sys_mrand48', + 'sys_nrand48', + 'sys_pid_exec', + 'sys_pointersize', + 'sys_rand', + 'sys_random', + 'sys_seed48', + 'sys_setenv', + 'sys_setgid', + 'sys_setsid', + 'sys_setuid', + 'sys_sigabrt', + 'sys_sigalrm', + 'sys_sigbus', + 'sys_sigchld', + 'sys_sigcont', + 'sys_sigfpe', + 'sys_sighup', + 'sys_sigill', + 'sys_sigint', + 'sys_sigkill', + 'sys_sigpipe', + 'sys_sigprof', + 'sys_sigquit', + 'sys_sigsegv', + 'sys_sigstop', + 'sys_sigsys', + 'sys_sigterm', + 'sys_sigtrap', + 'sys_sigtstp', + 'sys_sigttin', + 'sys_sigttou', + 'sys_sigurg', + 'sys_sigusr1', + 'sys_sigusr2', + 'sys_sigvtalrm', + 'sys_sigxcpu', + 'sys_sigxfsz', + 'sys_srand', + 'sys_srand48', + 'sys_srandom', + 'sys_strerror', + 'sys_supportpath', + 'sys_test_exec', + 'sys_time', + 'sys_uname', + 'sys_unsetenv', + 'sys_usercapimodulepath', + 'sys_userstartuppath', + 'sys_version', + 'sys_wait_exec', + 'sys_waitpid', + 'sys_wcontinued', + 'sys_while', + 'sys_wnohang', + 'sys_wuntraced', + 'table_name', + 'tag_exists', + 'tag_name', + 'thread_var_get', + 'thread_var_pop', + 'thread_var_push', + 'threadvar_find', + 'threadvar_get', + 'threadvar_set_asrt', + 'threadvar_set', + 'timer', 'token_value', + 'treemap', + 'u_lb_alphabetic', + 'u_lb_ambiguous', + 'u_lb_break_after', + 'u_lb_break_before', + 'u_lb_break_both', + 'u_lb_break_symbols', + 'u_lb_carriage_return', + 'u_lb_close_punctuation', + 'u_lb_combining_mark', + 'u_lb_complex_context', + 'u_lb_contingent_break', + 'u_lb_exclamation', + 'u_lb_glue', + 'u_lb_h2', + 'u_lb_h3', + 'u_lb_hyphen', + 'u_lb_ideographic', + 'u_lb_infix_numeric', + 'u_lb_inseparable', + 'u_lb_jl', + 'u_lb_jt', + 'u_lb_jv', + 'u_lb_line_feed', + 'u_lb_mandatory_break', + 'u_lb_next_line', + 'u_lb_nonstarter', + 'u_lb_numeric', + 'u_lb_open_punctuation', + 'u_lb_postfix_numeric', + 'u_lb_prefix_numeric', + 'u_lb_quotation', + 'u_lb_space', + 'u_lb_surrogate', + 'u_lb_unknown', + 'u_lb_word_joiner', + 'u_lb_zwspace', + 'u_nt_decimal', + 'u_nt_digit', + 'u_nt_none', + 'u_nt_numeric', + 'u_sb_aterm', + 'u_sb_close', + 'u_sb_format', + 'u_sb_lower', + 'u_sb_numeric', + 'u_sb_oletter', + 'u_sb_other', + 'u_sb_sep', + 'u_sb_sp', + 'u_sb_sterm', + 'u_sb_upper', + 'u_wb_aletter', + 'u_wb_extendnumlet', + 'u_wb_format', + 'u_wb_katakana', + 'u_wb_midletter', + 'u_wb_midnum', + 'u_wb_numeric', + 'u_wb_other', + 'ucal_ampm', + 'ucal_dayofmonth', + 'ucal_dayofweek', + 'ucal_dayofweekinmonth', + 'ucal_dayofyear', + 'ucal_daysinfirstweek', + 'ucal_dowlocal', + 'ucal_dstoffset', + 'ucal_era', + 'ucal_extendedyear', + 'ucal_firstdayofweek', + 'ucal_hour', + 'ucal_hourofday', + 'ucal_julianday', + 'ucal_lenient', + 'ucal_listtimezones', + 'ucal_millisecond', + 'ucal_millisecondsinday', + 'ucal_minute', + 'ucal_month', + 'ucal_second', + 'ucal_weekofmonth', + 'ucal_weekofyear', + 'ucal_year', + 'ucal_yearwoy', + 'ucal_zoneoffset', + 'uchar_age', + 'uchar_alphabetic', + 'uchar_ascii_hex_digit', + 'uchar_bidi_class', + 'uchar_bidi_control', + 'uchar_bidi_mirrored', + 'uchar_bidi_mirroring_glyph', + 'uchar_block', + 'uchar_canonical_combining_class', + 'uchar_case_folding', + 'uchar_case_sensitive', + 'uchar_dash', + 'uchar_decomposition_type', + 'uchar_default_ignorable_code_point', + 'uchar_deprecated', + 'uchar_diacritic', + 'uchar_east_asian_width', + 'uchar_extender', + 'uchar_full_composition_exclusion', + 'uchar_general_category_mask', + 'uchar_general_category', + 'uchar_grapheme_base', + 'uchar_grapheme_cluster_break', + 'uchar_grapheme_extend', + 'uchar_grapheme_link', + 'uchar_hangul_syllable_type', + 'uchar_hex_digit', + 'uchar_hyphen', + 'uchar_id_continue', + 'uchar_ideographic', + 'uchar_ids_binary_operator', + 'uchar_ids_trinary_operator', + 'uchar_iso_comment', + 'uchar_join_control', + 'uchar_joining_group', + 'uchar_joining_type', + 'uchar_lead_canonical_combining_class', + 'uchar_line_break', + 'uchar_logical_order_exception', + 'uchar_lowercase_mapping', + 'uchar_lowercase', + 'uchar_math', + 'uchar_name', + 'uchar_nfc_inert', + 'uchar_nfc_quick_check', + 'uchar_nfd_inert', + 'uchar_nfd_quick_check', + 'uchar_nfkc_inert', + 'uchar_nfkc_quick_check', + 'uchar_nfkd_inert', + 'uchar_nfkd_quick_check', + 'uchar_noncharacter_code_point', + 'uchar_numeric_type', + 'uchar_numeric_value', + 'uchar_pattern_syntax', + 'uchar_pattern_white_space', + 'uchar_posix_alnum', + 'uchar_posix_blank', + 'uchar_posix_graph', + 'uchar_posix_print', + 'uchar_posix_xdigit', + 'uchar_quotation_mark', + 'uchar_radical', + 'uchar_s_term', + 'uchar_script', + 'uchar_segment_starter', + 'uchar_sentence_break', + 'uchar_simple_case_folding', + 'uchar_simple_lowercase_mapping', + 'uchar_simple_titlecase_mapping', + 'uchar_simple_uppercase_mapping', + 'uchar_soft_dotted', + 'uchar_terminal_punctuation', + 'uchar_titlecase_mapping', + 'uchar_trail_canonical_combining_class', + 'uchar_unicode_1_name', + 'uchar_unified_ideograph', + 'uchar_uppercase_mapping', + 'uchar_uppercase', + 'uchar_variation_selector', + 'uchar_white_space', + 'uchar_word_break', + 'uchar_xid_continue', + 'uncompress', + 'usage', + 'uuid_compare', + 'uuid_copy', + 'uuid_generate_random', + 'uuid_generate_time', + 'uuid_generate', + 'uuid_is_null', + 'uuid_parse', + 'uuid_unparse_lower', + 'uuid_unparse_upper', + 'uuid_unparse', + 'value_list', + 'value_listitem', + 'valuelistitem', + 'var_keys', + 'var_values', 'wap_isenabled', 'wap_maxbuttons', - 'wap_maxhorzpixels', - 'wap_maxvertpixels', 'wap_maxcolumns', + 'wap_maxhorzpixels', 'wap_maxrows', - 'define_atbegin', - 'define_atend', - 'content_header', - 'content_addheader', - 'content_replaceheader', - 'content_body', - 'html_comment', + 'wap_maxvertpixels', + 'web_handlefcgirequest', + 'web_node_content_representation_css', + 'web_node_content_representation_html', + 'web_node_content_representation_js', + 'web_node_content_representation_xhr', 'web_node_forpath', - 'web_nodes_requesthandler', + 'web_nodes_initialize', 'web_nodes_normalizeextension', 'web_nodes_processcontentnode', - 'web_nodes_initialize', - 'web_node_content_representation_xhr', - 'web_node_content_representation_html', - 'web_node_content_representation_css', - 'web_node_content_representation_js', + 'web_nodes_requesthandler', 'web_response_nodesentry', - 'web_response', 'web_router_database', - 'web_router_initialize' + 'web_router_initialize', + 'websocket_handler_timeout', + 'wexitstatus', + 'wifcontinued', + 'wifexited', + 'wifsignaled', + 'wifstopped', + 'wstopsig', + 'wtermsig', + 'xml_transform', + 'xml', + 'zip_add_dir', + 'zip_add', + 'zip_checkcons', + 'zip_close', + 'zip_cm_bzip2', + 'zip_cm_default', + 'zip_cm_deflate', + 'zip_cm_deflate64', + 'zip_cm_implode', + 'zip_cm_pkware_implode', + 'zip_cm_reduce_1', + 'zip_cm_reduce_2', + 'zip_cm_reduce_3', + 'zip_cm_reduce_4', + 'zip_cm_shrink', + 'zip_cm_store', + 'zip_create', + 'zip_delete', + 'zip_em_3des_112', + 'zip_em_3des_168', + 'zip_em_aes_128', + 'zip_em_aes_192', + 'zip_em_aes_256', + 'zip_em_des', + 'zip_em_none', + 'zip_em_rc2_old', + 'zip_em_rc2', + 'zip_em_rc4', + 'zip_em_trad_pkware', + 'zip_em_unknown', + 'zip_er_changed', + 'zip_er_close', + 'zip_er_compnotsupp', + 'zip_er_crc', + 'zip_er_deleted', + 'zip_er_eof', + 'zip_er_exists', + 'zip_er_incons', + 'zip_er_internal', + 'zip_er_inval', + 'zip_er_memory', + 'zip_er_multidisk', + 'zip_er_noent', + 'zip_er_nozip', + 'zip_er_ok', + 'zip_er_open', + 'zip_er_read', + 'zip_er_remove', + 'zip_er_rename', + 'zip_er_seek', + 'zip_er_tmpopen', + 'zip_er_write', + 'zip_er_zipclosed', + 'zip_er_zlib', + 'zip_error_get_sys_type', + 'zip_error_get', + 'zip_error_to_str', + 'zip_et_none', + 'zip_et_sys', + 'zip_et_zlib', + 'zip_excl', + 'zip_fclose', + 'zip_file_error_get', + 'zip_file_strerror', + 'zip_fl_compressed', + 'zip_fl_nocase', + 'zip_fl_nodir', + 'zip_fl_unchanged', + 'zip_fopen_index', + 'zip_fopen', + 'zip_fread', + 'zip_get_archive_comment', + 'zip_get_file_comment', + 'zip_get_name', + 'zip_get_num_files', + 'zip_name_locate', + 'zip_open', + 'zip_rename', + 'zip_replace', + 'zip_set_archive_comment', + 'zip_set_file_comment', + 'zip_stat_index', + 'zip_stat', + 'zip_strerror', + 'zip_unchange_all', + 'zip_unchange_archive', + 'zip_unchange', + 'zlib_version', ), 'Lasso 8 Tags': ( '__char', @@ -3029,1336 +3084,1231 @@ BUILTINS = { 'xsd_processschema', 'xsd_processsimpletype', 'xsd_ref', - 'xsd_type' + 'xsd_type', ) } MEMBERS = { 'Member Methods': ( - 'escape_member', - 'oncompare', - 'sameas', - 'isa', + 'abort', + 'abs', + 'accept_charset', + 'accept', + 'acceptconnections', + 'acceptdeserializedelement', + 'acceptnossl', + 'acceptpost', + 'accesskey', + 'acos', + 'acosh', + 'action', + 'actionparams', + 'active_tick', + 'add', + 'addatend', + 'addattachment', + 'addbarcode', + 'addchapter', + 'addcheckbox', + 'addcolumninfo', + 'addcombobox', + 'addcomment', + 'addcomponent', + 'addcomponents', + 'addcss', + 'adddatabasetable', + 'adddatasource', + 'adddatasourcedatabase', + 'adddatasourcehost', + 'adddir', + 'adddirpath', + 'addendjs', + 'addendjstext', + 'adderror', + 'addfavicon', + 'addfile', + 'addgroup', + 'addheader', + 'addhiddenfield', + 'addhtmlpart', + 'addimage', + 'addjavascript', + 'addjs', + 'addjstext', + 'addlist', + 'addmathfunctions', + 'addmember', + 'addoneheaderline', + 'addpage', + 'addparagraph', + 'addpart', + 'addpasswordfield', + 'addphrase', + 'addpostdispatch', + 'addpredispatch', + 'addradiobutton', + 'addradiogroup', + 'addresetbutton', + 'addrow', + 'addsection', + 'addselectlist', + 'addset', + 'addsubmitbutton', + 'addsubnode', + 'addtable', + 'addtask', + 'addtext', + 'addtextarea', + 'addtextfield', + 'addtextpart', + 'addtobuffer', + 'addtrait', + 'adduser', + 'addusertogroup', + 'addwarning', + 'addzip', + 'allocobject', + 'am', + 'ampm', + 'annotate', + 'answer', + 'apop', + 'append', + 'appendarray', + 'appendarraybegin', + 'appendarrayend', + 'appendbool', + 'appendbytes', + 'appendchar', + 'appendchild', + 'appendcolon', + 'appendcomma', + 'appenddata', + 'appenddatetime', + 'appenddbpointer', + 'appenddecimal', + 'appenddocument', + 'appendimagetolist', + 'appendinteger', + 'appendnowutc', + 'appendnull', + 'appendoid', + 'appendregex', + 'appendreplacement', + 'appendstring', + 'appendtail', + 'appendtime', + 'applyheatcolors', + 'appmessage', + 'appname', + 'appprefix', + 'appstatus', + 'arc', + 'archive', + 'arguments', + 'argumentvalue', + 'asarray', + 'asarraystring', + 'asasync', + 'asbytes', 'ascopy', - 'asstring', 'ascopydeep', - 'type', - 'trait', - 'parent', - 'settrait', - 'oncreate', - 'listmethods', - 'hasmethod', - 'invoke', - 'addtrait', - 'isnota', - 'isallof', - 'isanyof', - 'size', - 'gettype', - 'istype', - 'doccomment', - 'requires', - 'provides', - 'name', - 'subtraits', - 'description', - 'hash', - 'hosttonet16', - 'hosttonet32', - 'nettohost16', - 'nettohost32', - 'nettohost64', - 'hosttonet64', - 'bitset', - 'bittest', - 'bitflip', - 'bitclear', - 'bitor', - 'bitand', - 'bitxor', - 'bitnot', - 'bitshiftleft', - 'bitshiftright', - 'bytes', - 'abs', - 'div', - 'dereferencepointer', 'asdecimal', - 'serializationelements', - 'acceptdeserializedelement', - 'serialize', - 'deg2rad', + 'asgenerator', + 'asin', + 'asinh', + 'asinteger', + 'askeyedgenerator', + 'aslazystring', + 'aslist', + 'asraw', + 'asstaticarray', + 'asstring', 'asstringhex', 'asstringoct', - 'acos', - 'asin', + 'asxml', 'atan', 'atan2', - 'ceil', - 'cos', - 'cosh', - 'exp', - 'fabs', - 'floor', - 'frexp', - 'ldexp', - 'log', - 'log10', - 'modf', - 'pow', - 'sin', - 'sinh', - 'sqrt', - 'tan', - 'tanh', - 'erf', - 'erfc', - 'gamma', - 'hypot', - 'j0', - 'j1', - 'jn', - 'lgamma', - 'y0', - 'y1', - 'yn', - 'isnan', - 'acosh', - 'asinh', 'atanh', - 'cbrt', - 'expm1', - 'nextafter', - 'scalb', - 'ilogb', - 'log1p', - 'logb', - 'remainder', - 'rint', - 'asinteger', - 'self', - 'detach', - 'restart', - 'resume', - 'continuation', - 'home', + 'atend', + 'atends', + 'atime', + 'attributecount', + 'attributes', + 'attrs', + 'auth', + 'authenticate', + 'authorize', + 'autocollectbuffer', + 'average', + 'back', + 'basename', + 'basepaths', + 'baseuri', + 'bcc', + 'beginssl', + 'beginswith', + 'begintls', + 'bestcharset', + 'bind_blob', + 'bind_double', + 'bind_int', + 'bind_null', + 'bind_parameter_index', + 'bind_text', + 'bind', + 'bindcount', + 'bindone', + 'bindparam', + 'bitand', + 'bitclear', + 'bitflip', + 'bitformat', + 'bitnot', + 'bitor', + 'bitset', + 'bitshiftleft', + 'bitshiftright', + 'bittest', + 'bitxor', + 'blur', + 'body', + 'bodybytes', + 'boundary', + 'bptoxml', + 'bptypetostr', + 'bucketnumber', + 'buff', + 'buildquery', + 'businessdaysbetween', + 'by', + 'bytes', + 'cachedappprefix', + 'cachedroot', + 'callboolean', + 'callbooleanmethod', + 'callbytemethod', + 'callcharmethod', + 'calldoublemethod', + 'calledname', + 'callfirst', + 'callfloat', + 'callfloatmethod', + 'callint', + 'callintmethod', + 'calllongmethod', + 'callnonvirtualbooleanmethod', + 'callnonvirtualbytemethod', + 'callnonvirtualcharmethod', + 'callnonvirtualdoublemethod', + 'callnonvirtualfloatmethod', + 'callnonvirtualintmethod', + 'callnonvirtuallongmethod', + 'callnonvirtualobjectmethod', + 'callnonvirtualshortmethod', + 'callnonvirtualvoidmethod', + 'callobject', + 'callobjectmethod', + 'callshortmethod', + 'callsite_col', 'callsite_file', 'callsite_line', - 'callsite_col', 'callstack', - 'splitthread', - 'threadreaddesc', - 'givenblock', - 'autocollectbuffer', - 'calledname', - 'methodname', - 'invokeuntil', - 'invokewhile', - 'invokeautocollect', - 'asasync', - 'append', - 'appendchar', - 'private_find', - 'private_findlast', - 'length', + 'callstaticboolean', + 'callstaticbooleanmethod', + 'callstaticbytemethod', + 'callstaticcharmethod', + 'callstaticdoublemethod', + 'callstaticfloatmethod', + 'callstaticint', + 'callstaticintmethod', + 'callstaticlongmethod', + 'callstaticobject', + 'callstaticobjectmethod', + 'callstaticshortmethod', + 'callstaticstring', + 'callstaticvoidmethod', + 'callstring', + 'callvoid', + 'callvoidmethod', + 'cancel', + 'cap', + 'capa', + 'capabilities', + 'capi', + 'cbrt', + 'cc', + 'ceil', 'chardigitvalue', - 'private_compare', - 'remove', 'charname', + 'charset', 'chartype', - 'decompose', - 'normalize', - 'digit', - 'foldcase', - 'sub', - 'integer', - 'private_merge', - 'unescape', - 'trim', - 'titlecase', - 'reverse', - 'getisocomment', - 'getnumericvalue', - 'totitle', - 'toupper', - 'tolower', - 'lowercase', - 'uppercase', - 'isalnum', - 'isalpha', - 'isbase', - 'iscntrl', - 'isdigit', - 'isxdigit', - 'islower', - 'isprint', - 'isspace', - 'istitle', - 'ispunct', - 'isgraph', - 'isblank', - 'isualphabetic', - 'isulowercase', - 'isupper', - 'isuuppercase', - 'isuwhitespace', - 'iswhitespace', - 'encodehtml', - 'decodehtml', - 'encodexml', - 'decodexml', - 'encodehtmltoxml', - 'getpropertyvalue', - 'hasbinaryproperty', - 'asbytes', - 'find', - 'findlast', - 'contains', - 'get', - 'equals', + 'checkdebugging', + 'checked', + 'checkuser', + 'childnodes', + 'chk', + 'chmod', + 'choosecolumntype', + 'chown', + 'chunked', + 'circle', + 'class', + 'classid', + 'clear', + 'clonenode', + 'close', + 'closepath', + 'closeprepared', + 'closewrite', + 'code', + 'codebase', + 'codetype', + 'colmap', + 'colorspace', + 'column_blob', + 'column_count', + 'column_decltype', + 'column_double', + 'column_int64', + 'column_name', + 'column_text', + 'column_type', + 'command', + 'comments', 'compare', 'comparecodepointorder', - 'padleading', - 'padtrailing', - 'merge', - 'split', - 'removeleading', - 'removetrailing', - 'beginswith', - 'endswith', - 'replace', - 'values', - 'foreachcharacter', - 'foreachlinebreak', - 'foreachwordbreak', - 'eachwordbreak', - 'eachcharacter', - 'foreachmatch', - 'eachmatch', - 'encodesql92', - 'encodesql', - 'keys', - 'decomposeassignment', - 'firstcomponent', - 'ifempty', - 'eachsub', - 'stripfirstcomponent', - 'isnotempty', - 'first', - 'lastcomponent', - 'foreachpathcomponent', - 'isfullpath', - 'back', - 'second', 'componentdelimiter', - 'isempty', - 'foreachsub', - 'front', - 'striplastcomponent', + 'components', + 'composite', + 'compress', + 'concat', + 'condtoint', + 'configureds', + 'configuredskeys', + 'connect', + 'connection', + 'connectionhandler', + 'connhandler', + 'consume_domain', + 'consume_label', + 'consume_message', + 'consume_rdata', + 'consume_string', + 'contains', + 'content_disposition', + 'content_transfer_encoding', + 'content_type', + 'content', + 'contentlength', + 'contents', + 'contenttype', + 'continuation', + 'continuationpacket', + 'continuationpoint', + 'continuationstack', + 'continue', + 'contrast', + 'conventionaltop', + 'convert', + 'cookie', + 'cookies', + 'cookiesarray', + 'cookiesary', + 'copyto', + 'cos', + 'cosh', + 'count', + 'countkeys', + 'country', + 'countusersbygroup', + 'crc', + 'create', + 'createattribute', + 'createattributens', + 'createcdatasection', + 'createcomment', + 'createdocument', + 'createdocumentfragment', + 'createdocumenttype', + 'createelement', + 'createelementns', + 'createentityreference', + 'createindex', + 'createprocessinginstruction', + 'createtable', + 'createtextnode', + 'criteria', + 'crop', + 'csscontent', + 'curl', + 'current', + 'currentfile', + 'curveto', + 'd', + 'data', + 'databasecolumnnames', + 'databasecolumns', + 'databasemap', + 'databasename', + 'datasourcecolumnnames', + 'datasourcecolumns', + 'datasourcemap', + 'date', + 'day', + 'dayofmonth', + 'dayofweek', + 'dayofweekinmonth', + 'dayofyear', + 'days', + 'daysbetween', + 'db', + 'dbtablestable', + 'debug', + 'declare', + 'decodebase64', + 'decodehex', + 'decodehtml', + 'decodeqp', + 'decodeurl', + 'decodexml', + 'decompose', + 'decomposeassignment', + 'defaultcontentrepresentation', + 'defer', + 'deg2rad', + 'dele', + 'delete', + 'deletedata', + 'deleteglobalref', + 'deletelocalref', + 'delim', + 'depth', + 'dereferencepointer', + 'describe', + 'description', + 'deserialize', + 'detach', + 'detectcharset', + 'didinclude', + 'difference', + 'digit', + 'dir', + 'displaycountry', + 'displaylanguage', + 'displayname', + 'displayscript', + 'displayvariant', + 'div', + 'dns_response', + 'do', + 'doatbegins', + 'doatends', + 'doccomment', + 'doclose', + 'doctype', + 'document', + 'documentelement', + 'documentroot', + 'domainbody', + 'done', + 'dosessions', + 'dowithclose', + 'dowlocal', + 'download', + 'drawtext', + 'drop', + 'dropindex', + 'dsdbtable', + 'dshoststable', + 'dsinfo', + 'dst', + 'dstable', + 'dstoffset', + 'dtdid', + 'dup', + 'dup2', + 'each', + 'eachbyte', + 'eachcharacter', + 'eachchild', 'eachcomponent', + 'eachdir', + 'eachdirpath', + 'eachdirpathrecursive', + 'eachentry', + 'eachfile', + 'eachfilename', + 'eachfilepath', + 'eachfilepathrecursive', + 'eachkey', 'eachline', - 'splitextension', - 'hastrailingcomponent', - 'last', - 'ifnotempty', - 'extensiondelimiter', + 'eachlinebreak', + 'eachmatch', + 'eachnode', + 'eachpair', + 'eachpath', + 'eachpathrecursive', + 'eachrow', + 'eachsub', 'eachword', - 'substring', - 'setsize', - 'reserve', - 'getrange', - 'private_setrange', - 'importas', - 'import8bits', - 'import32bits', - 'import64bits', - 'import16bits', - 'importbytes', - 'importpointer', - 'export8bits', + 'eachwordbreak', + 'element', + 'eligiblepath', + 'eligiblepaths', + 'encodebase64', + 'encodehex', + 'encodehtml', + 'encodehtmltoxml', + 'encodemd5', + 'encodepassword', + 'encodeqp', + 'encodesql', + 'encodesql92', + 'encodeurl', + 'encodevalue', + 'encodexml', + 'encoding', + 'enctype', + 'end', + 'endjs', + 'endssl', + 'endswith', + 'endtls', + 'enhance', + 'ensurestopped', + 'entities', + 'entry', + 'env', + 'equals', + 'era', + 'erf', + 'erfc', + 'err', + 'errcode', + 'errmsg', + 'error', + 'errors', + 'errstack', + 'escape_member', + 'establisherrorstate', + 'exceptioncheck', + 'exceptionclear', + 'exceptiondescribe', + 'exceptionoccurred', + 'exchange', + 'execinits', + 'execinstalls', + 'execute', + 'executelazy', + 'executenow', + 'exists', + 'exit', + 'exitcode', + 'exp', + 'expire', + 'expireminutes', + 'expiresminutes', + 'expm1', 'export16bits', 'export32bits', 'export64bits', + 'export8bits', + 'exportas', 'exportbytes', - 'exportsigned8bits', + 'exportfdf', + 'exportpointerbits', 'exportsigned16bits', 'exportsigned32bits', 'exportsigned64bits', - 'marker', - 'swapbytes', - 'encodeurl', - 'decodeurl', - 'encodebase64', - 'decodebase64', - 'encodeqp', - 'decodeqp', - 'encodemd5', - 'encodehex', - 'decodehex', - 'uncompress', - 'compress', - 'detectcharset', - 'bestcharset', - 'crc', - 'importstring', - 'setrange', - 'exportas', + 'exportsigned8bits', 'exportstring', - 'exportpointerbits', - 'foreachbyte', - 'eachbyte', - 'setposition', - 'position', - 'value', - 'join', - 'asstaticarray', - 'foreach', - 'findposition', - 'min', - 'groupjoin', - 'orderbydescending', - 'average', - 'take', - 'do', - 'selectmany', - 'skip', - 'select', - 'sum', - 'max', - 'asarray', - 'thenbydescending', - 'aslist', - 'orderby', - 'thenby', - 'where', - 'groupby', - 'asgenerator', - 'typename', - 'returntype', - 'restname', - 'paramdescs', - 'action', - 'statement', - 'inputcolumns', - 'keycolumns', - 'returncolumns', - 'sortcolumns', - 'skiprows', - 'maxrows', - 'rowsfound', - 'statementonly', - 'lop', - 'databasename', - 'tablename', - 'schemaname', - 'hostid', - 'hostdatasource', - 'hostname', - 'hostport', - 'hostusername', - 'hostpassword', - 'hostschema', - 'hosttableencoding', - 'hostextra', - 'hostisdynamic', - 'refobj', - 'connection', - 'prepared', - 'getset', - 'addset', - 'numsets', - 'addrow', - 'addcolumninfo', - 'forcedrowid', - 'makeinheritedcopy', - 'filename', 'expose', - 'recover', - 'insert', - 'removeall', - 'count', - 'exchange', - 'findindex', - 'foreachpair', - 'foreachkey', - 'sort', - 'insertfirst', - 'difference', - 'removeback', - 'insertback', - 'removelast', - 'removefront', - 'insertfrom', - 'intersection', - 'top', - 'insertlast', - 'push', - 'union', - 'removefirst', - 'insertfront', - 'pop', - 'fd', - 'family', - 'isvalid', - 'isssl', - 'open', - 'close', - 'read', - 'write', - 'ioctl', - 'seek', - 'mode', - 'mtime', - 'atime', - 'dup', - 'dup2', - 'fchdir', - 'fchown', - 'fsync', - 'ftruncate', - 'fchmod', - 'sendfd', - 'receivefd', - 'readobject', - 'tryreadobject', - 'writeobject', - 'leaveopen', - 'rewind', - 'tell', - 'language', - 'script', - 'country', - 'variant', - 'displaylanguage', - 'displayscript', - 'displaycountry', - 'displayvariant', - 'displayname', - 'basename', - 'keywords', - 'iso3language', - 'iso3country', - 'formatas', - 'formatnumber', - 'parsenumber', - 'parseas', - 'format', - 'parse', - 'add', - 'roll', - 'set', - 'getattr', - 'setattr', - 'clear', - 'isset', - 'settimezone', - 'timezone', - 'time', - 'indaylighttime', - 'createdocument', - 'parsedocument', - 'hasfeature', - 'createdocumenttype', - 'nodename', - 'nodevalue', - 'nodetype', - 'parentnode', - 'childnodes', - 'firstchild', - 'lastchild', - 'previoussibling', - 'nextsibling', - 'attributes', - 'ownerdocument', - 'namespaceuri', - 'prefix', - 'localname', - 'insertbefore', - 'replacechild', - 'removechild', - 'appendchild', - 'haschildnodes', - 'clonenode', - 'issupported', - 'hasattributes', + 'extendedyear', + 'extensiondelimiter', + 'extensions', 'extract', - 'extractone', 'extractfast', - 'transform', - 'foreachchild', - 'eachchild', 'extractfastone', - 'data', - 'substringdata', - 'appenddata', - 'insertdata', - 'deletedata', - 'replacedata', - 'doctype', - 'implementation', - 'documentelement', - 'createelement', - 'createdocumentfragment', - 'createtextnode', - 'createcomment', - 'createcdatasection', - 'createprocessinginstruction', - 'createattribute', - 'createentityreference', - 'getelementsbytagname', - 'importnode', - 'createelementns', - 'createattributens', - 'getelementsbytagnamens', - 'getelementbyid', - 'tagname', - 'getattribute', - 'setattribute', - 'removeattribute', - 'getattributenode', - 'setattributenode', - 'removeattributenode', - 'getattributens', - 'setattributens', - 'removeattributens', - 'getattributenodens', - 'setattributenodens', - 'hasattribute', - 'hasattributens', - 'setname', - 'contents', - 'specified', - 'ownerelement', - 'splittext', - 'notationname', - 'publicid', - 'systemid', - 'target', - 'entities', - 'notations', - 'internalsubset', - 'item', - 'getnameditem', - 'getnameditemns', - 'setnameditem', - 'setnameditemns', - 'removenameditem', - 'removenameditemns', - 'askeyedgenerator', - 'eachpair', - 'eachkey', - 'next', - 'readstring', - 'readattributevalue', - 'attributecount', - 'baseuri', - 'depth', - 'hasvalue', - 'isemptyelement', - 'xmllang', - 'getattributenamespace', - 'lookupnamespace', - 'movetoattribute', - 'movetoattributenamespace', - 'movetofirstattribute', - 'movetonextattribute', - 'movetoelement', - 'prepare', - 'last_insert_rowid', - 'total_changes', - 'interrupt', - 'errcode', - 'errmsg', - 'addmathfunctions', + 'extractimage', + 'extractone', + 'f', + 'fabs', + 'fail', + 'failnoconnectionhandler', + 'family', + 'fatalerror', + 'fcgireq', + 'fchdir', + 'fchmod', + 'fchown', + 'fd', + 'features', + 'fetchdata', + 'fieldnames', + 'fieldposition', + 'fieldstable', + 'fieldtype', + 'fieldvalue', + 'file', + 'filename', + 'filenames', + 'filequeue', + 'fileuploads', + 'fileuploadsary', + 'filterinputcolumn', 'finalize', - 'step', - 'bind_blob', - 'bind_double', - 'bind_int', - 'bind_null', - 'bind_text', - 'bind_parameter_index', - 'reset', - 'column_count', - 'column_name', - 'column_decltype', - 'column_blob', - 'column_double', - 'column_int64', - 'column_text', - 'column_type', - 'ismultipart', - 'gotfileupload', - 'setmaxfilesize', - 'getparts', - 'trackingid', - 'currentfile', - 'addtobuffer', - 'input', - 'replacepattern', - 'findpattern', - 'ignorecase', - 'setinput', - 'setreplacepattern', - 'setfindpattern', - 'setignorecase', - 'output', - 'appendreplacement', - 'matches', - 'private_replaceall', - 'appendtail', - 'groupcount', - 'matchposition', - 'matchesstart', - 'private_replacefirst', - 'private_split', - 'matchstring', - 'replaceall', - 'replacefirst', + 'find', 'findall', + 'findandmodify', + 'findbucket', + 'findcase', + 'findclass', 'findcount', + 'finddescendant', 'findfirst', + 'findinclude', + 'findinctx', + 'findindex', + 'findlast', + 'findpattern', + 'findposition', 'findsymbols', - 'loadlibrary', - 'getlibrary', - 'atend', - 'f', - 'r', - 'form', - 'gen', - 'callfirst', - 'key', - 'by', - 'from', - 'init', - 'to', - 'd', - 't', - 'object', - 'inneroncompare', - 'members', - 'writeid', - 'addmember', - 'refid', - 'index', - 'objects', - 'tabs', - 'trunk', - 'trace', - 'asxml', - 'tabstr', - 'toxmlstring', - 'document', - 'idmap', - 'readidobjects', - 'left', - 'right', - 'up', - 'red', - 'root', - 'getnode', - 'firstnode', - 'lastnode', - 'nextnode', - 'private_rebalanceforremove', - 'private_rotateleft', - 'private_rotateright', - 'private_rebalanceforinsert', - 'eachnode', - 'foreachnode', - 'encoding', - 'resolvelinks', - 'readbytesfully', - 'dowithclose', - 'readsomebytes', - 'readbytes', - 'writestring', - 'parentdir', - 'aslazystring', - 'path', - 'openread', - 'openwrite', - 'openwriteonly', - 'openappend', - 'opentruncate', - 'writebytes', - 'exists', - 'modificationtime', - 'lastaccesstime', - 'modificationdate', - 'lastaccessdate', - 'delete', - 'moveto', - 'copyto', - 'linkto', - 'flush', - 'chmod', - 'chown', - 'isopen', - 'setmarker', - 'setmode', - 'foreachline', - 'lock', - 'unlock', - 'trylock', - 'testlock', - 'perms', - 'islink', - 'isdir', - 'realpath', - 'openwith', - 'asraw', - 'rawdiff', - 'getformat', - 'setformat', - 'subtract', - 'gmt', - 'dst', - 'era', - 'year', - 'month', - 'week', - 'weekofyear', - 'weekofmonth', - 'day', - 'dayofmonth', - 'dayofyear', - 'dayofweek', - 'dayofweekinmonth', - 'ampm', - 'am', - 'pm', - 'hour', - 'hourofday', - 'hourofampm', - 'minute', - 'millisecond', - 'zoneoffset', - 'dstoffset', - 'yearwoy', - 'dowlocal', - 'extendedyear', - 'julianday', - 'millisecondsinday', + 'first', + 'firstchild', + 'firstcomponent', 'firstdayofweek', + 'firstnode', 'fixformat', - 'minutesbetween', - 'hoursbetween', - 'secondsbetween', - 'daysbetween', - 'businessdaysbetween', - 'pdifference', - 'getfield', - 'create', - 'setcwd', - 'foreachentry', - 'eachpath', - 'eachfilepath', - 'eachdirpath', - 'each', - 'eachfile', - 'eachdir', - 'eachpathrecursive', - 'eachfilepathrecursive', - 'eachdirpathrecursive', - 'eachentry', - 'makefullpath', - 'annotate', - 'blur', - 'command', - 'composite', - 'contrast', - 'convert', - 'crop', - 'execute', - 'enhance', - 'flipv', + 'flags', 'fliph', - 'modulate', - 'rotate', - 'save', - 'scale', - 'sharpen', - 'addcomment', - 'comments', - 'describe', - 'file', - 'height', - 'pixel', - 'resolutionv', - 'resolutionh', - 'width', - 'setcolorspace', - 'colorspace', - 'debug', - 'histogram', - 'imgptr', - 'appendimagetolist', + 'flipv', + 'floor', + 'flush', + 'foldcase', + 'foo', + 'for', + 'forcedrowid', + 'foreach', + 'foreachaccept', + 'foreachbyte', + 'foreachcharacter', + 'foreachchild', + 'foreachday', + 'foreachentry', + 'foreachfile', + 'foreachfilename', + 'foreachkey', + 'foreachline', + 'foreachlinebreak', + 'foreachmatch', + 'foreachnode', + 'foreachpair', + 'foreachpathcomponent', + 'foreachrow', + 'foreachspool', + 'foreachsub', + 'foreachwordbreak', + 'form', + 'format', + 'formatas', + 'formatcontextelement', + 'formatcontextelements', + 'formatnumber', + 'free', + 'frexp', + 'from', + 'fromname', + 'fromport', + 'fromreflectedfield', + 'fromreflectedmethod', + 'front', + 'fsync', + 'ftpdeletefile', + 'ftpgetlisting', + 'ftruncate', + 'fullpath', 'fx', - 'applyheatcolors', - 'authenticate', - 'search', - 'searchurl', - 'readerror', - 'readline', - 'setencoding', - 'closewrite', - 'exitcode', - 'getversion', - 'findclass', - 'throw', - 'thrownew', - 'exceptionoccurred', - 'exceptiondescribe', - 'exceptionclear', - 'fatalerror', - 'newglobalref', - 'deleteglobalref', - 'deletelocalref', - 'issameobject', - 'allocobject', - 'newobject', - 'getobjectclass', - 'isinstanceof', - 'getmethodid', - 'callobjectmethod', - 'callbooleanmethod', - 'callbytemethod', - 'callcharmethod', - 'callshortmethod', - 'callintmethod', - 'calllongmethod', - 'callfloatmethod', - 'calldoublemethod', - 'callvoidmethod', - 'callnonvirtualobjectmethod', - 'callnonvirtualbooleanmethod', - 'callnonvirtualbytemethod', - 'callnonvirtualcharmethod', - 'callnonvirtualshortmethod', - 'callnonvirtualintmethod', - 'callnonvirtuallongmethod', - 'callnonvirtualfloatmethod', - 'callnonvirtualdoublemethod', - 'callnonvirtualvoidmethod', - 'getfieldid', - 'getobjectfield', + 'gamma', + 'gatewayinterface', + 'gen', + 'generatechecksum', + 'get', + 'getabswidth', + 'getalignment', + 'getappsource', + 'getarraylength', + 'getattr', + 'getattribute', + 'getattributenamespace', + 'getattributenode', + 'getattributenodens', + 'getattributens', + 'getbarheight', + 'getbarmultiplier', + 'getbarwidth', + 'getbaseline', + 'getbold', + 'getbooleanarrayelements', + 'getbooleanarrayregion', 'getbooleanfield', + 'getbordercolor', + 'getborderwidth', + 'getbytearrayelements', + 'getbytearrayregion', 'getbytefield', + 'getchararrayelements', + 'getchararrayregion', 'getcharfield', - 'getshortfield', + 'getclass', + 'getcode', + 'getcolor', + 'getcolumn', + 'getcolumncount', + 'getcolumns', + 'getdatabasebyalias', + 'getdatabasebyid', + 'getdatabasebyname', + 'getdatabasehost', + 'getdatabasetable', + 'getdatabasetablebyalias', + 'getdatabasetablebyid', + 'getdatabasetablepart', + 'getdatasource', + 'getdatasourcedatabase', + 'getdatasourcedatabasebyid', + 'getdatasourcehost', + 'getdatasourceid', + 'getdatasourcename', + 'getdefaultstorage', + 'getdoublearrayelements', + 'getdoublearrayregion', + 'getdoublefield', + 'getelementbyid', + 'getelementsbytagname', + 'getelementsbytagnamens', + 'getencoding', + 'getface', + 'getfield', + 'getfieldid', + 'getfile', + 'getfloatarrayelements', + 'getfloatarrayregion', + 'getfloatfield', + 'getfont', + 'getformat', + 'getfullfontname', + 'getgroup', + 'getgroupid', + 'getheader', + 'getheaders', + 'gethostdatabase', + 'gethtmlattr', + 'gethtmlattrstring', + 'getinclude', + 'getintarrayelements', + 'getintarrayregion', 'getintfield', + 'getisocomment', + 'getitalic', + 'getlasterror', + 'getlcapitype', + 'getlibrary', + 'getlongarrayelements', + 'getlongarrayregion', 'getlongfield', - 'getfloatfield', - 'getdoublefield', - 'setobjectfield', - 'setbooleanfield', - 'setbytefield', - 'setcharfield', - 'setshortfield', - 'setintfield', - 'setlongfield', - 'setfloatfield', - 'setdoublefield', - 'getstaticmethodid', - 'callstaticobjectmethod', - 'callstaticbooleanmethod', - 'callstaticbytemethod', - 'callstaticcharmethod', - 'callstaticshortmethod', - 'callstaticintmethod', - 'callstaticlongmethod', - 'callstaticfloatmethod', - 'callstaticdoublemethod', - 'callstaticvoidmethod', - 'getstaticfieldid', - 'getstaticobjectfield', + 'getmargins', + 'getmethodid', + 'getmode', + 'getnameditem', + 'getnameditemns', + 'getnode', + 'getnumericvalue', + 'getobjectarrayelement', + 'getobjectclass', + 'getobjectfield', + 'getpadding', + 'getpagenumber', + 'getparts', + 'getprefs', + 'getpropertyvalue', + 'getprowcount', + 'getpsfontname', + 'getrange', + 'getrowcount', + 'getset', + 'getshortarrayelements', + 'getshortarrayregion', + 'getshortfield', + 'getsize', + 'getsortfieldspart', + 'getspacing', 'getstaticbooleanfield', 'getstaticbytefield', 'getstaticcharfield', - 'getstaticshortfield', + 'getstaticdoublefield', + 'getstaticfieldid', + 'getstaticfloatfield', 'getstaticintfield', 'getstaticlongfield', - 'getstaticfloatfield', - 'getstaticdoublefield', - 'setstaticobjectfield', - 'setstaticbooleanfield', - 'setstaticbytefield', - 'setstaticcharfield', - 'setstaticshortfield', - 'setstaticintfield', - 'setstaticlongfield', - 'setstaticfloatfield', - 'setstaticdoublefield', - 'newstring', - 'getstringlength', + 'getstaticmethodid', + 'getstaticobjectfield', + 'getstaticshortfield', + 'getstatus', 'getstringchars', - 'getarraylength', - 'newobjectarray', - 'getobjectarrayelement', - 'setobjectarrayelement', - 'newbooleanarray', - 'newbytearray', - 'newchararray', - 'newshortarray', - 'newintarray', - 'newlongarray', - 'newfloatarray', - 'newdoublearray', - 'getbooleanarrayelements', - 'getbytearrayelements', - 'getchararrayelements', - 'getshortarrayelements', - 'getintarrayelements', - 'getlongarrayelements', - 'getfloatarrayelements', - 'getdoublearrayelements', - 'getbooleanarrayregion', - 'getbytearrayregion', - 'getchararrayregion', - 'getshortarrayregion', - 'getintarrayregion', - 'getlongarrayregion', - 'getfloatarrayregion', - 'getdoublearrayregion', - 'setbooleanarrayregion', - 'setbytearrayregion', - 'setchararrayregion', - 'setshortarrayregion', - 'setintarrayregion', - 'setlongarrayregion', - 'setfloatarrayregion', - 'setdoublearrayregion', - 'monitorenter', - 'monitorexit', - 'fromreflectedmethod', - 'fromreflectedfield', - 'toreflectedmethod', - 'toreflectedfield', - 'exceptioncheck', - 'dbtablestable', - 'dstable', - 'dsdbtable', - 'dshoststable', - 'fieldstable', - 'sql', - 'adddatasource', - 'loaddatasourceinfo', - 'loaddatasourcehostinfo', - 'getdatasource', - 'getdatasourceid', - 'getdatasourcename', - 'listdatasources', - 'listactivedatasources', - 'removedatasource', - 'listdatasourcehosts', - 'listhosts', - 'adddatasourcehost', - 'getdatasourcehost', - 'removedatasourcehost', - 'getdatabasehost', - 'gethostdatabase', - 'listalldatabases', - 'listdatasourcedatabases', - 'listhostdatabases', - 'getdatasourcedatabase', - 'getdatasourcedatabasebyid', - 'getdatabasebyname', - 'getdatabasebyid', - 'getdatabasebyalias', - 'adddatasourcedatabase', - 'removedatasourcedatabase', - 'listalltables', - 'listdatabasetables', - 'getdatabasetable', - 'getdatabasetablebyalias', - 'getdatabasetablebyid', + 'getstringlength', + 'getstyle', + 'getsupportedencodings', 'gettablebyid', - 'adddatabasetable', - 'removedatabasetable', - 'removefield', - 'maybevalue', + 'gettext', + 'gettextalignment', + 'gettextsize', + 'gettrigger', + 'gettype', + 'getunderline', 'getuniquealiasname', - 'makecolumnlist', - 'makecolumnmap', - 'datasourcecolumns', - 'datasourcemap', - 'hostcolumns', - 'hostmap', - 'hostcolumns2', - 'hostmap2', - 'databasecolumns', - 'databasemap', - 'tablecolumns', - 'tablemap', - 'databasecolumnnames', - 'hostcolumnnames', - 'hostcolumnnames2', - 'datasourcecolumnnames', - 'tablecolumnnames', - 'bindcount', - 'sqlite3', - 'db', - 'tables', - 'hastable', - 'tablehascolumn', - 'eachrow', - 'bindparam', - 'foreachrow', - 'executelazy', - 'executenow', - 'lastinsertid', - 'table', - 'bindone', - 'src', - 'stat', - 'colmap', - 'getcolumn', - 'locals', - 'getcolumns', - 'bodybytes', - 'headerbytes', - 'ready', - 'token', - 'url', - 'done', - 'header', - 'result', - 'statuscode', - 'raw', - 'version', - 'download', - 'upload', - 'ftpdeletefile', - 'ftpgetlisting', - 'perform', - 'performonce', - 's', - 'linediffers', - 'sourcefile', - 'sourceline', - 'sourcecolumn', - 'continuationpacket', - 'continuationpoint', - 'continuationstack', - 'features', - 'lastpoint', - 'net', - 'running', - 'source', - 'run', - 'pathtouri', - 'sendpacket', - 'readpacket', - 'handlefeatureset', - 'handlefeatureget', - 'handlestdin', - 'handlestdout', - 'handlestderr', - 'isfirststep', - 'handlecontinuation', - 'ensurestopped', - 'handlestackget', - 'handlecontextnames', - 'formatcontextelements', - 'formatcontextelement', - 'bptypetostr', - 'bptoxml', - 'handlebreakpointlist', + 'getuser', + 'getuserbykey', + 'getuserid', + 'getversion', + 'getzipfilebytes', + 'givenblock', + 'gmt', + 'gotconnection', + 'gotfileupload', + 'groupby', + 'groupcolumns', + 'groupcount', + 'groupjoin', 'handlebreakpointget', + 'handlebreakpointlist', 'handlebreakpointremove', - 'condtoint', - 'inttocond', - 'handlebreakpointupdate', 'handlebreakpointset', + 'handlebreakpointupdate', 'handlecontextget', + 'handlecontextnames', + 'handlecontinuation', + 'handledefinitionbody', + 'handledefinitionhead', + 'handledefinitionresource', + 'handledevconnection', + 'handleevalexpired', + 'handlefeatureget', + 'handlefeatureset', + 'handlelassoappcontent', + 'handlelassoappresponse', + 'handlenested', + 'handlenormalconnection', + 'handlepop', + 'handleresource', 'handlesource', - 'error', - 'setstatus', - 'getstatus', - 'stoprunning', - 'pollide', - 'polldbg', - 'runonce', - 'arguments', - 'id', - 'argumentvalue', - 'end', - 'start', - 'days', - 'foreachday', - 'padzero', - 'actionparams', - 'capi', - 'doclose', - 'dsinfo', - 'isnothing', - 'named', - 'workinginputcolumns', - 'workingkeycolumns', - 'workingreturncolumns', - 'workingsortcolumns', - 'workingkeyfield_name', - 'scanfordatasource', - 'configureds', - 'configuredskeys', - 'scrubkeywords', - 'closeprepared', - 'filterinputcolumn', - 'prev', + 'handlestackget', + 'handlestderr', + 'handlestdin', + 'handlestdout', + 'handshake', + 'hasattribute', + 'hasattributens', + 'hasattributes', + 'hasbinaryproperty', + 'haschildnodes', + 'hasexpired', + 'hasfeature', + 'hasfield', + 'hash', + 'hashtmlattr', + 'hasmethod', + 'hastable', + 'hastrailingcomponent', + 'hasvalue', 'head', - 'removenode', - 'listnode', - 'bind', - 'listen', - 'remoteaddress', - 'shutdownrdwr', - 'shutdownwr', - 'shutdownrd', - 'localaddress', - 'accept', - 'connect', - 'foreachaccept', - 'writeobjecttcp', - 'readobjecttcp', - 'beginssl', - 'endssl', - 'begintls', - 'endtls', - 'acceptnossl', - 'loadcerts', - 'sslerrfail', - 'fromname', - 'fromport', - 'env', - 'checked', - 'getclass', - 'jobjectisa', - 'new', - 'callvoid', - 'callint', - 'callfloat', - 'callboolean', - 'callobject', - 'callstring', - 'callstaticobject', - 'callstaticstring', - 'callstaticint', - 'callstaticboolean', - 'chk', - 'makecolor', - 'realdoc', - 'addbarcode', - 'addchapter', - 'addcheckbox', - 'addcombobox', - 'addhiddenfield', - 'addimage', - 'addlist', - 'addpage', - 'addparagraph', - 'addpasswordfield', - 'addphrase', - 'addradiobutton', - 'addradiogroup', - 'addresetbutton', - 'addsection', - 'addselectlist', - 'addsubmitbutton', - 'addtable', - 'addtextarea', - 'addtextfield', - 'addtext', - 'arc', - 'circle', - 'closepath', - 'curveto', - 'drawtext', - 'getcolor', - 'getheader', - 'getheaders', - 'getmargins', - 'getpagenumber', - 'getsize', + 'header', + 'headerbytes', + 'headers', + 'headersarray', + 'headersmap', + 'height', + 'histogram', + 'home', + 'host', + 'hostcolumnnames', + 'hostcolumnnames2', + 'hostcolumns', + 'hostcolumns2', + 'hostdatasource', + 'hostextra', + 'hostid', + 'hostisdynamic', + 'hostmap', + 'hostmap2', + 'hostname', + 'hostpassword', + 'hostport', + 'hostschema', + 'hosttableencoding', + 'hosttonet16', + 'hosttonet32', + 'hosttonet64', + 'hostusername', + 'hour', + 'hourofampm', + 'hourofday', + 'hoursbetween', + 'href', + 'hreflang', + 'htmlcontent', + 'htmlizestacktrace', + 'htmlizestacktracelink', + 'httpaccept', + 'httpacceptencoding', + 'httpacceptlanguage', + 'httpauthorization', + 'httpcachecontrol', + 'httpconnection', + 'httpcookie', + 'httpequiv', + 'httphost', + 'httpreferer', + 'httpreferrer', + 'httpuseragent', + 'hypot', + 'id', + 'idealinmemory', + 'idle', + 'idmap', + 'ifempty', + 'ifkey', + 'ifnotempty', + 'ifnotkey', + 'ignorecase', + 'ilogb', + 'imgptr', + 'implementation', + 'import16bits', + 'import32bits', + 'import64bits', + 'import8bits', + 'importas', + 'importbytes', + 'importfdf', + 'importnode', + 'importpointer', + 'importstring', + 'in', + 'include', + 'includebytes', + 'includelibrary', + 'includelibraryonce', + 'includeonce', + 'includes', + 'includestack', + 'indaylighttime', + 'index', + 'init', + 'initialize', + 'initrequest', + 'inits', + 'inneroncompare', + 'input', + 'inputcolumns', + 'inputtype', + 'insert', + 'insertback', + 'insertbefore', + 'insertdata', + 'insertfirst', + 'insertfrom', + 'insertfront', + 'insertinternal', + 'insertlast', 'insertpage', - 'line', - 'rect', - 'setcolor', - 'setfont', - 'setlinewidth', - 'setpagenumber', - 'conventionaltop', - 'lowagiefont', - 'jcolor', + 'install', + 'installs', + 'integer', + 'internalsubset', + 'interrupt', + 'intersection', + 'inttocond', + 'invoke', + 'invokeautocollect', + 'invokeuntil', + 'invokewhile', + 'ioctl', + 'isa', + 'isalive', + 'isallof', + 'isalnum', + 'isalpha', + 'isanyof', + 'isbase', + 'isblank', + 'iscntrl', + 'isdigit', + 'isdir', + 'isempty', + 'isemptyelement', + 'isfirststep', + 'isfullpath', + 'isgraph', + 'ishttps', + 'isidle', + 'isinstanceof', + 'islink', + 'islower', + 'ismultipart', + 'isnan', + 'isnota', + 'isnotempty', + 'isnothing', + 'iso3country', + 'iso3language', + 'isopen', + 'isprint', + 'ispunct', + 'issameobject', + 'isset', + 'issourcefile', + 'isspace', + 'isssl', + 'issupported', + 'istitle', + 'istruetype', + 'istype', + 'isualphabetic', + 'isulowercase', + 'isupper', + 'isuuppercase', + 'isuwhitespace', + 'isvalid', + 'iswhitespace', + 'isxdigit', + 'isxhr', + 'item', + 'j0', + 'j1', + 'javascript', 'jbarcode', - 'generatechecksum', - 'getbarheight', - 'getbarmultiplier', - 'getbarwidth', - 'getbaseline', - 'getcode', - 'getfont', - 'gettextalignment', - 'gettextsize', - 'setbarheight', - 'setbarmultiplier', - 'setbarwidth', - 'setbaseline', - 'setcode', - 'setgeneratechecksum', - 'setshowchecksum', - 'settextalignment', - 'settextsize', - 'showchecksum', - 'showcode39startstop', - 'showeanguardbars', + 'jcolor', 'jfont', - 'getencoding', - 'getface', - 'getfullfontname', - 'getpsfontname', - 'getsupportedencodings', - 'istruetype', - 'getstyle', - 'getbold', - 'getitalic', - 'getunderline', - 'setface', - 'setunderline', - 'setbold', - 'setitalic', - 'textwidth', 'jimage', - 'ontop', 'jlist', + 'jn', + 'jobjectisa', + 'join', 'jread', - 'addjavascript', - 'exportfdf', - 'extractimage', - 'fieldnames', - 'fieldposition', - 'fieldtype', - 'fieldvalue', - 'gettext', - 'importfdf', - 'javascript', - 'pagecount', - 'pagerotation', - 'pagesize', - 'setfieldvalue', - 'setpagerange', + 'jscontent', + 'jsonfornode', + 'jsonhtml', + 'jsonisleaf', + 'jsonlabel', 'jtable', - 'getabswidth', - 'getalignment', - 'getbordercolor', - 'getborderwidth', - 'getcolumncount', - 'getpadding', - 'getrowcount', - 'getspacing', - 'setalignment', - 'setbordercolor', - 'setborderwidth', - 'setpadding', - 'setspacing', 'jtext', - 'element', - 'foreachspool', - 'unspool', - 'err', - 'in', - 'out', - 'pid', - 'wait', - 'testexitcode', + 'julianday', + 'kernel', + 'key', + 'keycolumns', + 'keys', + 'keywords', + 'kill', + 'label', + 'lang', + 'language', + 'last_insert_rowid', + 'last', + 'lastaccessdate', + 'lastaccesstime', + 'lastchild', + 'lastcomponent', + 'lasterror', + 'lastinsertid', + 'lastnode', + 'lastpoint', + 'lasttouched', + 'lazyvalue', + 'ldexp', + 'leaveopen', + 'left', + 'length', + 'lgamma', + 'line', + 'linediffers', + 'linkto', + 'linktype', + 'list', + 'listactivedatasources', + 'listalldatabases', + 'listalltables', + 'listdatabasetables', + 'listdatasourcedatabases', + 'listdatasourcehosts', + 'listdatasources', + 'listen', + 'listgroups', + 'listgroupsbyuser', + 'listhostdatabases', + 'listhosts', + 'listmethods', + 'listnode', + 'listusers', + 'listusersbygroup', + 'loadcerts', + 'loaddatasourcehostinfo', + 'loaddatasourceinfo', + 'loadlibrary', + 'localaddress', + 'localname', + 'locals', + 'lock', + 'log', + 'log10', + 'log1p', + 'logb', + 'lookupnamespace', + 'lop', + 'lowagiefont', + 'lowercase', + 'makecolor', + 'makecolumnlist', + 'makecolumnmap', + 'makecookieyumyum', + 'makefullpath', + 'makeinheritedcopy', + 'makenonrelative', + 'makeurl', + 'map', + 'marker', + 'matches', + 'matchesstart', + 'matchposition', + 'matchstring', + 'matchtriggers', + 'max', + 'maxinmemory', + 'maxlength', + 'maxrows', 'maxworkers', - 'tasks', - 'workers', - 'startone', - 'addtask', - 'waitforcompletion', - 'isidle', - 'scanworkers', - 'scantasks', - 'z', - 'addfile', - 'adddir', - 'adddirpath', - 'foreachfile', - 'foreachfilename', - 'eachfilename', - 'filenames', - 'getfile', + 'maybeslash', + 'maybevalue', + 'md5hex', + 'media', + 'members', + 'merge', 'meta', - 'criteria', - 'map', - 'valid', - 'lazyvalue', - 'dns_response', - 'qdcount', - 'qdarray', - 'answer', - 'bitformat', - 'consume_rdata', - 'consume_string', - 'consume_label', - 'consume_domain', - 'consume_message', - 'errors', - 'warnings', - 'addwarning', - 'adderror', - 'renderbytes', - 'renderstring', - 'components', - 'addcomponent', - 'addcomponents', - 'body', - 'renderdocumentbytes', - 'contenttype', + 'method', + 'methodname', + 'millisecond', + 'millisecondsinday', 'mime_boundary', 'mime_contenttype', 'mime_hdrs', - 'addtextpart', - 'addhtmlpart', - 'addattachment', - 'addpart', - 'recipients', - 'pop_capa', - 'pop_debug', - 'pop_err', - 'pop_get', - 'pop_ids', - 'pop_index', - 'pop_log', - 'pop_mode', - 'pop_net', - 'pop_res', - 'pop_server', - 'pop_timeout', - 'pop_token', - 'pop_cmd', - 'user', - 'pass', - 'apop', - 'auth', - 'quit', - 'rset', - 'list', - 'uidl', - 'retr', - 'dele', + 'mime', + 'mimes', + 'min', + 'minute', + 'minutesbetween', + 'moddatestr', + 'mode', + 'modf', + 'modificationdate', + 'modificationtime', + 'modulate', + 'monitorenter', + 'monitorexit', + 'month', + 'moveto', + 'movetoattribute', + 'movetoattributenamespace', + 'movetoelement', + 'movetofirstattribute', + 'movetonextattribute', + 'msg', + 'mtime', + 'multiple', + 'n', + 'name', + 'named', + 'namespaceuri', + 'needinitialization', + 'net', + 'nettohost16', + 'nettohost32', + 'nettohost64', + 'new', + 'newbooleanarray', + 'newbytearray', + 'newchararray', + 'newdoublearray', + 'newfloatarray', + 'newglobalref', + 'newintarray', + 'newlongarray', + 'newobject', + 'newobjectarray', + 'newshortarray', + 'newstring', + 'next', + 'nextafter', + 'nextnode', + 'nextprime', + 'nextprune', + 'nextprunedelta', + 'nextsibling', + 'nodeforpath', + 'nodelist', + 'nodename', + 'nodetype', + 'nodevalue', 'noop', - 'capa', - 'stls', - 'authorize', - 'retrieve', - 'headers', - 'uniqueid', - 'capabilities', - 'cancel', - 'results', - 'lasterror', + 'normalize', + 'notationname', + 'notations', + 'novaluelists', + 'numsets', + 'object', + 'objects', + 'objecttype', + 'onclick', + 'oncompare', + 'oncomparestrict', + 'onconvert', + 'oncreate', + 'ondblclick', + 'onkeydown', + 'onkeypress', + 'onkeyup', + 'onmousedown', + 'onmousemove', + 'onmouseout', + 'onmouseover', + 'onmouseup', + 'onreset', + 'onsubmit', + 'ontop', + 'open', + 'openappend', + 'openread', + 'opentruncate', + 'openwith', + 'openwrite', + 'openwriteonly', + 'orderby', + 'orderbydescending', + 'out', + 'output', + 'outputencoding', + 'ownerdocument', + 'ownerelement', + 'padleading', + 'padtrailing', + 'padzero', + 'pagecount', + 'pagerotation', + 'pagesize', + 'param', + 'paramdescs', + 'params', + 'parent', + 'parentdir', + 'parentnode', 'parse_body', 'parse_boundary', 'parse_charset', @@ -4370,59 +4320,263 @@ MEMBERS = { 'parse_msg', 'parse_parts', 'parse_rawhdrs', - 'rawheaders', - 'content_type', - 'content_transfer_encoding', - 'content_disposition', - 'boundary', - 'charset', - 'cc', - 'subject', - 'bcc', - 'date', + 'parse', + 'parseas', + 'parsedocument', + 'parsenumber', + 'parseoneheaderline', + 'pass', + 'path', + 'pathinfo', + 'pathtouri', + 'pathtranslated', 'pause', - 'continue', - 'touch', - 'refresh', - 'queue', - 'status', - 'queue_status', - 'active_tick', - 'getprefs', - 'initialize', + 'payload', + 'pdifference', + 'perform', + 'performonce', + 'perms', + 'pid', + 'pixel', + 'pm', + 'polldbg', + 'pollide', + 'pop_capa', + 'pop_cmd', + 'pop_debug', + 'pop_err', + 'pop_get', + 'pop_ids', + 'pop_index', + 'pop_log', + 'pop_mode', + 'pop_net', + 'pop_res', + 'pop_server', + 'pop_timeout', + 'pop_token', + 'pop', + 'popctx', + 'popinclude', + 'populate', + 'port', + 'position', + 'postdispatch', + 'postparam', + 'postparams', + 'postparamsary', + 'poststring', + 'pow', + 'predispatch', + 'prefix', + 'preflight', + 'prepare', + 'prepared', + 'pretty', + 'prev', + 'previoussibling', + 'printsimplemsg', + 'private_compare', + 'private_find', + 'private_findlast', + 'private_merge', + 'private_rebalanceforinsert', + 'private_rebalanceforremove', + 'private_replaceall', + 'private_replacefirst', + 'private_rotateleft', + 'private_rotateright', + 'private_setrange', + 'private_split', + 'probemimetype', + 'provides', + 'proxying', + 'prune', + 'publicid', + 'pullhttpheader', + 'pullmimepost', + 'pulloneheaderline', + 'pullpost', + 'pullrawpost', + 'pullrawpostchunks', + 'pullrequest', + 'pullrequestline', + 'push', + 'pushctx', + 'pushinclude', + 'qdarray', + 'qdcount', + 'queryparam', + 'queryparams', + 'queryparamsary', + 'querystring', 'queue_maintenance', 'queue_messages', - 'content', + 'queue_status', + 'queue', + 'quit', + 'r', + 'raw', + 'rawcontent', + 'rawdiff', + 'rawheader', + 'rawheaders', + 'rawinvokable', + 'read', + 'readattributevalue', + 'readbytes', + 'readbytesfully', + 'readdestinations', + 'readerror', + 'readidobjects', + 'readline', + 'readmessage', + 'readnumber', + 'readobject', + 'readobjecttcp', + 'readpacket', + 'readsomebytes', + 'readstring', + 'ready', + 'realdoc', + 'realpath', + 'receivefd', + 'recipients', + 'recover', + 'rect', 'rectype', - 'requestid', - 'cachedappprefix', - 'cachedroot', - 'cookiesary', - 'fcgireq', - 'fileuploadsary', - 'headersmap', - 'httpauthorization', - 'postparamsary', - 'queryparamsary', - 'documentroot', - 'appprefix', - 'httpconnection', - 'httpcookie', - 'httphost', - 'httpuseragent', - 'httpcachecontrol', - 'httpreferer', - 'httpreferrer', - 'contentlength', - 'pathtranslated', + 'red', + 'redirectto', + 'referrals', + 'refid', + 'refobj', + 'refresh', + 'rel', + 'remainder', 'remoteaddr', + 'remoteaddress', 'remoteport', + 'remove', + 'removeall', + 'removeattribute', + 'removeattributenode', + 'removeattributens', + 'removeback', + 'removechild', + 'removedatabasetable', + 'removedatasource', + 'removedatasourcedatabase', + 'removedatasourcehost', + 'removefield', + 'removefirst', + 'removefront', + 'removegroup', + 'removelast', + 'removeleading', + 'removenameditem', + 'removenameditemns', + 'removenode', + 'removesubnode', + 'removetrailing', + 'removeuser', + 'removeuserfromallgroups', + 'removeuserfromgroup', + 'rename', + 'renderbytes', + 'renderdocumentbytes', + 'renderstring', + 'replace', + 'replaceall', + 'replacechild', + 'replacedata', + 'replacefirst', + 'replaceheader', + 'replacepattern', + 'representnode', + 'representnoderesult', + 'reqid', + 'requestid', 'requestmethod', + 'requestparams', 'requesturi', + 'requires', + 'reserve', + 'reset', + 'resize', + 'resolutionh', + 'resolutionv', + 'resolvelinks', + 'resourcedata', + 'resourceinvokable', + 'resourcename', + 'resources', + 'respond', + 'restart', + 'restname', + 'result', + 'results', + 'resume', + 'retr', + 'retrieve', + 'returncolumns', + 'returntype', + 'rev', + 'reverse', + 'rewind', + 'right', + 'rint', + 'roll', + 'root', + 'rootmap', + 'rotate', + 'route', + 'rowsfound', + 'rset', + 'rule', + 'rules', + 'run', + 'running', + 'runonce', + 's', + 'sa', + 'safeexport8bits', + 'sameas', + 'save', + 'savedata', + 'scalb', + 'scale', + 'scanfordatasource', + 'scantasks', + 'scanworkers', + 'schemaname', + 'scheme', + 'script', + 'scriptextensions', 'scriptfilename', 'scriptname', + 'scripttype', 'scripturi', 'scripturl', + 'scrubkeywords', + 'search', + 'searchinbucket', + 'searchurl', + 'second', + 'secondsbetween', + 'seek', + 'select', + 'selected', + 'selectmany', + 'self', + 'send', + 'sendchunk', + 'sendfd', + 'sendfile', + 'sendpacket', + 'sendresponse', + 'separator', + 'serializationelements', + 'serialize', 'serveraddr', 'serveradmin', 'servername', @@ -4430,296 +4584,280 @@ MEMBERS = { 'serverprotocol', 'serversignature', 'serversoftware', - 'pathinfo', - 'gatewayinterface', - 'httpaccept', - 'httpacceptencoding', - 'httpacceptlanguage', - 'ishttps', - 'cookies', - 'cookie', - 'rawheader', - 'queryparam', - 'postparam', - 'param', - 'queryparams', - 'querystring', - 'postparams', - 'poststring', - 'params', - 'fileuploads', - 'isxhr', - 'reqid', - 'statusmsg', - 'requestparams', - 'stdin', - 'mimes', - 'writeheaderline', - 'writeheaderbytes', - 'writebodybytes', - 'cap', - 'n', - 'proxying', - 'stop', - 'printsimplemsg', - 'handleevalexpired', - 'handlenormalconnection', - 'handledevconnection', - 'splittoprivatedev', - 'getmode', - 'curl', - 'novaluelists', - 'makeurl', - 'choosecolumntype', - 'getdatabasetablepart', - 'getlcapitype', - 'buildquery', - 'getsortfieldspart', - 'endjs', - 'title', - 'addjs', - 'addjstext', - 'addendjs', - 'addendjstext', - 'addcss', - 'addfavicon', - 'attrs', - 'dtdid', - 'lang', - 'xhtml', - 'style', - 'gethtmlattr', - 'hashtmlattr', - 'onmouseover', - 'onkeydown', - 'dir', - 'onclick', - 'onkeypress', - 'onmouseout', - 'onkeyup', - 'onmousemove', - 'onmouseup', - 'ondblclick', - 'onmousedown', + 'sessionsdump', + 'sessionsmap', + 'set', + 'setalignment', + 'setattr', + 'setattribute', + 'setattributenode', + 'setattributenodens', + 'setattributens', + 'setbarheight', + 'setbarmultiplier', + 'setbarwidth', + 'setbaseline', + 'setbold', + 'setbooleanarrayregion', + 'setbooleanfield', + 'setbordercolor', + 'setborderwidth', + 'setbytearrayregion', + 'setbytefield', + 'setchararrayregion', + 'setcharfield', + 'setcode', + 'setcolor', + 'setcolorspace', + 'setcookie', + 'setcwd', + 'setdefaultstorage', + 'setdestination', + 'setdoublearrayregion', + 'setdoublefield', + 'setencoding', + 'setface', + 'setfieldvalue', + 'setfindpattern', + 'setfloatarrayregion', + 'setfloatfield', + 'setfont', + 'setformat', + 'setgeneratechecksum', + 'setheaders', 'sethtmlattr', - 'class', - 'gethtmlattrstring', - 'tag', - 'code', - 'msg', - 'scripttype', - 'defer', - 'httpequiv', - 'scheme', - 'href', - 'hreflang', - 'linktype', - 'rel', - 'rev', - 'media', - 'declare', - 'classid', - 'codebase', - 'objecttype', - 'codetype', - 'archive', - 'standby', - 'usemap', - 'tabindex', - 'styletype', - 'method', - 'enctype', - 'accept_charset', - 'onsubmit', - 'onreset', - 'accesskey', - 'inputtype', - 'maxlength', - 'for', - 'selected', - 'label', - 'multiple', - 'buff', - 'wroteheaders', - 'pullrequest', - 'pullrawpost', + 'setignorecase', + 'setinput', + 'setintarrayregion', + 'setintfield', + 'setitalic', + 'setlinewidth', + 'setlongarrayregion', + 'setlongfield', + 'setmarker', + 'setmaxfilesize', + 'setmode', + 'setname', + 'setnameditem', + 'setnameditemns', + 'setobjectarrayelement', + 'setobjectfield', + 'setpadding', + 'setpagenumber', + 'setpagerange', + 'setposition', + 'setrange', + 'setreplacepattern', + 'setshortarrayregion', + 'setshortfield', + 'setshowchecksum', + 'setsize', + 'setspacing', + 'setstaticbooleanfield', + 'setstaticbytefield', + 'setstaticcharfield', + 'setstaticdoublefield', + 'setstaticfloatfield', + 'setstaticintfield', + 'setstaticlongfield', + 'setstaticobjectfield', + 'setstaticshortfield', + 'setstatus', + 'settextalignment', + 'settextsize', + 'settimezone', + 'settrait', + 'setunderline', + 'sharpen', + 'shouldabort', 'shouldclose', - 'pullurlpost', - 'pullmimepost', - 'pullhttpheader', - 'pulloneheaderline', - 'parseoneheaderline', - 'addoneheaderline', - 'safeexport8bits', - 'writeheader', - 'fail', - 'connhandler', - 'port', - 'connectionhandler', - 'acceptconnections', - 'gotconnection', - 'failnoconnectionhandler', + 'showchecksum', + 'showcode39startstop', + 'showeanguardbars', + 'shutdownrd', + 'shutdownrdwr', + 'shutdownwr', + 'sin', + 'sinh', + 'size', + 'skip', + 'skiprows', + 'sort', + 'sortcolumns', + 'source', + 'sourcecolumn', + 'sourcefile', + 'sourceline', + 'specified', + 'split', 'splitconnection', - 'scriptextensions', - 'sendfile', - 'probemimetype', - 'appname', - 'inits', - 'installs', - 'rootmap', - 'install', - 'getappsource', - 'preflight', + 'splitdebuggingthread', + 'splitextension', + 'splittext', + 'splitthread', + 'splittoprivatedev', 'splituppath', - 'handleresource', - 'handledefinitionhead', - 'handledefinitionbody', - 'handledefinitionresource', - 'execinstalls', - 'execinits', - 'payload', - 'fullpath', - 'resourcename', - 'issourcefile', - 'resourceinvokable', + 'sql', + 'sqlite3', + 'sqrt', + 'src', 'srcpath', - 'resources', - 'eligiblepath', - 'eligiblepaths', - 'expiresminutes', - 'moddatestr', - 'zips', - 'addzip', - 'getzipfilebytes', - 'resourcedata', - 'zip', - 'zipfile', - 'zipname', - 'zipfilename', - 'rawinvokable', - 'route', - 'setdestination', - 'getprowcount', - 'encodepassword', - 'checkuser', - 'needinitialization', - 'adduser', - 'getuserid', - 'getuser', - 'getuserbykey', - 'removeuser', - 'listusers', - 'listusersbygroup', - 'countusersbygroup', - 'addgroup', - 'updategroup', - 'getgroupid', - 'getgroup', - 'removegroup', - 'listgroups', - 'listgroupsbyuser', - 'addusertogroup', - 'removeuserfromgroup', - 'removeuserfromallgroups', - 'md5hex', - 'usercolumns', - 'groupcolumns', - 'expireminutes', - 'lasttouched', - 'hasexpired', - 'idealinmemory', - 'maxinmemory', - 'nextprune', - 'nextprunedelta', - 'sessionsdump', + 'sslerrfail', + 'stack', + 'standby', + 'start', + 'startone', 'startup', - 'validatesessionstable', - 'createtable', - 'fetchdata', - 'savedata', - 'kill', - 'expire', - 'prune', - 'entry', - 'host', - 'tb', - 'setdefaultstorage', - 'getdefaultstorage', - 'onconvert', - 'send', - 'nodelist', - 'delim', + 'stat', + 'statement', + 'statementonly', + 'stats', + 'status', + 'statuscode', + 'statusmsg', + 'stdin', + 'step', + 'stls', + 'stop', + 'stoprunning', + 'storedata', + 'stripfirstcomponent', + 'striplastcomponent', + 'style', + 'styletype', + 'sub', + 'subject', 'subnode', 'subnodes', - 'addsubnode', - 'removesubnode', - 'nodeforpath', - 'representnoderesult', - 'mime', - 'extensions', - 'representnode', - 'jsonfornode', - 'defaultcontentrepresentation', + 'substringdata', + 'subtract', + 'subtraits', + 'sum', 'supportscontentrepresentation', - 'htmlcontent', - 'appmessage', - 'appstatus', - 'atends', - 'chunked', - 'cookiesarray', - 'didinclude', - 'errstack', - 'headersarray', - 'includestack', - 'outputencoding', - 'sessionsmap', - 'htmlizestacktrace', - 'includes', - 'respond', - 'sendresponse', - 'sendchunk', - 'makecookieyumyum', - 'getinclude', - 'include', - 'includeonce', - 'includelibrary', - 'includelibraryonce', - 'includebytes', - 'addatend', - 'setcookie', - 'addheader', - 'replaceheader', - 'setheaders', - 'rawcontent', - 'redirectto', - 'htmlizestacktracelink', - 'doatbegins', - 'handlelassoappcontent', - 'handlelassoappresponse', - 'domainbody', - 'establisherrorstate', - 'tryfinderrorfile', - 'doatends', - 'dosessions', - 'makenonrelative', - 'pushinclude', - 'popinclude', - 'findinclude', - 'checkdebugging', - 'splitdebuggingthread', - 'matchtriggers', - 'rules', - 'shouldabort', - 'gettrigger', + 'swapbytes', + 'systemid', + 't', + 'tabindex', + 'table', + 'tablecolumnnames', + 'tablecolumns', + 'tablehascolumn', + 'tableizestacktrace', + 'tableizestacktracelink', + 'tablemap', + 'tablename', + 'tables', + 'tabs', + 'tabstr', + 'tag', + 'tagname', + 'take', + 'tan', + 'tanh', + 'target', + 'tasks', + 'tb', + 'tell', + 'testexitcode', + 'testlock', + 'textwidth', + 'thenby', + 'thenbydescending', + 'threadreaddesc', + 'throw', + 'thrownew', + 'time', + 'timezone', + 'title', + 'titlecase', + 'to', + 'token', + 'tolower', + 'top', + 'toreflectedfield', + 'toreflectedmethod', + 'total_changes', + 'totitle', + 'touch', + 'toupper', + 'toxmlstring', + 'trace', + 'trackingid', + 'trait', + 'transform', 'trigger', - 'rule', - 'foo', - 'jsonlabel', - 'jsonhtml', - 'jsonisleaf', - 'acceptpost', - 'csscontent', - 'jscontent' + 'trim', + 'trunk', + 'tryfinderrorfile', + 'trylock', + 'tryreadobject', + 'type', + 'typename', + 'uidl', + 'uncompress', + 'unescape', + 'union', + 'uniqueid', + 'unlock', + 'unspool', + 'up', + 'update', + 'updategroup', + 'upload', + 'uppercase', + 'url', + 'used', + 'usemap', + 'user', + 'usercolumns', + 'valid', + 'validate', + 'validatesessionstable', + 'value', + 'values', + 'valuetype', + 'variant', + 'version', + 'wait', + 'waitforcompletion', + 'warnings', + 'week', + 'weekofmonth', + 'weekofyear', + 'where', + 'width', + 'workers', + 'workinginputcolumns', + 'workingkeycolumns', + 'workingkeyfield_name', + 'workingreturncolumns', + 'workingsortcolumns', + 'write', + 'writebodybytes', + 'writebytes', + 'writeheader', + 'writeheaderbytes', + 'writeheaderline', + 'writeid', + 'writemessage', + 'writeobject', + 'writeobjecttcp', + 'writestring', + 'wroteheaders', + 'xhtml', + 'xmllang', + 'y0', + 'y1', + 'year', + 'yearwoy', + 'yn', + 'z', + 'zip', + 'zipfile', + 'zipfilename', + 'zipname', + 'zips', + 'zoneoffset', ), 'Lasso 8 Member Tags': ( 'accept', @@ -5177,6 +5315,6 @@ MEMBERS = { 'writeunlock', 'xmllang', 'xmlschematype', - 'year' + 'year', ) } diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index 2e855570..a08e806c 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -9,15 +9,16 @@ Do not alter the LEXERS dictionary by hand. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ from __future__ import print_function LEXERS = { - 'ABAPLexer': ('pygments.lexers.business', 'ABAP', ('abap',), ('*.abap',), ('text/x-abap',)), + 'ABAPLexer': ('pygments.lexers.business', 'ABAP', ('abap',), ('*.abap', '*.ABAP'), ('text/x-abap',)), 'APLLexer': ('pygments.lexers.apl', 'APL', ('apl',), ('*.apl',), ()), + 'AbnfLexer': ('pygments.lexers.grammar_notation', 'ABNF', ('abnf',), ('*.abnf',), ('text/x-abnf',)), 'ActionScript3Lexer': ('pygments.lexers.actionscript', 'ActionScript 3', ('as3', 'actionscript3'), ('*.as',), ('application/x-actionscript3', 'text/x-actionscript3', 'text/actionscript3')), 'ActionScriptLexer': ('pygments.lexers.actionscript', 'ActionScript', ('as', 'actionscript'), ('*.as',), ('application/x-actionscript', 'text/x-actionscript', 'text/actionscript')), 'AdaLexer': ('pygments.lexers.pascal', 'Ada', ('ada', 'ada95', 'ada2005'), ('*.adb', '*.ads', '*.ada'), ('text/x-ada',)), @@ -43,20 +44,25 @@ LEXERS = { 'AutohotkeyLexer': ('pygments.lexers.automation', 'autohotkey', ('ahk', 'autohotkey'), ('*.ahk', '*.ahkl'), ('text/x-autohotkey',)), 'AwkLexer': ('pygments.lexers.textedit', 'Awk', ('awk', 'gawk', 'mawk', 'nawk'), ('*.awk',), ('application/x-awk',)), 'BBCodeLexer': ('pygments.lexers.markup', 'BBCode', ('bbcode',), (), ('text/x-bbcode',)), + 'BCLexer': ('pygments.lexers.algebra', 'BC', ('bc',), ('*.bc',), ()), 'BaseMakefileLexer': ('pygments.lexers.make', 'Base Makefile', ('basemake',), (), ()), 'BashLexer': ('pygments.lexers.shell', 'Bash', ('bash', 'sh', 'ksh', 'shell'), ('*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass', '.bashrc', 'bashrc', '.bash_*', 'bash_*', 'PKGBUILD'), ('application/x-sh', 'application/x-shellscript')), - 'BashSessionLexer': ('pygments.lexers.shell', 'Bash Session', ('console',), ('*.sh-session',), ('application/x-shell-session',)), + 'BashSessionLexer': ('pygments.lexers.shell', 'Bash Session', ('console', 'shell-session'), ('*.sh-session', '*.shell-session'), ('application/x-shell-session', 'application/x-sh-session')), 'BatchLexer': ('pygments.lexers.shell', 'Batchfile', ('bat', 'batch', 'dosbatch', 'winbatch'), ('*.bat', '*.cmd'), ('application/x-dos-batch',)), 'BefungeLexer': ('pygments.lexers.esoteric', 'Befunge', ('befunge',), ('*.befunge',), ('application/x-befunge',)), 'BlitzBasicLexer': ('pygments.lexers.basic', 'BlitzBasic', ('blitzbasic', 'b3d', 'bplus'), ('*.bb', '*.decls'), ('text/x-bb',)), 'BlitzMaxLexer': ('pygments.lexers.basic', 'BlitzMax', ('blitzmax', 'bmax'), ('*.bmx',), ('text/x-bmx',)), + 'BnfLexer': ('pygments.lexers.grammar_notation', 'BNF', ('bnf',), ('*.bnf',), ('text/x-bnf',)), 'BooLexer': ('pygments.lexers.dotnet', 'Boo', ('boo',), ('*.boo',), ('text/x-boo',)), + 'BoogieLexer': ('pygments.lexers.esoteric', 'Boogie', ('boogie',), ('*.bpl',), ()), 'BrainfuckLexer': ('pygments.lexers.esoteric', 'Brainfuck', ('brainfuck', 'bf'), ('*.bf', '*.b'), ('application/x-brainfuck',)), 'BroLexer': ('pygments.lexers.dsls', 'Bro', ('bro',), ('*.bro',), ()), 'BugsLexer': ('pygments.lexers.modeling', 'BUGS', ('bugs', 'winbugs', 'openbugs'), ('*.bug',), ()), + 'CAmkESLexer': ('pygments.lexers.esoteric', 'CAmkES', ('camkes', 'idl4'), ('*.camkes', '*.idl4'), ()), 'CLexer': ('pygments.lexers.c_cpp', 'C', ('c',), ('*.c', '*.h', '*.idc'), ('text/x-chdr', 'text/x-csrc')), 'CMakeLexer': ('pygments.lexers.make', 'CMake', ('cmake',), ('*.cmake', 'CMakeLists.txt'), ('text/x-cmake',)), 'CObjdumpLexer': ('pygments.lexers.asm', 'c-objdump', ('c-objdump',), ('*.c-objdump',), ('text/x-c-objdump',)), + 'CPSALexer': ('pygments.lexers.lisp', 'CPSA', ('cpsa',), ('*.cpsa',), ()), 'CSharpAspxLexer': ('pygments.lexers.dotnet', 'aspx-cs', ('aspx-cs',), ('*.aspx', '*.asax', '*.ascx', '*.ashx', '*.asmx', '*.axd'), ()), 'CSharpLexer': ('pygments.lexers.dotnet', 'C#', ('csharp', 'c#'), ('*.cs',), ('text/x-csharp',)), 'Ca65Lexer': ('pygments.lexers.asm', 'ca65 assembler', ('ca65',), ('*.s',), ()), @@ -81,11 +87,16 @@ LEXERS = { 'ColdfusionHtmlLexer': ('pygments.lexers.templates', 'Coldfusion HTML', ('cfm',), ('*.cfm', '*.cfml'), ('application/x-coldfusion',)), 'ColdfusionLexer': ('pygments.lexers.templates', 'cfstatement', ('cfs',), (), ()), 'CommonLispLexer': ('pygments.lexers.lisp', 'Common Lisp', ('common-lisp', 'cl', 'lisp'), ('*.cl', '*.lisp'), ('text/x-common-lisp',)), + 'ComponentPascalLexer': ('pygments.lexers.oberon', 'Component Pascal', ('componentpascal', 'cp'), ('*.cp', '*.cps'), ('text/x-component-pascal',)), 'CoqLexer': ('pygments.lexers.theorem', 'Coq', ('coq',), ('*.v',), ('text/x-coq',)), 'CppLexer': ('pygments.lexers.c_cpp', 'C++', ('cpp', 'c++'), ('*.cpp', '*.hpp', '*.c++', '*.h++', '*.cc', '*.hh', '*.cxx', '*.hxx', '*.C', '*.H', '*.cp', '*.CPP'), ('text/x-c++hdr', 'text/x-c++src')), 'CppObjdumpLexer': ('pygments.lexers.asm', 'cpp-objdump', ('cpp-objdump', 'c++-objdumb', 'cxx-objdump'), ('*.cpp-objdump', '*.c++-objdump', '*.cxx-objdump'), ('text/x-cpp-objdump',)), + 'CrmshLexer': ('pygments.lexers.dsls', 'Crmsh', ('crmsh', 'pcmk'), ('*.crmsh', '*.pcmk'), ()), 'CrocLexer': ('pygments.lexers.d', 'Croc', ('croc',), ('*.croc',), ('text/x-crocsrc',)), 'CryptolLexer': ('pygments.lexers.haskell', 'Cryptol', ('cryptol', 'cry'), ('*.cry',), ('text/x-cryptol',)), + 'CsoundDocumentLexer': ('pygments.lexers.csound', 'Csound Document', ('csound-document', 'csound-csd'), ('*.csd',), ()), + 'CsoundOrchestraLexer': ('pygments.lexers.csound', 'Csound Orchestra', ('csound', 'csound-orc'), ('*.orc',), ()), + 'CsoundScoreLexer': ('pygments.lexers.csound', 'Csound Score', ('csound-score', 'csound-sco'), ('*.sco',), ()), 'CssDjangoLexer': ('pygments.lexers.templates', 'CSS+Django/Jinja', ('css+django', 'css+jinja'), (), ('text/css+django', 'text/css+jinja')), 'CssErbLexer': ('pygments.lexers.templates', 'CSS+Ruby', ('css+erb', 'css+ruby'), (), ('text/css+ruby',)), 'CssGenshiLexer': ('pygments.lexers.templates', 'CSS+Genshi Text', ('css+genshitext', 'css+genshi'), (), ('text/css+genshi',)), @@ -112,10 +123,13 @@ LEXERS = { 'DylanLidLexer': ('pygments.lexers.dylan', 'DylanLID', ('dylan-lid', 'lid'), ('*.lid', '*.hdp'), ('text/x-dylan-lid',)), 'ECLLexer': ('pygments.lexers.ecl', 'ECL', ('ecl',), ('*.ecl',), ('application/x-ecl',)), 'ECLexer': ('pygments.lexers.c_like', 'eC', ('ec',), ('*.ec', '*.eh'), ('text/x-echdr', 'text/x-ecsrc')), + 'EarlGreyLexer': ('pygments.lexers.javascript', 'Earl Grey', ('earl-grey', 'earlgrey', 'eg'), ('*.eg',), ('text/x-earl-grey',)), + 'EasytrieveLexer': ('pygments.lexers.scripting', 'Easytrieve', ('easytrieve',), ('*.ezt', '*.mac'), ('text/x-easytrieve',)), 'EbnfLexer': ('pygments.lexers.parsers', 'EBNF', ('ebnf',), ('*.ebnf',), ('text/x-ebnf',)), 'EiffelLexer': ('pygments.lexers.eiffel', 'Eiffel', ('eiffel',), ('*.e',), ('text/x-eiffel',)), 'ElixirConsoleLexer': ('pygments.lexers.erlang', 'Elixir iex session', ('iex',), (), ('text/x-elixir-shellsession',)), 'ElixirLexer': ('pygments.lexers.erlang', 'Elixir', ('elixir', 'ex', 'exs'), ('*.ex', '*.exs'), ('text/x-elixir',)), + 'ElmLexer': ('pygments.lexers.elm', 'Elm', ('elm',), ('*.elm',), ('text/x-elm',)), 'EmacsLispLexer': ('pygments.lexers.lisp', 'EmacsLisp', ('emacs', 'elisp'), ('*.el',), ('text/x-elisp', 'application/x-elisp')), 'ErbLexer': ('pygments.lexers.templates', 'ERB', ('erb',), (), ('application/x-ruby-templating',)), 'ErlangLexer': ('pygments.lexers.erlang', 'Erlang', ('erlang',), ('*.erl', '*.hrl', '*.es', '*.escript'), ('text/x-erlang',)), @@ -123,11 +137,13 @@ LEXERS = { 'EvoqueHtmlLexer': ('pygments.lexers.templates', 'HTML+Evoque', ('html+evoque',), ('*.html',), ('text/html+evoque',)), 'EvoqueLexer': ('pygments.lexers.templates', 'Evoque', ('evoque',), ('*.evoque',), ('application/x-evoque',)), 'EvoqueXmlLexer': ('pygments.lexers.templates', 'XML+Evoque', ('xml+evoque',), ('*.xml',), ('application/xml+evoque',)), + 'EzhilLexer': ('pygments.lexers.ezhil', 'Ezhil', ('ezhil',), ('*.n',), ('text/x-ezhil',)), 'FSharpLexer': ('pygments.lexers.dotnet', 'FSharp', ('fsharp',), ('*.fs', '*.fsi'), ('text/x-fsharp',)), 'FactorLexer': ('pygments.lexers.factor', 'Factor', ('factor',), ('*.factor',), ('text/x-factor',)), 'FancyLexer': ('pygments.lexers.ruby', 'Fancy', ('fancy', 'fy'), ('*.fy', '*.fancypack'), ('text/x-fancysrc',)), 'FantomLexer': ('pygments.lexers.fantom', 'Fantom', ('fan',), ('*.fan',), ('application/x-fantom',)), 'FelixLexer': ('pygments.lexers.felix', 'Felix', ('felix', 'flx'), ('*.flx', '*.flxh'), ('text/x-felix',)), + 'FishShellLexer': ('pygments.lexers.shell', 'Fish', ('fish', 'fishshell'), ('*.fish', '*.load'), ('application/x-fish',)), 'FortranFixedLexer': ('pygments.lexers.fortran', 'FortranFixed', ('fortranfixed',), ('*.f', '*.F'), ()), 'FortranLexer': ('pygments.lexers.fortran', 'Fortran', ('fortran',), ('*.f03', '*.f90', '*.F03', '*.F90'), ('text/x-fortran',)), 'FoxProLexer': ('pygments.lexers.foxpro', 'FoxPro', ('foxpro', 'vfp', 'clipper', 'xbase'), ('*.PRG', '*.prg'), ()), @@ -151,6 +167,7 @@ LEXERS = { 'HandlebarsLexer': ('pygments.lexers.templates', 'Handlebars', ('handlebars',), (), ()), 'HaskellLexer': ('pygments.lexers.haskell', 'Haskell', ('haskell', 'hs'), ('*.hs',), ('text/x-haskell',)), 'HaxeLexer': ('pygments.lexers.haxe', 'Haxe', ('hx', 'haxe', 'hxsl'), ('*.hx', '*.hxsl'), ('text/haxe', 'text/x-haxe', 'text/x-hx')), + 'HexdumpLexer': ('pygments.lexers.hexdump', 'Hexdump', ('hexdump',), (), ()), 'HtmlDjangoLexer': ('pygments.lexers.templates', 'HTML+Django/Jinja', ('html+django', 'html+jinja', 'htmldjango'), (), ('text/html+django', 'text/html+jinja')), 'HtmlGenshiLexer': ('pygments.lexers.templates', 'HTML+Genshi', ('html+genshi', 'html+kid'), (), ('text/html+genshi',)), 'HtmlLexer': ('pygments.lexers.html', 'HTML', ('html',), ('*.html', '*.htm', '*.xhtml', '*.xslt'), ('text/html', 'application/xhtml+xml')), @@ -166,11 +183,12 @@ LEXERS = { 'Inform6Lexer': ('pygments.lexers.int_fiction', 'Inform 6', ('inform6', 'i6'), ('*.inf',), ()), 'Inform6TemplateLexer': ('pygments.lexers.int_fiction', 'Inform 6 template', ('i6t',), ('*.i6t',), ()), 'Inform7Lexer': ('pygments.lexers.int_fiction', 'Inform 7', ('inform7', 'i7'), ('*.ni', '*.i7x'), ()), - 'IniLexer': ('pygments.lexers.configs', 'INI', ('ini', 'cfg', 'dosini'), ('*.ini', '*.cfg'), ('text/x-ini',)), + 'IniLexer': ('pygments.lexers.configs', 'INI', ('ini', 'cfg', 'dosini'), ('*.ini', '*.cfg', '*.inf'), ('text/x-ini', 'text/inf')), 'IoLexer': ('pygments.lexers.iolang', 'Io', ('io',), ('*.io',), ('text/x-iosrc',)), 'IokeLexer': ('pygments.lexers.jvm', 'Ioke', ('ioke', 'ik'), ('*.ik',), ('text/x-iokesrc',)), 'IrcLogsLexer': ('pygments.lexers.textfmts', 'IRC logs', ('irc',), ('*.weechatlog',), ('text/x-irclog',)), 'IsabelleLexer': ('pygments.lexers.theorem', 'Isabelle', ('isabelle',), ('*.thy',), ('text/x-isabelle',)), + 'JLexer': ('pygments.lexers.j', 'J', ('j',), ('*.ijs',), ('text/x-j',)), 'JadeLexer': ('pygments.lexers.html', 'Jade', ('jade',), ('*.jade',), ('text/x-jade',)), 'JagsLexer': ('pygments.lexers.modeling', 'JAGS', ('jags',), ('*.jag', '*.bug'), ()), 'JasminLexer': ('pygments.lexers.jvm', 'Jasmin', ('jasmin', 'jasminxt'), ('*.j',), ()), @@ -181,6 +199,7 @@ LEXERS = { 'JavascriptLexer': ('pygments.lexers.javascript', 'JavaScript', ('js', 'javascript'), ('*.js', '*.jsm'), ('application/javascript', 'application/x-javascript', 'text/x-javascript', 'text/javascript')), 'JavascriptPhpLexer': ('pygments.lexers.templates', 'JavaScript+PHP', ('js+php', 'javascript+php'), (), ('application/x-javascript+php', 'text/x-javascript+php', 'text/javascript+php')), 'JavascriptSmartyLexer': ('pygments.lexers.templates', 'JavaScript+Smarty', ('js+smarty', 'javascript+smarty'), (), ('application/x-javascript+smarty', 'text/x-javascript+smarty', 'text/javascript+smarty')), + 'JclLexer': ('pygments.lexers.scripting', 'JCL', ('jcl',), ('*.jcl',), ('text/x-jcl',)), 'JsonLdLexer': ('pygments.lexers.data', 'JSON-LD', ('jsonld', 'json-ld'), ('*.jsonld',), ('application/ld+json',)), 'JsonLexer': ('pygments.lexers.data', 'JSON', ('json',), ('*.json',), ('application/json',)), 'JspLexer': ('pygments.lexers.templates', 'Java Server Page', ('jsp',), ('*.jsp',), ('application/x-jsp',)), @@ -197,6 +216,7 @@ LEXERS = { 'LassoLexer': ('pygments.lexers.javascript', 'Lasso', ('lasso', 'lassoscript'), ('*.lasso', '*.lasso[89]'), ('text/x-lasso',)), 'LassoXmlLexer': ('pygments.lexers.templates', 'XML+Lasso', ('xml+lasso',), (), ('application/xml+lasso',)), 'LeanLexer': ('pygments.lexers.theorem', 'Lean', ('lean',), ('*.lean',), ('text/x-lean',)), + 'LessCssLexer': ('pygments.lexers.css', 'LessCss', ('less',), ('*.less',), ('text/x-less-css',)), 'LighttpdConfLexer': ('pygments.lexers.configs', 'Lighttpd configuration file', ('lighty', 'lighttpd'), (), ('text/x-lighttpd-conf',)), 'LimboLexer': ('pygments.lexers.inferno', 'Limbo', ('limbo',), ('*.b',), ('text/limbo',)), 'LiquidLexer': ('pygments.lexers.templates', 'liquid', ('liquid',), ('*.liquid',), ()), @@ -210,6 +230,7 @@ LEXERS = { 'LogtalkLexer': ('pygments.lexers.prolog', 'Logtalk', ('logtalk',), ('*.lgt', '*.logtalk'), ('text/x-logtalk',)), 'LuaLexer': ('pygments.lexers.scripting', 'Lua', ('lua',), ('*.lua', '*.wlua'), ('text/x-lua', 'application/x-lua')), 'MOOCodeLexer': ('pygments.lexers.scripting', 'MOOCode', ('moocode', 'moo'), ('*.moo',), ('text/x-moocode',)), + 'MSDOSSessionLexer': ('pygments.lexers.shell', 'MSDOS Session', ('doscon',), (), ()), 'MakefileLexer': ('pygments.lexers.make', 'Makefile', ('make', 'makefile', 'mf', 'bsdmake'), ('*.mak', '*.mk', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile'), ('text/x-makefile',)), 'MakoCssLexer': ('pygments.lexers.templates', 'CSS+Mako', ('css+mako',), (), ('text/css+mako',)), 'MakoHtmlLexer': ('pygments.lexers.templates', 'HTML+Mako', ('html+mako',), (), ('text/html+mako',)), @@ -265,19 +286,24 @@ LEXERS = { 'OocLexer': ('pygments.lexers.ooc', 'Ooc', ('ooc',), ('*.ooc',), ('text/x-ooc',)), 'OpaLexer': ('pygments.lexers.ml', 'Opa', ('opa',), ('*.opa',), ('text/x-opa',)), 'OpenEdgeLexer': ('pygments.lexers.business', 'OpenEdge ABL', ('openedge', 'abl', 'progress'), ('*.p', '*.cls'), ('text/x-openedge', 'application/x-openedge')), + 'PacmanConfLexer': ('pygments.lexers.configs', 'PacmanConf', ('pacmanconf',), ('pacman.conf',), ()), 'PanLexer': ('pygments.lexers.dsls', 'Pan', ('pan',), ('*.pan',), ()), + 'ParaSailLexer': ('pygments.lexers.parasail', 'ParaSail', ('parasail',), ('*.psi', '*.psl'), ('text/x-parasail',)), 'PawnLexer': ('pygments.lexers.pawn', 'Pawn', ('pawn',), ('*.p', '*.pwn', '*.inc'), ('text/x-pawn',)), 'Perl6Lexer': ('pygments.lexers.perl', 'Perl6', ('perl6', 'pl6'), ('*.pl', '*.pm', '*.nqp', '*.p6', '*.6pl', '*.p6l', '*.pl6', '*.6pm', '*.p6m', '*.pm6', '*.t'), ('text/x-perl6', 'application/x-perl6')), 'PerlLexer': ('pygments.lexers.perl', 'Perl', ('perl', 'pl'), ('*.pl', '*.pm', '*.t'), ('text/x-perl', 'application/x-perl')), 'PhpLexer': ('pygments.lexers.php', 'PHP', ('php', 'php3', 'php4', 'php5'), ('*.php', '*.php[345]', '*.inc'), ('text/x-php',)), 'PigLexer': ('pygments.lexers.jvm', 'Pig', ('pig',), ('*.pig',), ('text/x-pig',)), 'PikeLexer': ('pygments.lexers.c_like', 'Pike', ('pike',), ('*.pike', '*.pmod'), ('text/x-pike',)), + 'PkgConfigLexer': ('pygments.lexers.configs', 'PkgConfig', ('pkgconfig',), ('*.pc',), ()), 'PlPgsqlLexer': ('pygments.lexers.sql', 'PL/pgSQL', ('plpgsql',), (), ('text/x-plpgsql',)), 'PostScriptLexer': ('pygments.lexers.graphics', 'PostScript', ('postscript', 'postscr'), ('*.ps', '*.eps'), ('application/postscript',)), 'PostgresConsoleLexer': ('pygments.lexers.sql', 'PostgreSQL console (psql)', ('psql', 'postgresql-console', 'postgres-console'), (), ('text/x-postgresql-psql',)), 'PostgresLexer': ('pygments.lexers.sql', 'PostgreSQL SQL dialect', ('postgresql', 'postgres'), (), ('text/x-postgresql',)), 'PovrayLexer': ('pygments.lexers.graphics', 'POVRay', ('pov',), ('*.pov', '*.inc'), ('text/x-povray',)), 'PowerShellLexer': ('pygments.lexers.shell', 'PowerShell', ('powershell', 'posh', 'ps1', 'psm1'), ('*.ps1', '*.psm1'), ('text/x-powershell',)), + 'PowerShellSessionLexer': ('pygments.lexers.shell', 'PowerShell Session', ('ps1con',), (), ()), + 'PraatLexer': ('pygments.lexers.praat', 'Praat', ('praat',), ('*.praat', '*.proc', '*.psc'), ()), 'PrologLexer': ('pygments.lexers.prolog', 'Prolog', ('prolog',), ('*.ecl', '*.prolog', '*.pro', '*.pl'), ('text/x-prolog',)), 'PropertiesLexer': ('pygments.lexers.configs', 'Properties', ('properties', 'jproperties'), ('*.properties',), ('text/x-java-properties',)), 'ProtoBufLexer': ('pygments.lexers.dsls', 'Protocol Buffer', ('protobuf', 'proto'), ('*.proto',), ()), @@ -289,7 +315,8 @@ LEXERS = { 'PythonLexer': ('pygments.lexers.python', 'Python', ('python', 'py', 'sage'), ('*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac', '*.sage'), ('text/x-python', 'application/x-python')), 'PythonTracebackLexer': ('pygments.lexers.python', 'Python Traceback', ('pytb',), ('*.pytb',), ('text/x-python-traceback',)), 'QBasicLexer': ('pygments.lexers.basic', 'QBasic', ('qbasic', 'basic'), ('*.BAS', '*.bas'), ('text/basic',)), - 'QmlLexer': ('pygments.lexers.webmisc', 'QML', ('qml',), ('*.qml',), ('application/x-qml',)), + 'QVToLexer': ('pygments.lexers.qvt', 'QVTO', ('qvto', 'qvt'), ('*.qvto',), ()), + 'QmlLexer': ('pygments.lexers.webmisc', 'QML', ('qml', 'qbs'), ('*.qml', '*.qbs'), ('application/x-qml', 'application/x-qt.qbs+qml')), 'RConsoleLexer': ('pygments.lexers.r', 'RConsole', ('rconsole', 'rout'), ('*.Rout',), ()), 'RPMSpecLexer': ('pygments.lexers.installers', 'RPMSpec', ('spec',), ('*.spec',), ('text/x-rpm-spec',)), 'RacketLexer': ('pygments.lexers.lisp', 'Racket', ('racket', 'rkt'), ('*.rkt', '*.rktd', '*.rktl'), ('text/x-racket', 'application/x-racket')), @@ -310,13 +337,16 @@ LEXERS = { 'ResourceLexer': ('pygments.lexers.resource', 'ResourceBundle', ('resource', 'resourcebundle'), ('*.txt',), ()), 'RexxLexer': ('pygments.lexers.scripting', 'Rexx', ('rexx', 'arexx'), ('*.rexx', '*.rex', '*.rx', '*.arexx'), ('text/x-rexx',)), 'RhtmlLexer': ('pygments.lexers.templates', 'RHTML', ('rhtml', 'html+erb', 'html+ruby'), ('*.rhtml',), ('text/html+ruby',)), + 'RoboconfGraphLexer': ('pygments.lexers.roboconf', 'Roboconf Graph', ('roboconf-graph',), ('*.graph',), ()), + 'RoboconfInstancesLexer': ('pygments.lexers.roboconf', 'Roboconf Instances', ('roboconf-instances',), ('*.instances',), ()), 'RobotFrameworkLexer': ('pygments.lexers.robotframework', 'RobotFramework', ('robotframework',), ('*.txt', '*.robot'), ('text/x-robotframework',)), 'RqlLexer': ('pygments.lexers.sql', 'RQL', ('rql',), ('*.rql',), ('text/x-rql',)), 'RslLexer': ('pygments.lexers.dsls', 'RSL', ('rsl',), ('*.rsl',), ('text/rsl',)), 'RstLexer': ('pygments.lexers.markup', 'reStructuredText', ('rst', 'rest', 'restructuredtext'), ('*.rst', '*.rest'), ('text/x-rst', 'text/prs.fallenstein.rst')), + 'RtsLexer': ('pygments.lexers.trafficscript', 'TrafficScript', ('rts', 'trafficscript'), ('*.rts',), ()), 'RubyConsoleLexer': ('pygments.lexers.ruby', 'Ruby irb session', ('rbcon', 'irb'), (), ('text/x-ruby-shellsession',)), - 'RubyLexer': ('pygments.lexers.ruby', 'Ruby', ('rb', 'ruby', 'duby'), ('*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec', '*.rbx', '*.duby'), ('text/x-ruby', 'application/x-ruby')), - 'RustLexer': ('pygments.lexers.rust', 'Rust', ('rust',), ('*.rs',), ('text/rust',)), + 'RubyLexer': ('pygments.lexers.ruby', 'Ruby', ('rb', 'ruby', 'duby'), ('*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec', '*.rbx', '*.duby', 'Gemfile'), ('text/x-ruby', 'application/x-ruby')), + 'RustLexer': ('pygments.lexers.rust', 'Rust', ('rust',), ('*.rs', '*.rs.in'), ('text/rust',)), 'SLexer': ('pygments.lexers.r', 'S', ('splus', 's', 'r'), ('*.S', '*.R', '.Rhistory', '.Rprofile', '.Renviron'), ('text/S-plus', 'text/S', 'text/x-r-source', 'text/x-r', 'text/x-R', 'text/x-r-history', 'text/x-r-profile')), 'SMLLexer': ('pygments.lexers.ml', 'Standard ML', ('sml',), ('*.sml', '*.sig', '*.fun'), ('text/x-standardml', 'application/x-standardml')), 'SassLexer': ('pygments.lexers.css', 'Sass', ('sass',), ('*.sass',), ('text/x-sass',)), @@ -325,7 +355,7 @@ LEXERS = { 'SchemeLexer': ('pygments.lexers.lisp', 'Scheme', ('scheme', 'scm'), ('*.scm', '*.ss'), ('text/x-scheme', 'application/x-scheme')), 'ScilabLexer': ('pygments.lexers.matlab', 'Scilab', ('scilab',), ('*.sci', '*.sce', '*.tst'), ('text/scilab',)), 'ScssLexer': ('pygments.lexers.css', 'SCSS', ('scss',), ('*.scss',), ('text/x-scss',)), - 'ShellSessionLexer': ('pygments.lexers.shell', 'Shell Session', ('shell-session',), ('*.shell-session',), ('application/x-sh-session',)), + 'ShenLexer': ('pygments.lexers.lisp', 'Shen', ('shen',), ('*.shen',), ('text/x-shen', 'application/x-shen')), 'SlimLexer': ('pygments.lexers.webmisc', 'Slim', ('slim',), ('*.slim',), ('text/x-slim',)), 'SmaliLexer': ('pygments.lexers.dalvik', 'Smali', ('smali',), ('*.smali',), ('text/smali',)), 'SmalltalkLexer': ('pygments.lexers.smalltalk', 'Smalltalk', ('smalltalk', 'squeak', 'st'), ('*.st',), ('text/x-smalltalk',)), @@ -339,17 +369,25 @@ LEXERS = { 'SquidConfLexer': ('pygments.lexers.configs', 'SquidConf', ('squidconf', 'squid.conf', 'squid'), ('squid.conf',), ('text/x-squidconf',)), 'SspLexer': ('pygments.lexers.templates', 'Scalate Server Page', ('ssp',), ('*.ssp',), ('application/x-ssp',)), 'StanLexer': ('pygments.lexers.modeling', 'Stan', ('stan',), ('*.stan',), ()), + 'SuperColliderLexer': ('pygments.lexers.supercollider', 'SuperCollider', ('sc', 'supercollider'), ('*.sc', '*.scd'), ('application/supercollider', 'text/supercollider')), 'SwiftLexer': ('pygments.lexers.objective', 'Swift', ('swift',), ('*.swift',), ('text/x-swift',)), 'SwigLexer': ('pygments.lexers.c_like', 'SWIG', ('swig',), ('*.swg', '*.i'), ('text/swig',)), 'SystemVerilogLexer': ('pygments.lexers.hdl', 'systemverilog', ('systemverilog', 'sv'), ('*.sv', '*.svh'), ('text/x-systemverilog',)), + 'TAPLexer': ('pygments.lexers.testing', 'TAP', ('tap',), ('*.tap',), ()), 'Tads3Lexer': ('pygments.lexers.int_fiction', 'TADS 3', ('tads3',), ('*.t',), ()), 'TclLexer': ('pygments.lexers.tcl', 'Tcl', ('tcl',), ('*.tcl', '*.rvt'), ('text/x-tcl', 'text/x-script.tcl', 'application/x-tcl')), 'TcshLexer': ('pygments.lexers.shell', 'Tcsh', ('tcsh', 'csh'), ('*.tcsh', '*.csh'), ('application/x-csh',)), + 'TcshSessionLexer': ('pygments.lexers.shell', 'Tcsh Session', ('tcshcon',), (), ()), 'TeaTemplateLexer': ('pygments.lexers.templates', 'Tea', ('tea',), ('*.tea',), ('text/x-tea',)), + 'TermcapLexer': ('pygments.lexers.configs', 'Termcap', ('termcap',), ('termcap', 'termcap.src'), ()), + 'TerminfoLexer': ('pygments.lexers.configs', 'Terminfo', ('terminfo',), ('terminfo', 'terminfo.src'), ()), + 'TerraformLexer': ('pygments.lexers.configs', 'Terraform', ('terraform', 'tf'), ('*.tf',), ('application/x-tf', 'application/x-terraform')), 'TexLexer': ('pygments.lexers.markup', 'TeX', ('tex', 'latex'), ('*.tex', '*.aux', '*.toc'), ('text/x-tex', 'text/x-latex')), 'TextLexer': ('pygments.lexers.special', 'Text only', ('text',), ('*.txt',), ('text/plain',)), + 'ThriftLexer': ('pygments.lexers.dsls', 'Thrift', ('thrift',), ('*.thrift',), ('application/x-thrift',)), 'TodotxtLexer': ('pygments.lexers.textfmts', 'Todotxt', ('todotxt',), ('todo.txt', '*.todotxt'), ('text/x-todo',)), 'TreetopLexer': ('pygments.lexers.parsers', 'Treetop', ('treetop',), ('*.treetop', '*.tt'), ()), + 'TurtleLexer': ('pygments.lexers.rdf', 'Turtle', ('turtle',), ('*.ttl',), ('text/turtle', 'application/x-turtle')), 'TwigHtmlLexer': ('pygments.lexers.templates', 'HTML+Twig', ('html+twig',), ('*.twig',), ('text/html+twig',)), 'TwigLexer': ('pygments.lexers.templates', 'Twig', ('twig',), (), ('application/x-twig',)), 'TypeScriptLexer': ('pygments.lexers.javascript', 'TypeScript', ('ts',), ('*.ts',), ('text/x-typescript',)), @@ -365,6 +403,7 @@ LEXERS = { 'VerilogLexer': ('pygments.lexers.hdl', 'verilog', ('verilog', 'v'), ('*.v',), ('text/x-verilog',)), 'VhdlLexer': ('pygments.lexers.hdl', 'vhdl', ('vhdl',), ('*.vhdl', '*.vhd'), ('text/x-vhdl',)), 'VimLexer': ('pygments.lexers.textedit', 'VimL', ('vim',), ('*.vim', '.vimrc', '.exrc', '.gvimrc', '_vimrc', '_exrc', '_gvimrc', 'vimrc', 'gvimrc'), ('text/x-vim',)), + 'X10Lexer': ('pygments.lexers.x10', 'X10', ('x10', 'xten'), ('*.x10',), ('text/x-x10',)), 'XQueryLexer': ('pygments.lexers.webmisc', 'XQuery', ('xquery', 'xqy', 'xq', 'xql', 'xqm'), ('*.xqy', '*.xquery', '*.xq', '*.xql', '*.xqm'), ('text/xquery', 'application/xquery')), 'XmlDjangoLexer': ('pygments.lexers.templates', 'XML+Django/Jinja', ('xml+django', 'xml+jinja'), (), ('application/xml+django', 'application/xml+jinja')), 'XmlErbLexer': ('pygments.lexers.templates', 'XML+Ruby', ('xml+erb', 'xml+ruby'), (), ('application/xml+ruby',)), @@ -407,11 +446,18 @@ if __name__ == '__main__': # pragma: no cover # extract useful sourcecode from this file with open(__file__) as fp: content = fp.read() + # replace crnl to nl for Windows. + # + # Note that, originally, contributers should keep nl of master + # repository, for example by using some kind of automatic + # management EOL, like `EolExtension + # <https://www.mercurial-scm.org/wiki/EolExtension>`. + content = content.replace("\r\n", "\n") header = content[:content.find('LEXERS = {')] footer = content[content.find("if __name__ == '__main__':"):] # write new file - with open(__file__, 'w') as fp: + with open(__file__, 'wb') as fp: fp.write(header) fp.write('LEXERS = {\n %s,\n}\n\n' % ',\n '.join(found_lexers)) fp.write(footer) diff --git a/pygments/lexers/_stan_builtins.py b/pygments/lexers/_stan_builtins.py index 6bf44574..6585ad71 100644 --- a/pygments/lexers/_stan_builtins.py +++ b/pygments/lexers/_stan_builtins.py @@ -4,7 +4,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This file contains the names of functions for Stan used by - ``pygments.lexers.math.StanLexer. This is for Stan language version 2.7.0 + ``pygments.lexers.math.StanLexer. This is for Stan language version 2.8.0. :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. @@ -39,8 +39,7 @@ TYPES = ( 'simplex', 'unit_vector', 'vector', - 'void' -) + 'void') FUNCTIONS = ( 'Phi', @@ -105,6 +104,11 @@ FUNCTIONS = ( 'cos', 'cosh', 'crossprod', + 'csr_extract_u', + 'csr_extract_v', + 'csr_extract_w', + 'csr_matrix_times_vector', + 'csr_to_dense_matrix', 'cumulative_sum', 'determinant', 'diag_matrix', @@ -187,6 +191,7 @@ FUNCTIONS = ( 'inv_gamma_log', 'inv_gamma_rng', 'inv_logit', + 'inv_phi', 'inv_sqrt', 'inv_square', 'inv_wishart_log', diff --git a/pygments/lexers/algebra.py b/pygments/lexers/algebra.py index 873b1bf2..fc54c3c3 100644 --- a/pygments/lexers/algebra.py +++ b/pygments/lexers/algebra.py @@ -15,7 +15,7 @@ from pygments.lexer import RegexLexer, bygroups, words from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ Number, Punctuation -__all__ = ['GAPLexer', 'MathematicaLexer', 'MuPADLexer'] +__all__ = ['GAPLexer', 'MathematicaLexer', 'MuPADLexer', 'BCLexer'] class GAPLexer(RegexLexer): @@ -65,7 +65,7 @@ class GAPLexer(RegexLexer): (r'[0-9]+(?:\.[0-9]*)?(?:e[0-9]+)?', Number), (r'\.[0-9]+(?:e[0-9]+)?', Number), (r'.', Text) - ] + ], } @@ -183,5 +183,39 @@ class MuPADLexer(RegexLexer): (r'/\*', Comment.Multiline, '#push'), (r'\*/', Comment.Multiline, '#pop'), (r'[*/]', Comment.Multiline) - ] + ], + } + + +class BCLexer(RegexLexer): + """ + A `BC <https://www.gnu.org/software/bc/>`_ lexer. + + .. versionadded:: 2.1 + """ + name = 'BC' + aliases = ['bc'] + filenames = ['*.bc'] + + tokens = { + 'root': [ + (r'/\*', Comment.Multiline, 'comment'), + (r'"(?:[^"\\]|\\.)*"', String), + (r'[{}();,]', Punctuation), + (words(('if', 'else', 'while', 'for', 'break', 'continue', + 'halt', 'return', 'define', 'auto', 'print', 'read', + 'length', 'scale', 'sqrt', 'limits', 'quit', + 'warranty'), suffix=r'\b'), Keyword), + (r'\+\+|--|\|\||&&|' + r'([-<>+*%\^/!=])=?', Operator), + # bc doesn't support exponential + (r'[0-9]+(\.[0-9]*)?', Number), + (r'\.[0-9]+', Number), + (r'.', Text) + ], + 'comment': [ + (r'[^*/]+', Comment.Multiline), + (r'\*/', Comment.Multiline, '#pop'), + (r'[*/]', Comment.Multiline) + ], } diff --git a/pygments/lexers/archetype.py b/pygments/lexers/archetype.py index b88fa2e9..e596b7be 100644 --- a/pygments/lexers/archetype.py +++ b/pygments/lexers/archetype.py @@ -70,7 +70,8 @@ class AtomsLexer(RegexLexer): (r'[a-z][a-z0-9+.-]*:', Literal, 'uri'), # term code (r'(\[)(\w[\w-]*(?:\([^)\n]+\))?)(::)(\w[\w-]*)(\])', - bygroups(Punctuation, Name.Decorator, Punctuation, Name.Decorator, Punctuation)), + bygroups(Punctuation, Name.Decorator, Punctuation, Name.Decorator, + Punctuation)), (r'\|', Punctuation, 'interval'), # list continuation (r'\.\.\.', Punctuation), @@ -223,7 +224,8 @@ class CadlLexer(AtomsLexer): bygroups(Punctuation, String.Regex, Punctuation)), (r'/', Punctuation, 'path'), # for cardinality etc - (r'(\{)((?:\d+\.\.)?(?:\d+|\*))((?:\s*;\s*(?:ordered|unordered|unique)){,2})(\})', + (r'(\{)((?:\d+\.\.)?(?:\d+|\*))' + r'((?:\s*;\s*(?:ordered|unordered|unique)){,2})(\})', bygroups(Punctuation, Number, Number, Punctuation)), # [{ is start of a tuple value (r'\[\{', Punctuation), @@ -267,13 +269,15 @@ class AdlLexer(AtomsLexer): (r'^[ \t]*--.*$', Comment), ], 'odin_section': [ - # repeating the following two rules from the root state enable multi-line strings - # that start in the first column to be dealt with + # repeating the following two rules from the root state enable multi-line + # strings that start in the first column to be dealt with (r'^(language|description|ontology|terminology|annotations|' r'component_terminologies|revision_history)[ \t]*\n', Generic.Heading), (r'^(definition)[ \t]*\n', Generic.Heading, 'cadl_section'), (r'^([ \t]*|[ \t]+.*)\n', using(OdinLexer)), (r'^([^"]*")(>[ \t]*\n)', bygroups(String, Punctuation)), + # template overlay delimiter + (r'^----------*\n', Text, '#pop'), (r'^.*\n', String), default('#pop'), ], @@ -300,7 +304,7 @@ class AdlLexer(AtomsLexer): default('#pop'), ], 'root': [ - (r'^(archetype|template|template_overlay|operational_template|' + (r'^(archetype|template_overlay|operational_template|template|' r'speciali[sz]e)', Generic.Heading), (r'^(language|description|ontology|terminology|annotations|' r'component_terminologies|revision_history)[ \t]*\n', diff --git a/pygments/lexers/asm.py b/pygments/lexers/asm.py index 8ec5ed99..bbe04f69 100644 --- a/pygments/lexers/asm.py +++ b/pygments/lexers/asm.py @@ -286,7 +286,8 @@ class LlvmLexer(RegexLexer): r'|lshr|ashr|and|or|xor|icmp|fcmp' r'|phi|call|trunc|zext|sext|fptrunc|fpext|uitofp|sitofp|fptoui' - r'|fptosi|inttoptr|ptrtoint|bitcast|select|va_arg|ret|br|switch' + r'|fptosi|inttoptr|ptrtoint|bitcast|addrspacecast' + r'|select|va_arg|ret|br|switch' r'|invoke|unwind|unreachable' r'|indirectbr|landingpad|resume' diff --git a/pygments/lexers/business.py b/pygments/lexers/business.py index c71d9c28..ea888245 100644 --- a/pygments/lexers/business.py +++ b/pygments/lexers/business.py @@ -244,7 +244,7 @@ class ABAPLexer(RegexLexer): """ name = 'ABAP' aliases = ['abap'] - filenames = ['*.abap'] + filenames = ['*.abap', '*.ABAP'] mimetypes = ['text/x-abap'] flags = re.IGNORECASE | re.MULTILINE diff --git a/pygments/lexers/c_cpp.py b/pygments/lexers/c_cpp.py index 35ea517f..5a7137ea 100644 --- a/pygments/lexers/c_cpp.py +++ b/pygments/lexers/c_cpp.py @@ -65,8 +65,7 @@ class CFamilyLexer(RegexLexer): 'restricted', 'return', 'sizeof', 'static', 'struct', 'switch', 'typedef', 'union', 'volatile', 'while'), suffix=r'\b'), Keyword), - (r'(bool|int|long|float|short|double|char|unsigned|signed|void|' - r'[a-z_][a-z0-9_]*_t)\b', + (r'(bool|int|long|float|short|double|char|unsigned|signed|void)\b', Keyword.Type), (words(('inline', '_inline', '__inline', 'naked', 'restrict', 'thread', 'typename'), suffix=r'\b'), Keyword.Reserved), @@ -89,7 +88,7 @@ class CFamilyLexer(RegexLexer): (r'((?:[\w*\s])+?(?:\s|[*]))' # return arguments r'([a-zA-Z_]\w*)' # method name r'(\s*\([^;]*?\))' # signature - r'(' + _ws + r')?(\{)', + r'([^;{]*)(\{)', bygroups(using(this), Name.Function, using(this), using(this), Punctuation), 'function'), @@ -97,7 +96,7 @@ class CFamilyLexer(RegexLexer): (r'((?:[\w*\s])+?(?:\s|[*]))' # return arguments r'([a-zA-Z_]\w*)' # method name r'(\s*\([^;]*?\))' # signature - r'(' + _ws + r')?(;)', + r'([^;]*)(;)', bygroups(using(this), Name.Function, using(this), using(this), Punctuation)), default('statement'), @@ -124,6 +123,7 @@ class CFamilyLexer(RegexLexer): (r'\\', String), # stray backslash ], 'macro': [ + (r'(include)(' + _ws1 + ')([^\n]+)', bygroups(Comment.Preproc, Text, Comment.PreprocFile)), (r'[^/\n]+', Comment.Preproc), (r'/[*](.|\n)*?[*]/', Comment.Multiline), (r'//.*?\n', Comment.Single, '#pop'), @@ -139,22 +139,26 @@ class CFamilyLexer(RegexLexer): ] } - stdlib_types = ['size_t', 'ssize_t', 'off_t', 'wchar_t', 'ptrdiff_t', - 'sig_atomic_t', 'fpos_t', 'clock_t', 'time_t', 'va_list', - 'jmp_buf', 'FILE', 'DIR', 'div_t', 'ldiv_t', 'mbstate_t', - 'wctrans_t', 'wint_t', 'wctype_t'] - c99_types = ['_Bool', '_Complex', 'int8_t', 'int16_t', 'int32_t', 'int64_t', - 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', 'int_least8_t', - 'int_least16_t', 'int_least32_t', 'int_least64_t', - 'uint_least8_t', 'uint_least16_t', 'uint_least32_t', - 'uint_least64_t', 'int_fast8_t', 'int_fast16_t', 'int_fast32_t', - 'int_fast64_t', 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', - 'uint_fast64_t', 'intptr_t', 'uintptr_t', 'intmax_t', - 'uintmax_t'] + stdlib_types = set(( + 'size_t', 'ssize_t', 'off_t', 'wchar_t', 'ptrdiff_t', 'sig_atomic_t', 'fpos_t', + 'clock_t', 'time_t', 'va_list', 'jmp_buf', 'FILE', 'DIR', 'div_t', 'ldiv_t', + 'mbstate_t', 'wctrans_t', 'wint_t', 'wctype_t')) + c99_types = set(( + '_Bool', '_Complex', 'int8_t', 'int16_t', 'int32_t', 'int64_t', 'uint8_t', + 'uint16_t', 'uint32_t', 'uint64_t', 'int_least8_t', 'int_least16_t', + 'int_least32_t', 'int_least64_t', 'uint_least8_t', 'uint_least16_t', + 'uint_least32_t', 'uint_least64_t', 'int_fast8_t', 'int_fast16_t', 'int_fast32_t', + 'int_fast64_t', 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t', + 'intptr_t', 'uintptr_t', 'intmax_t', 'uintmax_t')) + linux_types = set(( + 'clockid_t', 'cpu_set_t', 'cpumask_t', 'dev_t', 'gid_t', 'id_t', 'ino_t', 'key_t', + 'mode_t', 'nfds_t', 'pid_t', 'rlim_t', 'sig_t', 'sighandler_t', 'siginfo_t', + 'sigset_t', 'sigval_t', 'socklen_t', 'timer_t', 'uid_t')) def __init__(self, **options): self.stdlibhighlighting = get_bool_opt(options, 'stdlibhighlighting', True) self.c99highlighting = get_bool_opt(options, 'c99highlighting', True) + self.platformhighlighting = get_bool_opt(options, 'platformhighlighting', True) RegexLexer.__init__(self, **options) def get_tokens_unprocessed(self, text): @@ -165,6 +169,8 @@ class CFamilyLexer(RegexLexer): token = Keyword.Type elif self.c99highlighting and value in self.c99_types: token = Keyword.Type + elif self.platformhighlighting and value in self.linux_types: + token = Keyword.Type yield index, token, value @@ -181,7 +187,7 @@ class CLexer(CFamilyLexer): def analyse_text(text): if re.search('^\s*#include [<"]', text, re.MULTILINE): return 0.1 - if re.search('^\s*#ifdef ', text, re.MULTILINE): + if re.search('^\s*#ifn?def ', text, re.MULTILINE): return 0.1 diff --git a/pygments/lexers/c_like.py b/pygments/lexers/c_like.py index 27736bff..d894818d 100644 --- a/pygments/lexers/c_like.py +++ b/pygments/lexers/c_like.py @@ -418,6 +418,8 @@ class ArduinoLexer(CppLexer): This is an extension of the CppLexer, as the Arduino® Language is a superset of C++ + + .. versionadded:: 2.1 """ name = 'Arduino' @@ -426,93 +428,93 @@ class ArduinoLexer(CppLexer): mimetypes = ['text/x-arduino'] # Language constants - constants = set(( 'DIGITAL_MESSAGE', 'FIRMATA_STRING', 'ANALOG_MESSAGE', - 'REPORT_DIGITAL', 'REPORT_ANALOG', 'INPUT_PULLUP', + constants = set(('DIGITAL_MESSAGE', 'FIRMATA_STRING', 'ANALOG_MESSAGE', + 'REPORT_DIGITAL', 'REPORT_ANALOG', 'INPUT_PULLUP', 'SET_PIN_MODE', 'INTERNAL2V56', 'SYSTEM_RESET', 'LED_BUILTIN', - 'INTERNAL1V1', 'SYSEX_START', 'INTERNAL', 'EXTERNAL', - 'DEFAULT', 'OUTPUT', 'INPUT', 'HIGH', 'LOW' )) + 'INTERNAL1V1', 'SYSEX_START', 'INTERNAL', 'EXTERNAL', + 'DEFAULT', 'OUTPUT', 'INPUT', 'HIGH', 'LOW')) # Language sketch main structure functions - structure = set(( 'setup', 'loop' )) + structure = set(('setup', 'loop')) # Language variable types - storage = set(( 'boolean', 'const', 'byte', 'word', 'string', 'String', 'array' )) + storage = set(('boolean', 'const', 'byte', 'word', 'string', 'String', 'array')) # Language shipped functions and class ( ) - functions = set(( 'KeyboardController', 'MouseController', 'SoftwareSerial', - 'EthernetServer', 'EthernetClient', 'LiquidCrystal', - 'RobotControl', 'GSMVoiceCall', 'EthernetUDP', 'EsploraTFT', - 'HttpClient', 'RobotMotor', 'WiFiClient', 'GSMScanner', - 'FileSystem', 'Scheduler', 'GSMServer', 'YunClient', 'YunServer', - 'IPAddress', 'GSMClient', 'GSMModem', 'Keyboard', 'Ethernet', - 'Console', 'GSMBand', 'Esplora', 'Stepper', 'Process', - 'WiFiUDP', 'GSM_SMS', 'Mailbox', 'USBHost', 'Firmata', 'PImage', - 'Client', 'Server', 'GSMPIN', 'FileIO', 'Bridge', 'Serial', - 'EEPROM', 'Stream', 'Mouse', 'Audio', 'Servo', 'File', 'Task', - 'GPRS', 'WiFi', 'Wire', 'TFT', 'GSM', 'SPI', 'SD', - 'runShellCommandAsynchronously', 'analogWriteResolution', - 'retrieveCallingNumber', 'printFirmwareVersion', - 'analogReadResolution', 'sendDigitalPortPair', - 'noListenOnLocalhost', 'readJoystickButton', 'setFirmwareVersion', - 'readJoystickSwitch', 'scrollDisplayRight', 'getVoiceCallStatus', - 'scrollDisplayLeft', 'writeMicroseconds', 'delayMicroseconds', - 'beginTransmission', 'getSignalStrength', 'runAsynchronously', - 'getAsynchronously', 'listenOnLocalhost', 'getCurrentCarrier', - 'readAccelerometer', 'messageAvailable', 'sendDigitalPorts', - 'lineFollowConfig', 'countryNameWrite', 'runShellCommand', - 'readStringUntil', 'rewindDirectory', 'readTemperature', - 'setClockDivider', 'readLightSensor', 'endTransmission', - 'analogReference', 'detachInterrupt', 'countryNameRead', - 'attachInterrupt', 'encryptionType', 'readBytesUntil', - 'robotNameWrite', 'readMicrophone', 'robotNameRead', 'cityNameWrite', - 'userNameWrite', 'readJoystickY', 'readJoystickX', 'mouseReleased', - 'openNextFile', 'scanNetworks', 'noInterrupts', 'digitalWrite', - 'beginSpeaker', 'mousePressed', 'isActionDone', 'mouseDragged', - 'displayLogos', 'noAutoscroll', 'addParameter', 'remoteNumber', - 'getModifiers', 'keyboardRead', 'userNameRead', 'waitContinue', - 'processInput', 'parseCommand', 'printVersion', 'readNetworks', - 'writeMessage', 'blinkVersion', 'cityNameRead', 'readMessage', - 'setDataMode', 'parsePacket', 'isListening', 'setBitOrder', - 'beginPacket', 'isDirectory', 'motorsWrite', 'drawCompass', - 'digitalRead', 'clearScreen', 'serialEvent', 'rightToLeft', - 'setTextSize', 'leftToRight', 'requestFrom', 'keyReleased', - 'compassRead', 'analogWrite', 'interrupts', 'WiFiServer', - 'disconnect', 'playMelody', 'parseFloat', 'autoscroll', - 'getPINUsed', 'setPINUsed', 'setTimeout', 'sendAnalog', - 'readSlider', 'analogRead', 'beginWrite', 'createChar', - 'motorsStop', 'keyPressed', 'tempoWrite', 'readButton', - 'subnetMask', 'debugPrint', 'macAddress', 'writeGreen', - 'randomSeed', 'attachGPRS', 'readString', 'sendString', - 'remotePort', 'releaseAll', 'mouseMoved', 'background', - 'getXChange', 'getYChange', 'answerCall', 'getResult', - 'voiceCall', 'endPacket', 'constrain', 'getSocket', 'writeJSON', - 'getButton', 'available', 'connected', 'findUntil', 'readBytes', - 'exitValue', 'readGreen', 'writeBlue', 'startLoop', 'IPAddress', - 'isPressed', 'sendSysex', 'pauseMode', 'gatewayIP', 'setCursor', - 'getOemKey', 'tuneWrite', 'noDisplay', 'loadImage', 'switchPIN', - 'onRequest', 'onReceive', 'changePIN', 'playFile', 'noBuffer', - 'parseInt', 'overflow', 'checkPIN', 'knobRead', 'beginTFT', - 'bitClear', 'updateIR', 'bitWrite', 'position', 'writeRGB', - 'highByte', 'writeRed', 'setSpeed', 'readBlue', 'noStroke', - 'remoteIP', 'transfer', 'shutdown', 'hangCall', 'beginSMS', - 'endWrite', 'attached', 'maintain', 'noCursor', 'checkReg', - 'checkPUK', 'shiftOut', 'isValid', 'shiftIn', 'pulseIn', - 'connect', 'println', 'localIP', 'pinMode', 'getIMEI', - 'display', 'noBlink', 'process', 'getBand', 'running', 'beginSD', - 'drawBMP', 'lowByte', 'setBand', 'release', 'bitRead', 'prepare', - 'pointTo', 'readRed', 'setMode', 'noFill', 'remove', 'listen', - 'stroke', 'detach', 'attach', 'noTone', 'exists', 'buffer', - 'height', 'bitSet', 'circle', 'config', 'cursor', 'random', - 'IRread', 'sizeof', 'setDNS', 'endSMS', 'getKey', 'micros', - 'millis', 'begin', 'print', 'write', 'ready', 'flush', 'width', - 'isPIN', 'blink', 'clear', 'press', 'mkdir', 'rmdir', 'close', - 'point', 'yield', 'image', 'float', 'BSSID', 'click', 'delay', - 'read', 'text', 'move', 'peek', 'beep', 'rect', 'line', 'open', - 'seek', 'fill', 'size', 'turn', 'stop', 'home', 'find', 'char', - 'byte', 'step', 'word', 'long', 'tone', 'sqrt', 'RSSI', 'SSID', - 'end', 'bit', 'tan', 'cos', 'sin', 'pow', 'map', 'abs', 'max', - 'min', 'int', 'get', 'run', 'put' )) - + functions = set(('KeyboardController', 'MouseController', 'SoftwareSerial', + 'EthernetServer', 'EthernetClient', 'LiquidCrystal', + 'RobotControl', 'GSMVoiceCall', 'EthernetUDP', 'EsploraTFT', + 'HttpClient', 'RobotMotor', 'WiFiClient', 'GSMScanner', + 'FileSystem', 'Scheduler', 'GSMServer', 'YunClient', 'YunServer', + 'IPAddress', 'GSMClient', 'GSMModem', 'Keyboard', 'Ethernet', + 'Console', 'GSMBand', 'Esplora', 'Stepper', 'Process', + 'WiFiUDP', 'GSM_SMS', 'Mailbox', 'USBHost', 'Firmata', 'PImage', + 'Client', 'Server', 'GSMPIN', 'FileIO', 'Bridge', 'Serial', + 'EEPROM', 'Stream', 'Mouse', 'Audio', 'Servo', 'File', 'Task', + 'GPRS', 'WiFi', 'Wire', 'TFT', 'GSM', 'SPI', 'SD', + 'runShellCommandAsynchronously', 'analogWriteResolution', + 'retrieveCallingNumber', 'printFirmwareVersion', + 'analogReadResolution', 'sendDigitalPortPair', + 'noListenOnLocalhost', 'readJoystickButton', 'setFirmwareVersion', + 'readJoystickSwitch', 'scrollDisplayRight', 'getVoiceCallStatus', + 'scrollDisplayLeft', 'writeMicroseconds', 'delayMicroseconds', + 'beginTransmission', 'getSignalStrength', 'runAsynchronously', + 'getAsynchronously', 'listenOnLocalhost', 'getCurrentCarrier', + 'readAccelerometer', 'messageAvailable', 'sendDigitalPorts', + 'lineFollowConfig', 'countryNameWrite', 'runShellCommand', + 'readStringUntil', 'rewindDirectory', 'readTemperature', + 'setClockDivider', 'readLightSensor', 'endTransmission', + 'analogReference', 'detachInterrupt', 'countryNameRead', + 'attachInterrupt', 'encryptionType', 'readBytesUntil', + 'robotNameWrite', 'readMicrophone', 'robotNameRead', 'cityNameWrite', + 'userNameWrite', 'readJoystickY', 'readJoystickX', 'mouseReleased', + 'openNextFile', 'scanNetworks', 'noInterrupts', 'digitalWrite', + 'beginSpeaker', 'mousePressed', 'isActionDone', 'mouseDragged', + 'displayLogos', 'noAutoscroll', 'addParameter', 'remoteNumber', + 'getModifiers', 'keyboardRead', 'userNameRead', 'waitContinue', + 'processInput', 'parseCommand', 'printVersion', 'readNetworks', + 'writeMessage', 'blinkVersion', 'cityNameRead', 'readMessage', + 'setDataMode', 'parsePacket', 'isListening', 'setBitOrder', + 'beginPacket', 'isDirectory', 'motorsWrite', 'drawCompass', + 'digitalRead', 'clearScreen', 'serialEvent', 'rightToLeft', + 'setTextSize', 'leftToRight', 'requestFrom', 'keyReleased', + 'compassRead', 'analogWrite', 'interrupts', 'WiFiServer', + 'disconnect', 'playMelody', 'parseFloat', 'autoscroll', + 'getPINUsed', 'setPINUsed', 'setTimeout', 'sendAnalog', + 'readSlider', 'analogRead', 'beginWrite', 'createChar', + 'motorsStop', 'keyPressed', 'tempoWrite', 'readButton', + 'subnetMask', 'debugPrint', 'macAddress', 'writeGreen', + 'randomSeed', 'attachGPRS', 'readString', 'sendString', + 'remotePort', 'releaseAll', 'mouseMoved', 'background', + 'getXChange', 'getYChange', 'answerCall', 'getResult', + 'voiceCall', 'endPacket', 'constrain', 'getSocket', 'writeJSON', + 'getButton', 'available', 'connected', 'findUntil', 'readBytes', + 'exitValue', 'readGreen', 'writeBlue', 'startLoop', 'IPAddress', + 'isPressed', 'sendSysex', 'pauseMode', 'gatewayIP', 'setCursor', + 'getOemKey', 'tuneWrite', 'noDisplay', 'loadImage', 'switchPIN', + 'onRequest', 'onReceive', 'changePIN', 'playFile', 'noBuffer', + 'parseInt', 'overflow', 'checkPIN', 'knobRead', 'beginTFT', + 'bitClear', 'updateIR', 'bitWrite', 'position', 'writeRGB', + 'highByte', 'writeRed', 'setSpeed', 'readBlue', 'noStroke', + 'remoteIP', 'transfer', 'shutdown', 'hangCall', 'beginSMS', + 'endWrite', 'attached', 'maintain', 'noCursor', 'checkReg', + 'checkPUK', 'shiftOut', 'isValid', 'shiftIn', 'pulseIn', + 'connect', 'println', 'localIP', 'pinMode', 'getIMEI', + 'display', 'noBlink', 'process', 'getBand', 'running', 'beginSD', + 'drawBMP', 'lowByte', 'setBand', 'release', 'bitRead', 'prepare', + 'pointTo', 'readRed', 'setMode', 'noFill', 'remove', 'listen', + 'stroke', 'detach', 'attach', 'noTone', 'exists', 'buffer', + 'height', 'bitSet', 'circle', 'config', 'cursor', 'random', + 'IRread', 'sizeof', 'setDNS', 'endSMS', 'getKey', 'micros', + 'millis', 'begin', 'print', 'write', 'ready', 'flush', 'width', + 'isPIN', 'blink', 'clear', 'press', 'mkdir', 'rmdir', 'close', + 'point', 'yield', 'image', 'float', 'BSSID', 'click', 'delay', + 'read', 'text', 'move', 'peek', 'beep', 'rect', 'line', 'open', + 'seek', 'fill', 'size', 'turn', 'stop', 'home', 'find', 'char', + 'byte', 'step', 'word', 'long', 'tone', 'sqrt', 'RSSI', 'SSID', + 'end', 'bit', 'tan', 'cos', 'sin', 'pow', 'map', 'abs', 'max', + 'min', 'int', 'get', 'run', 'put')) + def get_tokens_unprocessed(self, text): for index, token, value in CppLexer.get_tokens_unprocessed(self, text): @@ -528,7 +530,7 @@ class ArduinoLexer(CppLexer): elif token is Name.Function: if value in self.structure: yield index, Name.Other, value - else: + else: yield index, token, value elif token is Keyword: if value in self.storage: diff --git a/pygments/lexers/chapel.py b/pygments/lexers/chapel.py index 6fb6920c..d69c55f5 100644 --- a/pygments/lexers/chapel.py +++ b/pygments/lexers/chapel.py @@ -46,10 +46,10 @@ class ChapelLexer(RegexLexer): 'continue', 'delete', 'dmapped', 'do', 'domain', 'else', 'enum', 'export', 'extern', 'for', 'forall', 'if', 'index', 'inline', 'iter', 'label', 'lambda', 'let', 'local', 'new', 'noinit', 'on', - 'otherwise', 'pragma', 'private', 'public', 'reduce', 'return', - 'scan', 'select', 'serial', 'single', 'sparse', 'subdomain', - 'sync', 'then', 'use', 'when', 'where', 'while', 'with', 'yield', - 'zip'), suffix=r'\b'), + 'otherwise', 'pragma', 'private', 'public', 'reduce', + 'require', 'return', 'scan', 'select', 'serial', 'single', + 'sparse', 'subdomain', 'sync', 'then', 'use', 'when', 'where', + 'while', 'with', 'yield', 'zip'), suffix=r'\b'), Keyword), (r'(proc)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'procname'), (r'(class|module|record|union)(\s+)', bygroups(Keyword, Text), @@ -77,7 +77,8 @@ class ChapelLexer(RegexLexer): (r'[0-9]+', Number.Integer), # strings - (r'["\'](\\\\|\\"|[^"\'])*["\']', String), + (r'"(\\\\|\\"|[^"])*"', String), + (r"'(\\\\|\\'|[^'])*'", String), # tokens (r'(=|\+=|-=|\*=|/=|\*\*=|%=|&=|\|=|\^=|&&=|\|\|=|<<=|>>=|' diff --git a/pygments/lexers/configs.py b/pygments/lexers/configs.py index 1bd8f55a..c46d8bb8 100644 --- a/pygments/lexers/configs.py +++ b/pygments/lexers/configs.py @@ -13,12 +13,14 @@ import re from pygments.lexer import RegexLexer, default, words, bygroups, include, using from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ - Number, Punctuation, Whitespace + Number, Punctuation, Whitespace, Literal from pygments.lexers.shell import BashLexer __all__ = ['IniLexer', 'RegeditLexer', 'PropertiesLexer', 'KconfigLexer', 'Cfengine3Lexer', 'ApacheConfLexer', 'SquidConfLexer', - 'NginxConfLexer', 'LighttpdConfLexer', 'DockerLexer'] + 'NginxConfLexer', 'LighttpdConfLexer', 'DockerLexer', + 'TerraformLexer', 'TermcapLexer', 'TerminfoLexer', + 'PkgConfigLexer', 'PacmanConfLexer'] class IniLexer(RegexLexer): @@ -28,8 +30,8 @@ class IniLexer(RegexLexer): name = 'INI' aliases = ['ini', 'cfg', 'dosini'] - filenames = ['*.ini', '*.cfg'] - mimetypes = ['text/x-ini'] + filenames = ['*.ini', '*.cfg', '*.inf'] + mimetypes = ['text/x-ini', 'text/inf'] tokens = { 'root': [ @@ -540,7 +542,286 @@ class DockerLexer(RegexLexer): bygroups(Name.Keyword, Whitespace, Keyword)), (r'^(%s)\b(.*)' % (_keywords,), bygroups(Keyword, String)), (r'#.*', Comment), - (r'RUN', Keyword), # Rest of line falls through + (r'RUN', Keyword), # Rest of line falls through (r'(.*\\\n)*.+', using(BashLexer)), ], } + + +class TerraformLexer(RegexLexer): + """ + Lexer for `terraformi .tf files <https://www.terraform.io/>`_. + + .. versionadded:: 2.1 + """ + + name = 'Terraform' + aliases = ['terraform', 'tf'] + filenames = ['*.tf'] + mimetypes = ['application/x-tf', 'application/x-terraform'] + + tokens = { + 'root': [ + include('string'), + include('punctuation'), + include('curly'), + include('basic'), + include('whitespace'), + (r'[0-9]+', Number), + ], + 'basic': [ + (words(('true', 'false'), prefix=r'\b', suffix=r'\b'), Keyword.Type), + (r'\s*/\*', Comment.Multiline, 'comment'), + (r'\s*#.*\n', Comment.Single), + (r'(.*?)(\s*)(=)', bygroups(Name.Attribute, Text, Operator)), + (words(('variable', 'resource', 'provider', 'provisioner', 'module'), + prefix=r'\b', suffix=r'\b'), Keyword.Reserved, 'function'), + (words(('ingress', 'egress', 'listener', 'default', 'connection'), + prefix=r'\b', suffix=r'\b'), Keyword.Declaration), + ('\$\{', String.Interpol, 'var_builtin'), + ], + 'function': [ + (r'(\s+)(".*")(\s+)', bygroups(Text, String, Text)), + include('punctuation'), + include('curly'), + ], + 'var_builtin': [ + (r'\$\{', String.Interpol, '#push'), + (words(('concat', 'file', 'join', 'lookup', 'element'), + prefix=r'\b', suffix=r'\b'), Name.Builtin), + include('string'), + include('punctuation'), + (r'\s+', Text), + (r'\}', String.Interpol, '#pop'), + ], + 'string': [ + (r'(".*")', bygroups(String.Double)), + ], + 'punctuation': [ + (r'[\[\]\(\),.]', Punctuation), + ], + # Keep this seperate from punctuation - we sometimes want to use different + # Tokens for { } + 'curly': [ + (r'\{', Text.Punctuation), + (r'\}', Text.Punctuation), + ], + 'comment': [ + (r'[^*/]', Comment.Multiline), + (r'/\*', Comment.Multiline, '#push'), + (r'\*/', Comment.Multiline, '#pop'), + (r'[*/]', Comment.Multiline) + ], + 'whitespace': [ + (r'\n', Text), + (r'\s+', Text), + (r'\\\n', Text), + ], + } + + +class TermcapLexer(RegexLexer): + """ + Lexer for termcap database source. + + This is very simple and minimal. + + .. versionadded:: 2.1 + """ + name = 'Termcap' + aliases = ['termcap',] + + filenames = ['termcap', 'termcap.src',] + mimetypes = [] + + # NOTE: + # * multiline with trailing backslash + # * separator is ':' + # * to embed colon as data, we must use \072 + # * space after separator is not allowed (mayve) + tokens = { + 'root': [ + (r'^#.*$', Comment), + (r'^[^\s#:\|]+', Name.Tag, 'names'), + ], + 'names': [ + (r'\n', Text, '#pop'), + (r':', Punctuation, 'defs'), + (r'\|', Punctuation), + (r'[^:\|]+', Name.Attribute), + ], + 'defs': [ + (r'\\\n[ \t]*', Text), + (r'\n[ \t]*', Text, '#pop:2'), + (r'(#)([0-9]+)', bygroups(Operator, Number)), + (r'=', Operator, 'data'), + (r':', Punctuation), + (r'[^\s:=#]+', Name.Class), + ], + 'data': [ + (r'\\072', Literal), + (r':', Punctuation, '#pop'), + (r'[^:\\]+', Literal), # for performance + (r'.', Literal), + ], + } + + +class TerminfoLexer(RegexLexer): + """ + Lexer for terminfo database source. + + This is very simple and minimal. + + .. versionadded:: 2.1 + """ + name = 'Terminfo' + aliases = ['terminfo',] + + filenames = ['terminfo', 'terminfo.src',] + mimetypes = [] + + # NOTE: + # * multiline with leading whitespace + # * separator is ',' + # * to embed comma as data, we can use \, + # * space after separator is allowed + tokens = { + 'root': [ + (r'^#.*$', Comment), + (r'^[^\s#,\|]+', Name.Tag, 'names'), + ], + 'names': [ + (r'\n', Text, '#pop'), + (r'(,)([ \t]*)', bygroups(Punctuation, Text), 'defs'), + (r'\|', Punctuation), + (r'[^,\|]+', Name.Attribute), + ], + 'defs': [ + (r'\n[ \t]+', Text), + (r'\n', Text, '#pop:2'), + (r'(#)([0-9]+)', bygroups(Operator, Number)), + (r'=', Operator, 'data'), + (r'(,)([ \t]*)', bygroups(Punctuation, Text)), + (r'[^\s,=#]+', Name.Class), + ], + 'data': [ + (r'\\[,\\]', Literal), + (r'(,)([ \t]*)', bygroups(Punctuation, Text), '#pop'), + (r'[^\\,]+', Literal), # for performance + (r'.', Literal), + ], + } + + +class PkgConfigLexer(RegexLexer): + """ + Lexer for `pkg-config + <http://www.freedesktop.org/wiki/Software/pkg-config/>`_ + (see also `manual page <http://linux.die.net/man/1/pkg-config>`_). + + .. versionadded:: 2.1 + """ + + name = 'PkgConfig' + aliases = ['pkgconfig',] + filenames = ['*.pc',] + mimetypes = [] + + tokens = { + 'root': [ + (r'#.*$', Comment.Single), + + # variable definitions + (r'^(\w+)(=)', bygroups(Name.Attribute, Operator)), + + # keyword lines + (r'^([\w.]+)(:)', + bygroups(Name.Tag, Punctuation), 'spvalue'), + + # variable references + include('interp'), + + # fallback + (r'[^${}#=:\n.]+', Text), + (r'.', Text), + ], + 'interp': [ + # you can escape literal "$" as "$$" + (r'\$\$', Text), + + # variable references + (r'\$\{', String.Interpol, 'curly'), + ], + 'curly': [ + (r'\}', String.Interpol, '#pop'), + (r'\w+', Name.Attribute), + ], + 'spvalue': [ + include('interp'), + + (r'#.*$', Comment.Single, '#pop'), + (r'\n', Text, '#pop'), + + # fallback + (r'[^${}#\n]+', Text), + (r'.', Text), + ], + } + + +class PacmanConfLexer(RegexLexer): + """ + Lexer for `pacman.conf + <https://www.archlinux.org/pacman/pacman.conf.5.html>`_. + + Actually, IniLexer works almost fine for this format, + but it yield error token. It is because pacman.conf has + a form without assignment like: + + UseSyslog + Color + TotalDownload + CheckSpace + VerbosePkgLists + + These are flags to switch on. + + .. versionadded:: 2.1 + """ + + name = 'PacmanConf' + aliases = ['pacmanconf',] + filenames = ['pacman.conf',] + mimetypes = [] + + tokens = { + 'root': [ + # comment + (r'#.*$', Comment.Single), + + # section header + (r'^\s*\[.*?\]\s*$', Keyword), + + # variable definitions + # (Leading space is allowed...) + (r'(\w+)(\s*)(=)', + bygroups(Name.Attribute, Text, Operator)), + + # flags to on + (r'^(\s*)(\w+)(\s*)$', + bygroups(Text, Name.Attribute, Text)), + + # built-in special values + (words(( + '$repo', # repository + '$arch', # architecture + '%o', # outfile + '%u', # url + ), suffix=r'\b'), + Name.Variable), + + # fallback + (r'.', Text), + ], + } diff --git a/pygments/lexers/csound.py b/pygments/lexers/csound.py new file mode 100644 index 00000000..51414073 --- /dev/null +++ b/pygments/lexers/csound.py @@ -0,0 +1,366 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.csound + ~~~~~~~~~~~~~~~~~~~~~~ + + Lexers for CSound languages. + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import copy, re + +from pygments.lexer import RegexLexer, bygroups, default, include, using, words +from pygments.token import Comment, Keyword, Name, Number, Operator, Punctuation, \ + String, Text +from pygments.lexers._csound_builtins import OPCODES +from pygments.lexers.html import HtmlLexer +from pygments.lexers.python import PythonLexer +from pygments.lexers.scripting import LuaLexer + +__all__ = ['CsoundScoreLexer', 'CsoundOrchestraLexer', 'CsoundDocumentLexer'] + +newline = (r'((?:;|//).*)*(\n)', bygroups(Comment.Single, Text)) + + +class CsoundLexer(RegexLexer): + # Subclasses must define a 'single-line string' state. + tokens = { + 'whitespace': [ + (r'[ \t]+', Text), + (r'\\\n', Text), + (r'/[*](.|\n)*?[*]/', Comment.Multiline) + ], + + 'macro call': [ + (r'(\$\w+\.?)(\()', bygroups(Comment.Preproc, Punctuation), + 'function macro call'), + (r'\$\w+(\.|\b)', Comment.Preproc) + ], + 'function macro call': [ + (r"((?:\\['\)]|[^'\)])+)(')", bygroups(Comment.Preproc, Punctuation)), + (r"([^'\)]+)(\))", bygroups(Comment.Preproc, Punctuation), '#pop') + ], + + 'whitespace or macro call': [ + include('whitespace'), + include('macro call') + ], + + 'preprocessor directives': [ + (r'#(e(nd(if)?|lse)|ifn?def|undef)\b|##', Comment.Preproc), + (r'#include\b', Comment.Preproc, 'include'), + (r'#[ \t]*define\b', Comment.Preproc, 'macro name'), + (r'@+[ \t]*\d*', Comment.Preproc) + ], + + 'include': [ + include('whitespace'), + (r'"', String, 'single-line string') + ], + + 'macro name': [ + include('whitespace'), + (r'(\w+)(\()', bygroups(Comment.Preproc, Text), + 'function macro argument list'), + (r'\w+', Comment.Preproc, 'object macro definition after name') + ], + 'object macro definition after name': [ + include('whitespace'), + (r'#', Punctuation, 'object macro replacement text') + ], + 'object macro replacement text': [ + (r'(\\#|[^#])+', Comment.Preproc), + (r'#', Punctuation, '#pop:3') + ], + 'function macro argument list': [ + (r"(\w+)(['#])", bygroups(Comment.Preproc, Punctuation)), + (r'(\w+)(\))', bygroups(Comment.Preproc, Punctuation), + 'function macro definition after name') + ], + 'function macro definition after name': [ + (r'[ \t]+', Text), + (r'#', Punctuation, 'function macro replacement text') + ], + 'function macro replacement text': [ + (r'(\\#|[^#])+', Comment.Preproc), + (r'#', Punctuation, '#pop:4') + ] + } + + +class CsoundScoreLexer(CsoundLexer): + """ + For `Csound <http://csound.github.io>`_ scores. + + .. versionadded:: 2.1 + """ + + name = 'Csound Score' + aliases = ['csound-score', 'csound-sco'] + filenames = ['*.sco'] + + tokens = { + 'partial statement': [ + include('preprocessor directives'), + (r'\d+e[+-]?\d+|(\d+\.\d*|\d*\.\d+)(e[+-]?\d+)?', Number.Float), + (r'0[xX][a-fA-F0-9]+', Number.Hex), + (r'\d+', Number.Integer), + (r'"', String, 'single-line string'), + (r'[+\-*/%^!=<>|&#~.]', Operator), + (r'[]()[]', Punctuation), + (r'\w+', Comment.Preproc) + ], + + 'statement': [ + include('whitespace or macro call'), + newline + ('#pop',), + include('partial statement') + ], + + 'root': [ + newline, + include('whitespace or macro call'), + (r'[{}]', Punctuation, 'statement'), + (r'[abefimq-tv-z]|[nN][pP]?', Keyword, 'statement') + ], + + 'single-line string': [ + (r'"', String, '#pop'), + (r'[^\\"]+', String) + ] + } + + +class CsoundOrchestraLexer(CsoundLexer): + """ + For `Csound <http://csound.github.io>`_ orchestras. + + .. versionadded:: 2.1 + """ + + name = 'Csound Orchestra' + aliases = ['csound', 'csound-orc'] + filenames = ['*.orc'] + + user_defined_opcodes = set() + + def opcode_name_callback(lexer, match): + opcode = match.group(0) + lexer.user_defined_opcodes.add(opcode) + yield match.start(), Name.Function, opcode + + def name_callback(lexer, match): + name = match.group(0) + if re.match('p\d+$', name) or name in OPCODES: + yield match.start(), Name.Builtin, name + elif name in lexer.user_defined_opcodes: + yield match.start(), Name.Function, name + else: + nameMatch = re.search(r'^(g?[aikSw])(\w+)', name) + if nameMatch: + yield nameMatch.start(1), Keyword.Type, nameMatch.group(1) + yield nameMatch.start(2), Name, nameMatch.group(2) + else: + yield match.start(), Name, name + + tokens = { + 'label': [ + (r'\b(\w+)(:)', bygroups(Name.Label, Punctuation)) + ], + + 'partial expression': [ + include('preprocessor directives'), + (r'\b(0dbfs|k(r|smps)|nchnls(_i)?|sr)\b', Name.Variable.Global), + (r'\d+e[+-]?\d+|(\d+\.\d*|\d*\.\d+)(e[+-]?\d+)?', Number.Float), + (r'0[xX][a-fA-F0-9]+', Number.Hex), + (r'\d+', Number.Integer), + (r'"', String, 'single-line string'), + (r'{{', String, 'multi-line string'), + (r'[+\-*/%^!=&|<>#~¬]', Operator), + (r'[](),?:[]', Punctuation), + (words(( + # Keywords + 'do', 'else', 'elseif', 'endif', 'enduntil', 'fi', 'if', 'ithen', 'kthen', + 'od', 'then', 'until', 'while', + # Opcodes that act as control structures + 'return', 'timout' + ), prefix=r'\b', suffix=r'\b'), Keyword), + (words(('goto', 'igoto', 'kgoto', 'rigoto', 'tigoto'), + prefix=r'\b', suffix=r'\b'), Keyword, 'goto label'), + (words(('cggoto', 'cigoto', 'cingoto', 'ckgoto', 'cngoto'), + prefix=r'\b', suffix=r'\b'), Keyword, + ('goto label', 'goto expression')), + (words(('loop_ge', 'loop_gt', 'loop_le', 'loop_lt'), + prefix=r'\b', suffix=r'\b'), Keyword, + ('goto label', 'goto expression', 'goto expression', 'goto expression')), + (r'\bscoreline(_i)?\b', Name.Builtin, 'scoreline opcode'), + (r'\bpyl?run[it]?\b', Name.Builtin, 'python opcode'), + (r'\blua_(exec|opdef)\b', Name.Builtin, 'lua opcode'), + (r'\b[a-zA-Z_]\w*\b', name_callback) + ], + + 'expression': [ + include('whitespace or macro call'), + newline + ('#pop',), + include('partial expression') + ], + + 'root': [ + newline, + include('whitespace or macro call'), + (r'\binstr\b', Keyword, ('instrument block', 'instrument name list')), + (r'\bopcode\b', Keyword, ('opcode block', 'opcode parameter list', + 'opcode types', 'opcode types', 'opcode name')), + include('label'), + default('expression') + ], + + 'instrument name list': [ + include('whitespace or macro call'), + (r'\d+|\+?[a-zA-Z_]\w*', Name.Function), + (r',', Punctuation), + newline + ('#pop',) + ], + 'instrument block': [ + newline, + include('whitespace or macro call'), + (r'\bendin\b', Keyword, '#pop'), + include('label'), + default('expression') + ], + + 'opcode name': [ + include('whitespace or macro call'), + (r'[a-zA-Z_]\w*', opcode_name_callback, '#pop') + ], + 'opcode types': [ + include('whitespace or macro call'), + (r'0|[]afijkKoOpPStV[]+', Keyword.Type, '#pop'), + (r',', Punctuation) + ], + 'opcode parameter list': [ + include('whitespace or macro call'), + newline + ('#pop',) + ], + 'opcode block': [ + newline, + include('whitespace or macro call'), + (r'\bendop\b', Keyword, '#pop'), + include('label'), + default('expression') + ], + + 'goto label': [ + include('whitespace or macro call'), + (r'\w+', Name.Label, '#pop'), + default('#pop') + ], + 'goto expression': [ + include('whitespace or macro call'), + (r',', Punctuation, '#pop'), + include('partial expression') + ], + + 'single-line string': [ + include('macro call'), + (r'"', String, '#pop'), + # From https://github.com/csound/csound/blob/develop/Opcodes/fout.c#L1405 + (r'%\d*(\.\d+)?[cdhilouxX]', String.Interpol), + (r'%[!%nNrRtT]|[~^]|\\([\\aAbBnNrRtT"]|[0-7]{1,3})', String.Escape), + (r'[^\\"~$%\^\n]+', String), + (r'[\\"~$%\^\n]', String) + ], + 'multi-line string': [ + (r'}}', String, '#pop'), + (r'[^\}]+|\}(?!\})', String) + ], + + 'scoreline opcode': [ + include('whitespace or macro call'), + (r'{{', String, 'scoreline'), + default('#pop') + ], + 'scoreline': [ + (r'}}', String, '#pop'), + (r'([^\}]+)|\}(?!\})', using(CsoundScoreLexer)) + ], + + 'python opcode': [ + include('whitespace or macro call'), + (r'{{', String, 'python'), + default('#pop') + ], + 'python': [ + (r'}}', String, '#pop'), + (r'([^\}]+)|\}(?!\})', using(PythonLexer)) + ], + + 'lua opcode': [ + include('whitespace or macro call'), + (r'"', String, 'single-line string'), + (r'{{', String, 'lua'), + (r',', Punctuation), + default('#pop') + ], + 'lua': [ + (r'}}', String, '#pop'), + (r'([^\}]+)|\}(?!\})', using(LuaLexer)) + ] + } + + +class CsoundDocumentLexer(RegexLexer): + """ + For `Csound <http://csound.github.io>`_ documents. + + + """ + + name = 'Csound Document' + aliases = ['csound-document', 'csound-csd'] + filenames = ['*.csd'] + + # These tokens are based on those in XmlLexer in pygments/lexers/html.py. Making + # CsoundDocumentLexer a subclass of XmlLexer rather than RegexLexer may seem like a + # better idea, since Csound Document files look like XML files. However, Csound + # Documents can contain Csound comments (preceded by //, for example) before and + # after the root element, unescaped bitwise AND & and less than < operators, etc. In + # other words, while Csound Document files look like XML files, they may not actually + # be XML files. + tokens = { + 'root': [ + newline, + (r'/[*](.|\n)*?[*]/', Comment.Multiline), + (r'[^<&;/]+', Text), + (r'<\s*CsInstruments', Name.Tag, ('orchestra', 'tag')), + (r'<\s*CsScore', Name.Tag, ('score', 'tag')), + (r'<\s*[hH][tT][mM][lL]', Name.Tag, ('HTML', 'tag')), + (r'<\s*[\w:.-]+', Name.Tag, 'tag'), + (r'<\s*/\s*[\w:.-]+\s*>', Name.Tag) + ], + 'orchestra': [ + (r'<\s*/\s*CsInstruments\s*>', Name.Tag, '#pop'), + (r'(.|\n)+?(?=<\s*/\s*CsInstruments\s*>)', using(CsoundOrchestraLexer)) + ], + 'score': [ + (r'<\s*/\s*CsScore\s*>', Name.Tag, '#pop'), + (r'(.|\n)+?(?=<\s*/\s*CsScore\s*>)', using(CsoundScoreLexer)) + ], + 'HTML': [ + (r'<\s*/\s*[hH][tT][mM][lL]\s*>', Name.Tag, '#pop'), + (r'(.|\n)+?(?=<\s*/\s*[hH][tT][mM][lL]\s*>)', using(HtmlLexer)) + ], + 'tag': [ + (r'\s+', Text), + (r'[\w.:-]+\s*=', Name.Attribute, 'attr'), + (r'/?\s*>', Name.Tag, '#pop') + ], + 'attr': [ + (r'\s+', Text), + (r'".*?"', String, '#pop'), + (r"'.*?'", String, '#pop'), + (r'[^\s>]+', String, '#pop') + ] + } diff --git a/pygments/lexers/css.py b/pygments/lexers/css.py index 6f27d63c..6f7e5be8 100644 --- a/pygments/lexers/css.py +++ b/pygments/lexers/css.py @@ -13,12 +13,12 @@ import re import copy from pygments.lexer import ExtendedRegexLexer, RegexLexer, include, bygroups, \ - default, words + default, words, inherit from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ Number, Punctuation from pygments.util import iteritems -__all__ = ['CssLexer', 'SassLexer', 'ScssLexer'] +__all__ = ['CssLexer', 'SassLexer', 'ScssLexer', 'LessCssLexer'] class CssLexer(RegexLexer): @@ -475,8 +475,9 @@ class ScssLexer(RegexLexer): (r'(@media)(\s+)', bygroups(Keyword, Text), 'value'), (r'@[\w-]+', Keyword, 'selector'), (r'(\$[\w-]*\w)([ \t]*:)', bygroups(Name.Variable, Operator), 'value'), - (r'(?=[^;{}][;}])', Name.Attribute, 'attr'), - (r'(?=[^;{}:]+:[^a-z])', Name.Attribute, 'attr'), + # TODO: broken, and prone to infinite loops. + #(r'(?=[^;{}][;}])', Name.Attribute, 'attr'), + #(r'(?=[^;{}:]+:[^a-z])', Name.Attribute, 'attr'), default('selector'), ], @@ -497,3 +498,27 @@ class ScssLexer(RegexLexer): tokens[group] = copy.copy(common) tokens['value'].extend([(r'\n', Text), (r'[;{}]', Punctuation, '#pop')]) tokens['selector'].extend([(r'\n', Text), (r'[;{}]', Punctuation, '#pop')]) + + +class LessCssLexer(CssLexer): + """ + For `LESS <http://lesscss.org/>`_ styleshets. + + .. versionadded:: 2.1 + """ + + name = 'LessCss' + aliases = ['less'] + filenames = ['*.less'] + mimetypes = ['text/x-less-css'] + + tokens = { + 'root': [ + (r'@\w+', Name.Variable), + inherit, + ], + 'content': [ + (r'{', Punctuation, '#push'), + inherit, + ], + } diff --git a/pygments/lexers/dsls.py b/pygments/lexers/dsls.py index 433287d4..24fda2a2 100644 --- a/pygments/lexers/dsls.py +++ b/pygments/lexers/dsls.py @@ -11,12 +11,14 @@ import re -from pygments.lexer import RegexLexer, bygroups, words, include, default +from pygments.lexer import RegexLexer, bygroups, words, include, default, \ + this, using, combined from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ - Number, Punctuation, Literal + Number, Punctuation, Literal, Whitespace __all__ = ['ProtoBufLexer', 'BroLexer', 'PuppetLexer', 'RslLexer', - 'MscgenLexer', 'VGLLexer', 'AlloyLexer', 'PanLexer'] + 'MscgenLexer', 'VGLLexer', 'AlloyLexer', 'PanLexer', + 'CrmshLexer', 'ThriftLexer'] class ProtoBufLexer(RegexLexer): @@ -81,6 +83,111 @@ class ProtoBufLexer(RegexLexer): } +class ThriftLexer(RegexLexer): + """ + For `Thrift <https://thrift.apache.org/>`__ interface definitions. + + .. versionadded:: 2.1 + """ + name = 'Thrift' + aliases = ['thrift'] + filenames = ['*.thrift'] + mimetypes = ['application/x-thrift'] + + tokens = { + 'root': [ + include('whitespace'), + include('comments'), + (r'"', String.Double, combined('stringescape', 'dqs')), + (r'\'', String.Single, combined('stringescape', 'sqs')), + (r'(namespace)(\s+)', + bygroups(Keyword.Namespace, Text.Whitespace), 'namespace'), + (r'(enum|union|struct|service|exception)(\s+)', + bygroups(Keyword.Declaration, Text.Whitespace), 'class'), + (r'((?:(?:[^\W\d]|\$)[\w.\[\]$<>]*\s+)+?)' # return arguments + r'((?:[^\W\d]|\$)[\w$]*)' # method name + r'(\s*)(\()', # signature start + bygroups(using(this), Name.Function, Text, Operator)), + include('keywords'), + include('numbers'), + (r'[&=]', Operator), + (r'[:;\,\{\}\(\)\<>\[\]]', Punctuation), + (r'[a-zA-Z_](\.[a-zA-Z_0-9]|[a-zA-Z_0-9])*', Name), + ], + 'whitespace': [ + (r'\n', Text.Whitespace), + (r'\s+', Text.Whitespace), + ], + 'comments': [ + (r'#.*$', Comment), + (r'//.*?\n', Comment), + (r'/\*[\w\W]*?\*/', Comment.Multiline), + ], + 'stringescape': [ + (r'\\([\\nrt"\'])', String.Escape), + ], + 'dqs': [ + (r'"', String.Double, '#pop'), + (r'[^\\"\n]+', String.Double), + ], + 'sqs': [ + (r"'", String.Single, '#pop'), + (r'[^\\\'\n]+', String.Single), + ], + 'namespace': [ + (r'[a-z\*](\.[a-zA-Z_0-9]|[a-zA-Z_0-9])*', Name.Namespace, '#pop'), + default('#pop'), + ], + 'class': [ + (r'[a-zA-Z_]\w*', Name.Class, '#pop'), + default('#pop'), + ], + 'keywords': [ + (r'(async|oneway|extends|throws|required|optional)\b', Keyword), + (r'(true|false)\b', Keyword.Constant), + (r'(const|typedef)\b', Keyword.Declaration), + (words(( + 'cpp_namespace', 'cpp_include', 'cpp_type', 'java_package', + 'cocoa_prefix', 'csharp_namespace', 'delphi_namespace', + 'php_namespace', 'py_module', 'perl_package', + 'ruby_namespace', 'smalltalk_category', 'smalltalk_prefix', + 'xsd_all', 'xsd_optional', 'xsd_nillable', 'xsd_namespace', + 'xsd_attrs', 'include'), suffix=r'\b'), + Keyword.Namespace), + (words(( + 'void', 'bool', 'byte', 'i16', 'i32', 'i64', 'double', + 'string', 'binary', 'void', 'map', 'list', 'set', 'slist', + 'senum'), suffix=r'\b'), + Keyword.Type), + (words(( + 'BEGIN', 'END', '__CLASS__', '__DIR__', '__FILE__', + '__FUNCTION__', '__LINE__', '__METHOD__', '__NAMESPACE__', + 'abstract', 'alias', 'and', 'args', 'as', 'assert', 'begin', + 'break', 'case', 'catch', 'class', 'clone', 'continue', + 'declare', 'def', 'default', 'del', 'delete', 'do', 'dynamic', + 'elif', 'else', 'elseif', 'elsif', 'end', 'enddeclare', + 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', + 'ensure', 'except', 'exec', 'finally', 'float', 'for', + 'foreach', 'function', 'global', 'goto', 'if', 'implements', + 'import', 'in', 'inline', 'instanceof', 'interface', 'is', + 'lambda', 'module', 'native', 'new', 'next', 'nil', 'not', + 'or', 'pass', 'public', 'print', 'private', 'protected', + 'raise', 'redo', 'rescue', 'retry', 'register', 'return', + 'self', 'sizeof', 'static', 'super', 'switch', 'synchronized', + 'then', 'this', 'throw', 'transient', 'try', 'undef', + 'unless', 'unsigned', 'until', 'use', 'var', 'virtual', + 'volatile', 'when', 'while', 'with', 'xor', 'yield'), + prefix=r'\b', suffix=r'\b'), + Keyword.Reserved), + ], + 'numbers': [ + (r'[+-]?(\d+\.\d+([eE][+-]?\d+)?|\.?\d+[eE][+-]?\d+)', Number.Float), + (r'[+-]?0x[0-9A-Fa-f]+', Number.Hex), + (r'[+-]?[0-9]+', Number.Integer), + ], + } + + class BroLexer(RegexLexer): """ For `Bro <http://bro-ids.org/>`_ scripts. @@ -471,19 +578,22 @@ class PanLexer(RegexLexer): ], 'basic': [ (words(( - 'if', 'for', 'with', 'else', 'type', 'bind', 'while', 'valid', 'final', 'prefix', - 'unique', 'object', 'foreach', 'include', 'template', 'function', 'variable', - 'structure', 'extensible', 'declaration'), prefix=r'\b', suffix=r'\s*\b'), + 'if', 'for', 'with', 'else', 'type', 'bind', 'while', 'valid', 'final', + 'prefix', 'unique', 'object', 'foreach', 'include', 'template', + 'function', 'variable', 'structure', 'extensible', 'declaration'), + prefix=r'\b', suffix=r'\s*\b'), Keyword), (words(( - 'file_contents', 'format', 'index', 'length', 'match', 'matches', 'replace', - 'splice', 'split', 'substr', 'to_lowercase', 'to_uppercase', 'debug', 'error', - 'traceback', 'deprecated', 'base64_decode', 'base64_encode', 'digest', 'escape', - 'unescape', 'append', 'create', 'first', 'nlist', 'key', 'list', 'merge', 'next', - 'prepend', 'is_boolean', 'is_defined', 'is_double', 'is_list', 'is_long', - 'is_nlist', 'is_null', 'is_number', 'is_property', 'is_resource', 'is_string', - 'to_boolean', 'to_double', 'to_long', 'to_string', 'clone', 'delete', 'exists', - 'path_exists', 'if_exists', 'return', 'value'), prefix=r'\b', suffix=r'\s*\b'), + 'file_contents', 'format', 'index', 'length', 'match', 'matches', + 'replace', 'splice', 'split', 'substr', 'to_lowercase', 'to_uppercase', + 'debug', 'error', 'traceback', 'deprecated', 'base64_decode', + 'base64_encode', 'digest', 'escape', 'unescape', 'append', 'create', + 'first', 'nlist', 'key', 'list', 'merge', 'next', 'prepend', 'is_boolean', + 'is_defined', 'is_double', 'is_list', 'is_long', 'is_nlist', 'is_null', + 'is_number', 'is_property', 'is_resource', 'is_string', 'to_boolean', + 'to_double', 'to_long', 'to_string', 'clone', 'delete', 'exists', + 'path_exists', 'if_exists', 'return', 'value'), + prefix=r'\b', suffix=r'\s*\b'), Name.Builtin), (r'#.*', Comment), (r'\\[\w\W]', String.Escape), @@ -512,3 +622,73 @@ class PanLexer(RegexLexer): include('root'), ], } + + +class CrmshLexer(RegexLexer): + """ + Lexer for `crmsh <http://crmsh.github.io/>`_ configuration files + for Pacemaker clusters. + + .. versionadded:: 2.1 + """ + name = 'Crmsh' + aliases = ['crmsh', 'pcmk'] + filenames = ['*.crmsh', '*.pcmk'] + mimetypes = [] + + elem = words(( + 'node', 'primitive', 'group', 'clone', 'ms', 'location', + 'colocation', 'order', 'fencing_topology', 'rsc_ticket', + 'rsc_template', 'property', 'rsc_defaults', + 'op_defaults', 'acl_target', 'acl_group', 'user', 'role', + 'tag'), suffix=r'(?![\w#$-])') + sub = words(( + 'params', 'meta', 'operations', 'op', 'rule', + 'attributes', 'utilization'), suffix=r'(?![\w#$-])') + acl = words(('read', 'write', 'deny'), suffix=r'(?![\w#$-])') + bin_rel = words(('and', 'or'), suffix=r'(?![\w#$-])') + un_ops = words(('defined', 'not_defined'), suffix=r'(?![\w#$-])') + date_exp = words(('in_range', 'date', 'spec', 'in'), suffix=r'(?![\w#$-])') + acl_mod = (r'(?:tag|ref|reference|attribute|type|xpath)') + bin_ops = (r'(?:lt|gt|lte|gte|eq|ne)') + val_qual = (r'(?:string|version|number)') + rsc_role_action = (r'(?:Master|Started|Slave|Stopped|' + r'start|promote|demote|stop)') + + tokens = { + 'root': [ + (r'^#.*\n?', Comment), + # attr=value (nvpair) + (r'([\w#$-]+)(=)("(?:""|[^"])*"|\S+)', + bygroups(Name.Attribute, Punctuation, String)), + # need this construct, otherwise numeric node ids + # are matched as scores + # elem id: + (r'(node)(\s+)([\w#$-]+)(:)', + bygroups(Keyword, Whitespace, Name, Punctuation)), + # scores + (r'([+-]?([0-9]+|inf)):', Number), + # keywords (elements and other) + (elem, Keyword), + (sub, Keyword), + (acl, Keyword), + # binary operators + (r'(?:%s:)?(%s)(?![\w#$-])' % (val_qual, bin_ops), Operator.Word), + # other operators + (bin_rel, Operator.Word), + (un_ops, Operator.Word), + (date_exp, Operator.Word), + # builtin attributes (e.g. #uname) + (r'#[a-z]+(?![\w#$-])', Name.Builtin), + # acl_mod:blah + (r'(%s)(:)("(?:""|[^"])*"|\S+)' % acl_mod, + bygroups(Keyword, Punctuation, Name)), + # rsc_id[:(role|action)] + # NB: this matches all other identifiers + (r'([\w#$-]+)(?:(:)(%s))?(?![\w#$-])' % rsc_role_action, + bygroups(Name, Punctuation, Operator.Word)), + # punctuation + (r'(\\(?=\n)|[[\](){}/:@])', Punctuation), + (r'\s+|\n', Whitespace), + ], + } diff --git a/pygments/lexers/elm.py b/pygments/lexers/elm.py new file mode 100644 index 00000000..b8206c6d --- /dev/null +++ b/pygments/lexers/elm.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.elm + ~~~~~~~~~~~~~~~~~~~ + + Lexer for the Elm programming language. + +""" + +from pygments.lexer import RegexLexer, words, include +from pygments.token import Comment, Keyword, Name, Number, Punctuation, String, Text + +__all__ = ['ElmLexer'] + + +class ElmLexer(RegexLexer): + """ + For `Elm <http://elm-lang.org/>`_ source code. + + .. versionadded:: 2.1 + """ + + name = 'Elm' + aliases = ['elm'] + filenames = ['*.elm'] + mimetypes = ['text/x-elm'] + + validName = r'[a-z_][a-zA-Z_\']*' + + specialName = r'^main ' + + builtinOps = ( + '~', '||', '|>', '|', '`', '^', '\\', '\'', '>>', '>=', '>', '==', + '=', '<~', '<|', '<=', '<<', '<-', '<', '::', ':', '/=', '//', '/', + '..', '.', '->', '-', '++', '+', '*', '&&', '%', + ) + + reservedWords = words(( + 'alias', 'as', 'case', 'else', 'if', 'import', 'in', + 'let', 'module', 'of', 'port', 'then', 'type', 'where', + ), suffix=r'\b') + + tokens = { + 'root': [ + + # Comments + (r'{-', Comment.Multiline, 'comment'), + (r'--.*', Comment.Single), + + # Whitespace + (r'\s+', Text), + + # Strings + (r'"', String, 'doublequote'), + + # Modules + (r'^\s*module\s*', Keyword.Namespace, 'imports'), + + # Imports + (r'^\s*import\s*', Keyword.Namespace, 'imports'), + + # Shaders + (r'\[glsl\|.*', Name.Entity, 'shader'), + + # Keywords + (reservedWords, Keyword.Reserved), + + # Types + (r'[A-Z]\w*', Keyword.Type), + + # Main + (specialName, Keyword.Reserved), + + # Prefix Operators + (words((builtinOps), prefix=r'\(', suffix=r'\)'), Name.Function), + + # Infix Operators + (words((builtinOps)), Name.Function), + + # Numbers + include('numbers'), + + # Variable Names + (validName, Name.Variable), + + # Parens + (r'[,\(\)\[\]{}]', Punctuation), + + ], + + 'comment': [ + (r'-(?!})', Comment.Multiline), + (r'{-', Comment.Multiline, 'comment'), + (r'[^-}]', Comment.Multiline), + (r'-}', Comment.Multiline, '#pop'), + ], + + 'doublequote': [ + (r'\\u[0-9a-fA-F]\{4}', String.Escape), + (r'\\[nrfvb\\\"]', String.Escape), + (r'[^"]', String), + (r'"', String, '#pop'), + ], + + 'imports': [ + (r'\w+(\.\w+)*', Name.Class, '#pop'), + ], + + 'numbers': [ + (r'_?\d+\.(?=\d+)', Number.Float), + (r'_?\d+', Number.Integer), + ], + + 'shader': [ + (r'\|(?!\])', Name.Entity), + (r'\|\]', Name.Entity, '#pop'), + (r'.*\n', Name.Entity), + ], + } diff --git a/pygments/lexers/esoteric.py b/pygments/lexers/esoteric.py index f61b292d..73ea4a4a 100644 --- a/pygments/lexers/esoteric.py +++ b/pygments/lexers/esoteric.py @@ -9,11 +9,11 @@ :license: BSD, see LICENSE for details. """ -from pygments.lexer import RegexLexer, include +from pygments.lexer import RegexLexer, include, words from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ - Number, Punctuation, Error + Number, Punctuation, Error, Whitespace -__all__ = ['BrainfuckLexer', 'BefungeLexer', 'RedcodeLexer'] +__all__ = ['BrainfuckLexer', 'BefungeLexer', 'BoogieLexer', 'RedcodeLexer', 'CAmkESLexer'] class BrainfuckLexer(RegexLexer): @@ -78,6 +78,66 @@ class BefungeLexer(RegexLexer): } +class CAmkESLexer(RegexLexer): + """ + Basic lexer for the input language for the + `CAmkES <https://sel4.systems/CAmkES/>`_ component platform. + + .. versionadded:: 2.1 + """ + name = 'CAmkES' + aliases = ['camkes', 'idl4'] + filenames = ['*.camkes', '*.idl4'] + + tokens = { + 'root':[ + # C pre-processor directive + (r'^\s*#.*\n', Comment.Preproc), + + # Whitespace, comments + (r'\s+', Text), + (r'/\*(.|\n)*?\*/', Comment), + (r'//.*\n', Comment), + + (r'[\[\(\){},\.;=\]]', Punctuation), + + (words(('assembly', 'attribute', 'component', 'composition', + 'configuration', 'connection', 'connector', 'consumes', + 'control', 'dataport', 'Dataport', 'emits', 'event', + 'Event', 'from', 'group', 'hardware', 'has', 'interface', + 'Interface', 'maybe', 'procedure', 'Procedure', 'provides', + 'template', 'to', 'uses'), suffix=r'\b'), Keyword), + + (words(('bool', 'boolean', 'Buf', 'char', 'character', 'double', + 'float', 'in', 'inout', 'int', 'int16_6', 'int32_t', + 'int64_t', 'int8_t', 'integer', 'mutex', 'out', 'real', + 'refin', 'semaphore', 'signed', 'string', 'uint16_t', + 'uint32_t', 'uint64_t', 'uint8_t', 'uintptr_t', 'unsigned', + 'void'), suffix=r'\b'), Keyword.Type), + + # Recognised attributes + (r'[a-zA-Z_]\w*_(priority|domain|buffer)', Keyword.Reserved), + (words(('dma_pool', 'from_access', 'to_access'), suffix=r'\b'), + Keyword.Reserved), + + # CAmkES-level include + (r'import\s+(<[^>]*>|"[^"]*");', Comment.Preproc), + + # C-level include + (r'include\s+(<[^>]*>|"[^"]*");', Comment.Preproc), + + # Literals + (r'0[xX][\da-fA-F]+', Number.Hex), + (r'-?[\d]+', Number), + (r'-?[\d]+\.[\d]+', Number.Float), + (r'"[^"]*"', String), + + # Identifiers + (r'[a-zA-Z_]\w*', Name), + ], + } + + class RedcodeLexer(RegexLexer): """ A simple Redcode lexer based on ICWS'94. @@ -112,3 +172,48 @@ class RedcodeLexer(RegexLexer): (r'[-+]?\d+', Number.Integer), ], } + + +class BoogieLexer(RegexLexer): + """ + For `Boogie <https://boogie.codeplex.com/>`_ source code. + + .. versionadded:: 2.1 + """ + name = 'Boogie' + aliases = ['boogie'] + filenames = ['*.bpl'] + + tokens = { + 'root': [ + # Whitespace and Comments + (r'\n', Whitespace), + (r'\s+', Whitespace), + (r'//[/!](.*?)\n', Comment.Doc), + (r'//(.*?)\n', Comment.Single), + (r'/\*', Comment.Multiline, 'comment'), + + (words(( + 'axiom', 'break', 'call', 'ensures', 'else', 'exists', 'function', + 'forall', 'if', 'invariant', 'modifies', 'procedure', 'requires', + 'then', 'var', 'while'), + suffix=r'\b'), Keyword), + (words(('const',), suffix=r'\b'), Keyword.Reserved), + + (words(('bool', 'int', 'ref'), suffix=r'\b'), Keyword.Type), + include('numbers'), + (r"(>=|<=|:=|!=|==>|&&|\|\||[+/\-=>*<\[\]])", Operator), + (r"([{}():;,.])", Punctuation), + # Identifier + (r'[a-zA-Z_]\w*', Name), + ], + 'comment': [ + (r'[^*/]+', Comment.Multiline), + (r'/\*', Comment.Multiline, '#push'), + (r'\*/', Comment.Multiline, '#pop'), + (r'[*/]', Comment.Multiline), + ], + 'numbers': [ + (r'[0-9]+', Number.Integer), + ], + } diff --git a/pygments/lexers/ezhil.py b/pygments/lexers/ezhil.py new file mode 100644 index 00000000..713541ee --- /dev/null +++ b/pygments/lexers/ezhil.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.ezhil + ~~~~~~~~~~~~~~~~~~~~~~ + + Pygments lexers for Ezhil language. + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +from pygments.lexer import RegexLexer, include, words +from pygments.token import Keyword, Text, Comment, Name +from pygments.token import String, Number, Punctuation, Operator + +__all__ = ['EzhilLexer'] + +class EzhilLexer(RegexLexer): + """ + Lexer for `Ezhil, a Tamil script-based programming language <http://ezhillang.org>`_ + + .. versionadded:: 2.1 + """ + name = 'Ezhil' + aliases = ['ezhil'] + filenames = ['*.n'] + mimetypes = ['text/x-ezhil'] + flags = re.MULTILINE | re.UNICODE + # Refer to tamil.utf8.tamil_letters from open-tamil for a stricter version of this. + # This much simpler version is close enough, and includes combining marks. + _TALETTERS = u'[a-zA-Z_]|[\u0b80-\u0bff]' + tokens = { + 'root': [ + include('keywords'), + (r'#.*\n', Comment.Single), + (r'[@+/*,^\-%]|[!<>=]=?|&&?|\|\|?', Operator), + (u'இல்', Operator.Word), + (words(('assert', 'max', 'min', + 'நீளம்','சரம்_இடமாற்று','சரம்_கண்டுபிடி', + 'பட்டியல்','பின்இணை','வரிசைப்படுத்து', + 'எடு','தலைகீழ்','நீட்டிக்க','நுழைக்க','வை', + 'கோப்பை_திற','கோப்பை_எழுது','கோப்பை_மூடு', + 'pi','sin','cos','tan','sqrt','hypot','pow','exp','log','log10' + 'min','max','exit', + ), suffix=r'\b'), Name.Builtin), + (r'(True|False)\b', Keyword.Constant), + (r'[^\S\n]+', Text), + include('identifier'), + include('literal'), + (r'[(){}\[\]:;.]', Punctuation), + ], + 'keywords': [ + (u'பதிப்பி|தேர்ந்தெடு|தேர்வு|ஏதேனில்|ஆனால்|இல்லைஆனால்|இல்லை|ஆக|ஒவ்வொன்றாக|இல்|வரை|செய்|முடியேனில்|பின்கொடு|முடி|நிரல்பாகம்|தொடர்|நிறுத்து|நிரல்பாகம்', Keyword), + ], + 'identifier': [ + (u'(?:'+_TALETTERS+u')(?:[0-9]|'+_TALETTERS+u')*', Name), + ], + 'literal': [ + (r'".*?"', String), + (r'(?u)\d+((\.\d*)?[eE][+-]?\d+|\.\d*)', Number.Float), + (r'(?u)\d+', Number.Integer), + ] + } + + def __init__(self, **options): + super(EzhilLexer, self).__init__(**options) + self.encoding = options.get('encoding', 'utf-8') diff --git a/pygments/lexers/fortran.py b/pygments/lexers/fortran.py index d822160f..4c22139d 100644 --- a/pygments/lexers/fortran.py +++ b/pygments/lexers/fortran.py @@ -73,13 +73,14 @@ class FortranLexer(RegexLexer): # Data Types (words(( 'CHARACTER', 'COMPLEX', 'DOUBLE PRECISION', 'DOUBLE COMPLEX', 'INTEGER', - 'LOGICAL', 'REAL', 'C_INT', 'C_SHORT', 'C_LONG', 'C_LONG_LONG', 'C_SIGNED_CHAR', - 'C_SIZE_T', 'C_INT8_T', 'C_INT16_T', 'C_INT32_T', 'C_INT64_T', 'C_INT_LEAST8_T', - 'C_INT_LEAST16_T', 'C_INT_LEAST32_T', 'C_INT_LEAST64_T', 'C_INT_FAST8_T', - 'C_INT_FAST16_T', 'C_INT_FAST32_T', 'C_INT_FAST64_T', 'C_INTMAX_T', - 'C_INTPTR_T', 'C_FLOAT', 'C_DOUBLE', 'C_LONG_DOUBLE', 'C_FLOAT_COMPLEX', - 'C_DOUBLE_COMPLEX', 'C_LONG_DOUBLE_COMPLEX', 'C_BOOL', 'C_CHAR', 'C_PTR', - 'C_FUNPTR'), prefix=r'\b', suffix=r'\s*\b'), + 'LOGICAL', 'REAL', 'C_INT', 'C_SHORT', 'C_LONG', 'C_LONG_LONG', + 'C_SIGNED_CHAR', 'C_SIZE_T', 'C_INT8_T', 'C_INT16_T', 'C_INT32_T', + 'C_INT64_T', 'C_INT_LEAST8_T', 'C_INT_LEAST16_T', 'C_INT_LEAST32_T', + 'C_INT_LEAST64_T', 'C_INT_FAST8_T', 'C_INT_FAST16_T', 'C_INT_FAST32_T', + 'C_INT_FAST64_T', 'C_INTMAX_T', 'C_INTPTR_T', 'C_FLOAT', 'C_DOUBLE', + 'C_LONG_DOUBLE', 'C_FLOAT_COMPLEX', 'C_DOUBLE_COMPLEX', + 'C_LONG_DOUBLE_COMPLEX', 'C_BOOL', 'C_CHAR', 'C_PTR', 'C_FUNPTR'), + prefix=r'\b', suffix=r'\s*\b'), Keyword.Type), # Operators @@ -171,7 +172,7 @@ class FortranFixedLexer(RegexLexer): aliases = ['fortranfixed'] filenames = ['*.f', '*.F'] - flags = re.IGNORECASE + flags = re.IGNORECASE def _lex_fortran(self, match, ctx=None): """Lex a line just as free form fortran without line break.""" diff --git a/pygments/lexers/functional.py b/pygments/lexers/functional.py index 180d3fd4..13c72b1e 100644 --- a/pygments/lexers/functional.py +++ b/pygments/lexers/functional.py @@ -10,7 +10,7 @@ """ from pygments.lexers.lisp import SchemeLexer, CommonLispLexer, RacketLexer, \ - NewLispLexer + NewLispLexer, ShenLexer from pygments.lexers.haskell import HaskellLexer, LiterateHaskellLexer, \ KokaLexer from pygments.lexers.theorem import CoqLexer diff --git a/pygments/lexers/grammar_notation.py b/pygments/lexers/grammar_notation.py new file mode 100644 index 00000000..460914f4 --- /dev/null +++ b/pygments/lexers/grammar_notation.py @@ -0,0 +1,131 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.grammar_notation + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lexers for grammer notations like BNF. + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from pygments.lexer import RegexLexer, bygroups, words +from pygments.token import Punctuation, Text, Comment, Operator, \ + Keyword, Name, Literal + +__all__ = ['BnfLexer', 'AbnfLexer'] + + +class BnfLexer(RegexLexer): + """ + This lexer is for grammer notations which are similar to + original BNF. + + In order to maximize a number of targets of this lexer, + let's decide some designs: + + * We don't distinguish `Terminal Symbol`. + + * We do assume that `NonTerminal Symbol` are always enclosed + with arrow brackets. + + * We do assume that `NonTerminal Symbol` may include + any printable characters except arrow brackets and ASCII 0x20. + This assumption is for `RBNF <http://www.rfc-base.org/txt/rfc-5511.txt>`_. + + * We do assume that target notation doesn't support comment. + + * We don't distinguish any operators and punctuation except + `::=`. + + Though these desision making might cause too minimal highlighting + and you might be disappointed, but it is reasonable for us. + + .. versionadded:: 2.1 + """ + + name = 'BNF' + aliases = ['bnf'] + filenames = ['*.bnf'] + mimetypes = ['text/x-bnf'] + + tokens = { + 'root': [ + (r'(<)([ -;=?-~]+)(>)', + bygroups(Punctuation, Name.Class, Punctuation)), + + # an only operator + (r'::=', Operator), + + # fallback + (r'[^<>:]+', Text), # for performance + (r'.', Text), + ], + } + + +class AbnfLexer(RegexLexer): + """ + Lexer for `IETF 7405 ABNF + <http://www.ietf.org/rfc/rfc7405.txt>`_ + (Updates `5234 <http://www.ietf.org/rfc/rfc5234.txt>`_) + grammars. + + .. versionadded:: 2.1 + """ + + name = 'ABNF' + aliases = ['abnf'] + filenames = ['*.abnf'] + mimetypes = ['text/x-abnf'] + + _core_rules = ( + 'ALPHA', 'BIT', 'CHAR', 'CR', 'CRLF', 'CTL', 'DIGIT', + 'DQUOTE', 'HEXDIG', 'HTAB', 'LF', 'LWSP', 'OCTET', + 'SP', 'VCHAR', 'WSP') + + tokens = { + 'root': [ + # comment + (r';.*$', Comment.Single), + + # quoted + # double quote itself in this state, it is as '%x22'. + (r'(%[si])?"[^"]*"', Literal), + + # binary (but i have never seen...) + (r'%b[01]+\-[01]+\b', Literal), # range + (r'%b[01]+(\.[01]+)*\b', Literal), # concat + + # decimal + (r'%d[0-9]+\-[0-9]+\b', Literal), # range + (r'%d[0-9]+(\.[0-9]+)*\b', Literal), # concat + + # hexadecimal + (r'%x[0-9a-fA-F]+\-[0-9a-fA-F]+\b', Literal), # range + (r'%x[0-9a-fA-F]+(\.[0-9a-fA-F]+)*\b', Literal), # concat + + # repetition (<a>*<b>element) including nRule + (r'\b[0-9]+\*[0-9]+', Operator), + (r'\b[0-9]+\*', Operator), + (r'\b[0-9]+', Operator), + (r'\*', Operator), + + # Strictly speaking, these are not keyword but + # are called `Core Rule'. + (words(_core_rules, suffix=r'\b'), Keyword), + + # nonterminals (ALPHA *(ALPHA / DIGIT / "-")) + (r'[a-zA-Z][a-zA-Z0-9-]+\b', Name.Class), + + # operators + (r'(=/|=|/)', Operator), + + # punctuation + (r'[\[\]()]', Punctuation), + + # fallback + (r'\s+', Text), + (r'.', Text), + ], + } diff --git a/pygments/lexers/graph.py b/pygments/lexers/graph.py index d90f0278..8315898c 100644 --- a/pygments/lexers/graph.py +++ b/pygments/lexers/graph.py @@ -61,6 +61,7 @@ class CypherLexer(RegexLexer): 'relations': [ (r'(-\[)(.*?)(\]->)', bygroups(Operator, using(this), Operator)), (r'(<-\[)(.*?)(\]-)', bygroups(Operator, using(this), Operator)), + (r'(-\[)(.*?)(\]-)', bygroups(Operator, using(this), Operator)), (r'-->|<--|\[|\]', Operator), (r'<|>|<>|=|<=|=>|\(|\)|\||:|,|;', Punctuation), (r'[.*{}]', Punctuation), diff --git a/pygments/lexers/hexdump.py b/pygments/lexers/hexdump.py new file mode 100644 index 00000000..efe16fa7 --- /dev/null +++ b/pygments/lexers/hexdump.py @@ -0,0 +1,97 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.hexdump + ~~~~~~~~~~~~~~~~~~~~~~~ + + Lexers for hexadecimal dumps. + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re + +from pygments.lexer import RegexLexer, bygroups, include +from pygments.token import Text, Name, Number, String, Punctuation + +__all__ = ['HexdumpLexer'] + + +class HexdumpLexer(RegexLexer): + """ + For typical hex dump output formats by the UNIX and GNU/Linux tools ``hexdump``, + ``hd``, ``hexcat``, ``od`` and ``xxd``, and the DOS tool ``DEBUG``. For example: + + .. sourcecode:: hexdump + + 00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| + 00000010 02 00 3e 00 01 00 00 00 c5 48 40 00 00 00 00 00 |..>......H@.....| + + The specific supported formats are the outputs of: + + * ``hexdump FILE`` + * ``hexdump -C FILE`` -- the `canonical` format used in the example. + * ``hd FILE`` -- same as ``hexdump -C FILE``. + * ``hexcat FILE`` + * ``od -t x1z FILE`` + * ``xxd FILE`` + * ``DEBUG.EXE FILE.COM`` and entering ``d`` to the prompt. + + .. versionadded:: 2.1 + """ + name = 'Hexdump' + aliases = ['hexdump'] + + hd = r'[0-9A-Ha-h]' + + tokens = { + 'root': [ + (r'\n', Text), + include('offset'), + (r'('+hd+r'{2})(\-)('+hd+r'{2})', bygroups(Number.Hex, Punctuation, Number.Hex)), + (hd+r'{2}', Number.Hex), + (r'(\s{2,3})(\>)(.{16})(\<)$', bygroups(Text, Punctuation, String, Punctuation), 'bracket-strings'), + (r'(\s{2,3})(\|)(.{16})(\|)$', bygroups(Text, Punctuation, String, Punctuation), 'piped-strings'), + (r'(\s{2,3})(\>)(.{1,15})(\<)$', bygroups(Text, Punctuation, String, Punctuation)), + (r'(\s{2,3})(\|)(.{1,15})(\|)$', bygroups(Text, Punctuation, String, Punctuation)), + (r'(\s{2,3})(.{1,15})$', bygroups(Text, String)), + (r'(\s{2,3})(.{16}|.{20})$', bygroups(Text, String), 'nonpiped-strings'), + (r'\s', Text), + (r'^\*', Punctuation), + ], + 'offset': [ + (r'^('+hd+'+)(:)', bygroups(Name.Label, Punctuation), 'offset-mode'), + (r'^'+hd+'+', Name.Label), + ], + 'offset-mode': [ + (r'\s', Text, '#pop'), + (hd+'+', Name.Label), + (r':', Punctuation) + ], + 'piped-strings': [ + (r'\n', Text), + include('offset'), + (hd+r'{2}', Number.Hex), + (r'(\s{2,3})(\|)(.{1,16})(\|)$', bygroups(Text, Punctuation, String, Punctuation)), + (r'\s', Text), + (r'^\*', Punctuation), + ], + 'bracket-strings': [ + (r'\n', Text), + include('offset'), + (hd+r'{2}', Number.Hex), + (r'(\s{2,3})(\>)(.{1,16})(\<)$', bygroups(Text, Punctuation, String, Punctuation)), + (r'\s', Text), + (r'^\*', Punctuation), + ], + 'nonpiped-strings': [ + (r'\n', Text), + include('offset'), + (r'('+hd+r'{2})(\-)('+hd+r'{2})', bygroups(Number.Hex, Punctuation, Number.Hex)), + (hd+r'{2}', Number.Hex), + (r'(\s{19,})(.{1,20}?)$', bygroups(Text, String)), + (r'(\s{2,3})(.{1,20})$', bygroups(Text, String)), + (r'\s', Text), + (r'^\*', Punctuation), + ], + } diff --git a/pygments/lexers/idl.py b/pygments/lexers/idl.py index a1ab1ad0..d745bcfd 100644 --- a/pygments/lexers/idl.py +++ b/pygments/lexers/idl.py @@ -12,7 +12,7 @@ import re from pygments.lexer import RegexLexer, words -from pygments.token import Text, Comment, Operator, Keyword, Name, Number +from pygments.token import Text, Comment, Operator, Keyword, Name, Number, String __all__ = ['IDLLexer'] @@ -256,7 +256,14 @@ class IDLLexer(RegexLexer): (r'\+\+|--|->|\+|-|##|#|\*|/|<|>|&&|\^|~|\|\|\?|:', Operator), (r'\b(mod=|lt=|le=|eq=|ne=|ge=|gt=|not=|and=|or=|xor=)', Operator), (r'\b(mod|lt|le|eq|ne|ge|gt|not|and|or|xor)\b', Operator), - (r'\b[0-9](L|B|S|UL|ULL|LL)?\b', Number), + (r'"[^\"]*"', String.Double), + (r"'[^\']*'", String.Single), + (r'\b[\+\-]?([0-9]*\.[0-9]+|[0-9]+\.[0-9]*)(D|E)?([\+\-]?[0-9]+)?\b', Number.Float), + (r'\b\'[\+\-]?[0-9A-F]+\'X(U?(S?|L{1,2})|B)\b', Number.Hex), + (r'\b\'[\+\-]?[0-7]+\'O(U?(S?|L{1,2})|B)\b', Number.Oct), + (r'\b[\+\-]?[0-9]+U?L{1,2}\b', Number.Integer.Long), + (r'\b[\+\-]?[0-9]+U?S?\b', Number.Integer), + (r'\b[\+\-]?[0-9]+B\b', Number), (r'.', Text), ] } diff --git a/pygments/lexers/int_fiction.py b/pygments/lexers/int_fiction.py index 25c472b1..724f9b27 100644 --- a/pygments/lexers/int_fiction.py +++ b/pygments/lexers/int_fiction.py @@ -285,6 +285,7 @@ class Inform6Lexer(RegexLexer): include('_whitespace'), (r';', Punctuation, '#pop'), (r'\*', Punctuation), + (r'"', String.Double, 'plain-string'), (_name, Name.Variable) ], # Array diff --git a/pygments/lexers/j.py b/pygments/lexers/j.py new file mode 100644 index 00000000..20176d0d --- /dev/null +++ b/pygments/lexers/j.py @@ -0,0 +1,144 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.j + ~~~~~~~~~~~~~~~~~ + + Lexer for the J programming language. + +""" + +from pygments.lexer import RegexLexer, words, include +from pygments.token import Comment, Keyword, Name, Number, Operator, Punctuation, \ + String, Text + +__all__ = ['JLexer'] + + +class JLexer(RegexLexer): + """ + For `J <http://jsoftware.com/>`_ source code. + + .. versionadded:: 2.1 + """ + + name = 'J' + aliases = ['j'] + filenames = ['*.ijs'] + mimetypes = ['text/x-j'] + + validName = r'\b[a-zA-Z]\w*' + + tokens = { + 'root': [ + # Shebang script + (r'#!.*$', Comment.Preproc), + + # Comments + (r'NB\..*', Comment.Single), + (r'\n+\s*Note', Comment.Multiline, 'comment'), + (r'\s*Note.*', Comment.Single), + + # Whitespace + (r'\s+', Text), + + # Strings + (r"'", String, 'singlequote'), + + # Definitions + (r'0\s+:\s*0|noun\s+define\s*$', Name.Entity, 'nounDefinition'), + (r'\b(([1-4]|13)\s+:\s*0)|((adverb|conjunction|dyad|monad|verb)\s+define)\b', + Name.Function, 'explicitDefinition'), + + # Flow Control + (words(('for_', 'goto_', 'label_'), suffix=validName+'\.'), Name.Label), + (words(( + 'assert', 'break', 'case', 'catch', 'catchd', + 'catcht', 'continue', 'do', 'else', 'elseif', + 'end', 'fcase', 'for', 'if', 'return', + 'select', 'throw', 'try', 'while', 'whilst', + ), suffix='\.'), Name.Label), + + # Variable Names + (validName, Name.Variable), + + # Standard Library + (words(( + 'ARGV', 'CR', 'CRLF', 'DEL', 'Debug', + 'EAV', 'EMPTY', 'FF', 'JVERSION', 'LF', + 'LF2', 'Note', 'TAB', 'alpha17', 'alpha27', + 'apply', 'bind', 'boxopen', 'boxxopen', 'bx', + 'clear', 'cutLF', 'cutopen', 'datatype', 'def', + 'dfh', 'drop', 'each', 'echo', 'empty', + 'erase', 'every', 'evtloop', 'exit', 'expand', + 'fetch', 'file2url', 'fixdotdot', 'fliprgb', 'getargs', + 'getenv', 'hfd', 'inv', 'inverse', 'iospath', + 'isatty', 'isutf8', 'items', 'leaf', 'list', + 'nameclass', 'namelist', 'namelist', 'names', 'nc', + 'nl', 'on', 'pick', 'pick', 'rows', + 'script', 'scriptd', 'sign', 'sminfo', 'smoutput', + 'sort', 'split', 'stderr', 'stdin', 'stdout', + 'table', 'take', 'timespacex', 'timex', 'tmoutput', + 'toCRLF', 'toHOST', 'toJ', 'tolower', 'toupper', + 'type', 'ucp', 'ucpcount', 'usleep', 'utf8', + 'uucp', + )), Name.Function), + + # Copula + (r'=[.:]', Operator), + + # Builtins + (r'[-=+*#$%@!~`^&";:.,<>{}\[\]\\|/]', Operator), + + # Short Keywords + (r'[abCdDeEfHiIjLMoprtT]\.', Keyword.Reserved), + (r'[aDiLpqsStux]\:', Keyword.Reserved), + (r'(_[0-9])\:', Keyword.Constant), + + # Parens + (r'\(', Punctuation, 'parentheses'), + + # Numbers + include('numbers'), + ], + + 'comment': [ + (r'[^)]', Comment.Multiline), + (r'^\)', Comment.Multiline, '#pop'), + (r'[)]', Comment.Multiline), + ], + + 'explicitDefinition': [ + (r'\b[nmuvxy]\b', Name.Decorator), + include('root'), + (r'[^)]', Name), + (r'^\)', Name.Label, '#pop'), + (r'[)]', Name), + ], + + 'numbers': [ + (r'\b_{1,2}\b', Number), + (r'_?\d+(\.\d+)?(\s*[ejr]\s*)_?\d+(\.?=\d+)?', Number), + (r'_?\d+\.(?=\d+)', Number.Float), + (r'_?\d+x', Number.Integer.Long), + (r'_?\d+', Number.Integer), + ], + + 'nounDefinition': [ + (r'[^)]', String), + (r'^\)', Name.Label, '#pop'), + (r'[)]', String), + ], + + 'parentheses': [ + (r'\)', Punctuation, '#pop'), + # include('nounDefinition'), + include('explicitDefinition'), + include('root'), + ], + + 'singlequote': [ + (r"[^']", String), + (r"''", String), + (r"'", String, '#pop'), + ], + } diff --git a/pygments/lexers/javascript.py b/pygments/lexers/javascript.py index 7dcfbb4b..8e2d9797 100644 --- a/pygments/lexers/javascript.py +++ b/pygments/lexers/javascript.py @@ -11,7 +11,8 @@ import re -from pygments.lexer import RegexLexer, include, bygroups, default, using, this +from pygments.lexer import RegexLexer, include, bygroups, default, using, \ + this, words, combined from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ Number, Punctuation, Other from pygments.util import get_bool_opt, iteritems @@ -19,7 +20,7 @@ import pygments.unistring as uni __all__ = ['JavascriptLexer', 'KalLexer', 'LiveScriptLexer', 'DartLexer', 'TypeScriptLexer', 'LassoLexer', 'ObjectiveJLexer', - 'CoffeeScriptLexer', 'MaskLexer'] + 'CoffeeScriptLexer', 'MaskLexer', 'EarlGreyLexer'] JS_IDENT_START = ('(?:[$_' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl') + ']|\\\\u[a-fA-F0-9]{4})') @@ -36,9 +37,9 @@ class JavascriptLexer(RegexLexer): name = 'JavaScript' aliases = ['js', 'javascript'] - filenames = ['*.js', '*.jsm', ] + filenames = ['*.js', '*.jsm'] mimetypes = ['application/javascript', 'application/x-javascript', - 'text/x-javascript', 'text/javascript', ] + 'text/x-javascript', 'text/javascript'] flags = re.DOTALL | re.UNICODE | re.MULTILINE @@ -64,12 +65,13 @@ class JavascriptLexer(RegexLexer): (r'^(?=\s|/|<!--)', Text, 'slashstartsregex'), include('commentsandwhitespace'), (r'\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|' - r'(<<|>>>?|==?|!=?|[-<>+*%&|^/])=?', Operator, 'slashstartsregex'), + r'(<<|>>>?|=>|==?|!=?|[-<>+*%&|^/])=?', Operator, 'slashstartsregex'), + (r'\.\.\.', Punctuation), (r'[{(\[;,]', Punctuation, 'slashstartsregex'), (r'[})\].]', Punctuation), (r'(for|in|while|do|break|return|continue|switch|case|default|if|else|' r'throw|try|catch|finally|new|delete|typeof|instanceof|void|yield|' - r'this)\b', Keyword, 'slashstartsregex'), + r'this|of)\b', Keyword, 'slashstartsregex'), (r'(var|let|with|function)\b', Keyword.Declaration, 'slashstartsregex'), (r'(abstract|boolean|byte|char|class|const|debugger|double|enum|export|' r'extends|final|float|goto|implements|import|int|interface|long|native|' @@ -77,17 +79,34 @@ class JavascriptLexer(RegexLexer): r'transient|volatile)\b', Keyword.Reserved), (r'(true|false|null|NaN|Infinity|undefined)\b', Keyword.Constant), (r'(Array|Boolean|Date|Error|Function|Math|netscape|' - r'Number|Object|Packages|RegExp|String|sun|decodeURI|' + r'Number|Object|Packages|RegExp|String|Promise|Proxy|sun|decodeURI|' r'decodeURIComponent|encodeURI|encodeURIComponent|' - r'Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|' - r'window)\b', Name.Builtin), + r'Error|eval|isFinite|isNaN|isSafeInteger|parseFloat|parseInt|' + r'document|this|window)\b', Name.Builtin), (JS_IDENT, Name.Other), (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float), + (r'0b[01]+', Number.Bin), + (r'0o[0-7]+', Number.Oct), (r'0x[0-9a-fA-F]+', Number.Hex), (r'[0-9]+', Number.Integer), (r'"(\\\\|\\"|[^"])*"', String.Double), (r"'(\\\\|\\'|[^'])*'", String.Single), - ] + (r'`', String.Backtick, 'interp'), + ], + 'interp': [ + (r'`', String.Backtick, '#pop'), + (r'\\\\', String.Backtick), + (r'\\`', String.Backtick), + (r'\${', String.Interpol, 'interp-inside'), + (r'\$', String.Backtick), + (r'[^`\\$]+', String.Backtick), + ], + 'interp-inside': [ + # TODO: should this include single-line comments and allow nesting strings? + (r'}', String.Interpol, '#pop'), + include('root'), + ], + # (\\\\|\\`|[^`])*`', String.Backtick), } @@ -161,7 +180,8 @@ class KalLexer(RegexLexer): (r'(Array|Boolean|Date|Error|Function|Math|netscape|' r'Number|Object|Packages|RegExp|String|sun|decodeURI|' r'decodeURIComponent|encodeURI|encodeURIComponent|' - r'eval|isFinite|isNaN|parseFloat|parseInt|document|window|' + r'eval|isFinite|isNaN|isSafeInteger|parseFloat|parseInt|document|' + r'window|' r'print)\b', Name.Builtin), (r'[$a-zA-Z_][\w.$]*\s*(:|[+\-*/]?\=)?\b', Name.Variable), @@ -491,6 +511,8 @@ class TypeScriptLexer(RegexLexer): (r'[0-9]+', Number.Integer), (r'"(\\\\|\\"|[^"])*"', String.Double), (r"'(\\\\|\\'|[^'])*'", String.Single), + # Match stuff like: Decorators + (r'@\w+', Keyword.Declaration), ] } @@ -522,7 +544,7 @@ class LassoLexer(RegexLexer): tokens = { 'root': [ - (r'^#!.+lasso9\b', Comment.Preproc, 'lasso'), + (r'^#![ \S]+lasso9\b', Comment.Preproc, 'lasso'), (r'\[no_square_brackets\]', Comment.Preproc, 'nosquarebrackets'), (r'\[noprocess\]', Comment.Preproc, ('delimiters', 'noprocess')), (r'\[', Comment.Preproc, ('delimiters', 'squarebrackets')), @@ -541,9 +563,11 @@ class LassoLexer(RegexLexer): (r'[^[<]+', Other), ], 'nosquarebrackets': [ + (r'\[noprocess\]', Comment.Preproc, 'noprocess'), + (r'\[', Other), (r'<\?(LassoScript|lasso|=)', Comment.Preproc, 'anglebrackets'), - (r'<', Other), - (r'[^<]+', Other), + (r'<(!--.*?-->)?', Other), + (r'[^[<]+', Other), ], 'noprocess': [ (r'\[/noprocess\]', Comment.Preproc, '#pop'), @@ -576,7 +600,7 @@ class LassoLexer(RegexLexer): (r'\d*\.\d+(e[+-]?\d+)?', Number.Float), (r'0x[\da-f]+', Number.Hex), (r'\d+', Number.Integer), - (r'([+-]?)(infinity|NaN)\b', bygroups(Operator, Number)), + (r'(infinity|NaN)\b', Number), (r"'", String.Single, 'singlestring'), (r'"', String.Double, 'doublestring'), (r'`[^`]*`', String.Backtick), @@ -584,16 +608,17 @@ class LassoLexer(RegexLexer): # names (r'\$[a-z_][\w.]*', Name.Variable), (r'#([a-z_][\w.]*|\d+)', Name.Variable.Instance), - (r"(\.)('[a-z_][\w.]*')", + (r"(\.\s*)('[a-z_][\w.]*')", bygroups(Name.Builtin.Pseudo, Name.Variable.Class)), (r"(self)(\s*->\s*)('[a-z_][\w.]*')", bygroups(Name.Builtin.Pseudo, Operator, Name.Variable.Class)), - (r'(\.\.?)([a-z_][\w.]*(=(?!=))?)', + (r'(\.\.?\s*)([a-z_][\w.]*(=(?!=))?)', bygroups(Name.Builtin.Pseudo, Name.Other.Member)), (r'(->\\?\s*|&\s*)([a-z_][\w.]*(=(?!=))?)', bygroups(Operator, Name.Other.Member)), - (r'(self|inherited)\b', Name.Builtin.Pseudo), - (r'-[a-z_][\w.]*', Name.Attribute), + (r'(?<!->)(self|inherited|currentcapture|givenblock)\b', + Name.Builtin.Pseudo), + (r'-(?!infinity)[a-z_][\w.]*', Name.Attribute), (r'::\s*[a-z_][\w.]*', Name.Label), (r'(error_(code|msg)_\w+|Error_AddError|Error_ColumnRestriction|' r'Error_DatabaseConnectionUnavailable|Error_DatabaseTimeout|' @@ -623,7 +648,8 @@ class LassoLexer(RegexLexer): (r'(true|false|none|minimal|full|all|void)\b', Keyword.Constant), (r'(local|var|variable|global|data(?=\s))\b', Keyword.Declaration), (r'(array|date|decimal|duration|integer|map|pair|string|tag|xml|' - r'null|bytes|list|queue|set|stack|staticarray|tie)\b', Keyword.Type), + r'null|boolean|bytes|keyword|list|locale|queue|set|stack|' + r'staticarray)\b', Keyword.Type), (r'([a-z_][\w.]*)(\s+)(in)\b', bygroups(Name, Text, Keyword)), (r'(let|into)(\s+)([a-z_][\w.]*)', bygroups(Keyword, Text, Name)), (r'require\b', Keyword, 'requiresection'), @@ -672,7 +698,7 @@ class LassoLexer(RegexLexer): (r'\\', String.Double), ], 'escape': [ - (r'\\(U[\da-f]{8}|u[\da-f]{4}|x[\da-f]{1,2}|[0-7]{1,3}|:[^:]+:|' + (r'\\(U[\da-f]{8}|u[\da-f]{4}|x[\da-f]{1,2}|[0-7]{1,3}|:[^:\n\r]+:|' r'[abefnrtv?"\'\\]|$)', String.Escape), ], 'signature': [ @@ -1197,3 +1223,218 @@ class MaskLexer(RegexLexer): include('string-base') ], } + + +class EarlGreyLexer(RegexLexer): + """ + For `Earl-Grey`_ source code. + + .. _Earl-Grey: https://breuleux.github.io/earl-grey/ + + .. versionadded: 2.1 + """ + + name = 'Earl Grey' + aliases = ['earl-grey', 'earlgrey', 'eg'] + filenames = ['*.eg'] + mimetypes = ['text/x-earl-grey'] + + tokens = { + 'root': [ + (r'\n', Text), + include('control'), + (r'[^\S\n]+', Text), + (r';;.*\n', Comment), + (r'[\[\]\{\}\:\(\)\,\;]', Punctuation), + (r'\\\n', Text), + (r'\\', Text), + include('errors'), + (words(( + 'with', 'where', 'when', 'and', 'not', 'or', 'in', + 'as', 'of', 'is'), + prefix=r'(?<=\s|\[)', suffix=r'(?![\w\$\-])'), + Operator.Word), + (r'[\*@]?->', Name.Function), + (r'[+\-*/~^<>%&|?!@#.]*=', Operator.Word), + (r'\.{2,3}', Operator.Word), # Range Operator + (r'([+*/~^<>&|?!]+)|([#\-](?=\s))|@@+(?=\s)|=+', Operator), + (r'(?<![\w\$\-])(var|let)(?:[^\w\$])', Keyword.Declaration), + include('keywords'), + include('builtins'), + include('assignment'), + (r'''(?x) + (?:()([a-zA-Z$_](?:[a-zA-Z$0-9_\-]*[a-zA-Z$0-9_])?)| + (?<=[\s\{\[\(])(\.)([a-zA-Z$_](?:[a-zA-Z$0-9_\-]*[a-zA-Z$0-9_])?)) + (?=.*%)''', + bygroups(Punctuation, Name.Tag, Punctuation, Name.Class.Start), 'dbs'), + (r'[rR]?`', String.Backtick, 'bt'), + (r'[rR]?```', String.Backtick, 'tbt'), + (r'(?<=[\s\[\{\(,;])\.([a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?)' + r'(?=[\s\]\}\),;])', String.Symbol), + include('nested'), + (r'(?:[rR]|[rR]\.[gmi]{1,3})?"', String, combined('stringescape', 'dqs')), + (r'(?:[rR]|[rR]\.[gmi]{1,3})?\'', String, combined('stringescape', 'sqs')), + (r'"""', String, combined('stringescape', 'tdqs')), + include('tuple'), + include('import_paths'), + include('name'), + include('numbers'), + ], + 'dbs': [ + (r'(\.)([a-zA-Z$_](?:[a-zA-Z$0-9_\-]*[a-zA-Z$0-9_])?)(?=[\[\.\s])', + bygroups(Punctuation, Name.Class.DBS)), + (r'(\[)([\^#][a-zA-Z$_](?:[a-zA-Z$0-9_\-]*[a-zA-Z$0-9_])?)(\])', + bygroups(Punctuation, Name.Entity.DBS, Punctuation)), + (r'\s+', Text), + (r'%', Operator.DBS, '#pop'), + ], + 'import_paths': [ + (r'(?<=[\s:;,])(\.{1,3}(?:[\w\-]*/)*)(\w(?:[\w\-]*\w)*)(?=[\s;,])', + bygroups(Text.Whitespace, Text)), + ], + 'assignment': [ + (r'(\.)?([a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?)' + r'(?=\s+[+\-*/~^<>%&|?!@#.]*\=\s)', + bygroups(Punctuation, Name.Variable)) + ], + 'errors': [ + (words(('Error', 'TypeError', 'ReferenceError'), + prefix=r'(?<![\w\$\-\.])', suffix=r'(?![\w\$\-\.])'), + Name.Exception), + (r'''(?x) + (?<![\w\$]) + E\.[\w\$](?:[\w\$\-]*[\w\$])? + (?:\.[\w\$](?:[\w\$\-]*[\w\$])?)* + (?=[\(\{\[\?\!\s])''', + Name.Exception), + ], + 'control': [ + (r'''(?x) + ([a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?) + (?!\n)\s+ + (?!and|as|each\*|each|in|is|mod|of|or|when|where|with) + (?=(?:[+\-*/~^<>%&|?!@#.])?[a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?)''', + Keyword.Control), + (r'([a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?)(?!\n)\s+(?=[\'"\d\{\[\(])', + Keyword.Control), + (r'''(?x) + (?: + (?<=[%=])| + (?<=[=\-]>)| + (?<=with|each|with)| + (?<=each\*|where) + )(\s+) + ([a-zA-Z$_](?:[a-zA-Z$0-9_\-]*[a-zA-Z$0-9_])?)(:)''', + bygroups(Text, Keyword.Control, Punctuation)), + (r'''(?x) + (?<![+\-*/~^<>%&|?!@#.])(\s+) + ([a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?)(:)''', + bygroups(Text, Keyword.Control, Punctuation)), + ], + 'nested': [ + (r'''(?x) + (?<=[a-zA-Z$0-9_\]\}\)])(\.) + ([a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?) + (?=\s+with(?:\s|\n))''', + bygroups(Punctuation, Name.Function)), + (r'''(?x) + (?<!\s)(\.) + ([a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?) + (?=[\}\]\)\.,;:\s])''', + bygroups(Punctuation, Name.Field)), + (r'''(?x) + (?<=[a-zA-Z$0-9_\]\}\)])(\.) + ([a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?) + (?=[\[\{\(:])''', + bygroups(Punctuation, Name.Function)), + ], + 'keywords': [ + (words(( + 'each', 'each*', 'mod', 'await', 'break', 'chain', + 'continue', 'elif', 'expr-value', 'if', 'match', + 'return', 'yield', 'pass', 'else', 'require', 'var', + 'let', 'async', 'method', 'gen'), + prefix=r'(?<![\w\$\-\.])', suffix=r'(?![\w\$\-\.])'), + Keyword.Pseudo), + (words(('this', 'self', '@'), + prefix=r'(?<![\w\$\-\.])', suffix=r'(?![\w\$\-])'), + Keyword.Constant), + (words(( + 'Function', 'Object', 'Array', 'String', 'Number', + 'Boolean', 'ErrorFactory', 'ENode', 'Promise'), + prefix=r'(?<![\w\$\-\.])', suffix=r'(?![\w\$\-])'), + Keyword.Type), + ], + 'builtins': [ + (words(( + 'send', 'object', 'keys', 'items', 'enumerate', 'zip', + 'product', 'neighbours', 'predicate', 'equal', + 'nequal', 'contains', 'repr', 'clone', 'range', + 'getChecker', 'get-checker', 'getProperty', 'get-property', + 'getProjector', 'get-projector', 'consume', 'take', + 'promisify', 'spawn', 'constructor'), + prefix=r'(?<![\w\-#\.])', suffix=r'(?![\w\-\.])'), + Name.Builtin), + (words(( + 'true', 'false', 'null', 'undefined'), + prefix=r'(?<![\w\$\-\.])', suffix=r'(?![\w\$\-\.])'), + Name.Constant), + ], + 'name': [ + (r'@([a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?)', Name.Variable.Instance), + (r'([a-zA-Z$_](?:[a-zA-Z$0-9_-]*[a-zA-Z$0-9_])?)(\+\+|\-\-)?', + bygroups(Name.Symbol, Operator.Word)) + ], + 'tuple': [ + (r'#[a-zA-Z_][a-zA-Z_\-0-9]*(?=[\s\{\(,;\n])', Name.Namespace) + ], + 'interpoling_string': [ + (r'\}', String.Interpol, '#pop'), + include('root') + ], + 'stringescape': [ + (r'\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|' + r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape) + ], + 'strings': [ + (r'[^\\\'"]', String), + (r'[\'"\\]', String), + (r'\n', String) # All strings are multiline in EG + ], + 'dqs': [ + (r'"', String, '#pop'), + (r'\\\\|\\"|\\\n', String.Escape), + include('strings') + ], + 'sqs': [ + (r"'", String, '#pop'), + (r"\\\\|\\'|\\\n", String.Escape), + (r'\{', String.Interpol, 'interpoling_string'), + include('strings') + ], + 'tdqs': [ + (r'"""', String, '#pop'), + include('strings'), + ], + 'bt': [ + (r'`', String.Backtick, '#pop'), + (r'(?<!`)\n', String.Backtick), + (r'\^=?', String.Escape), + (r'.+', String.Backtick), + ], + 'tbt': [ + (r'```', String.Backtick, '#pop'), + (r'\n', String.Backtick), + (r'\^=?', String.Escape), + (r'[^\`]+', String.Backtick), + ], + 'numbers': [ + (r'\d+\.(?!\.)\d*([eE][+-]?[0-9]+)?', Number.Float), + (r'\d+[eE][+-]?[0-9]+', Number.Float), + (r'8r[0-7]+', Number.Oct), + (r'2r[01]+', Number.Bin), + (r'16r[a-fA-F0-9]+', Number.Hex), + (r'([3-79]|[1-2][0-9]|3[0-6])r[a-zA-Z\d]+(\.[a-zA-Z\d]+)?', Number.Radix), + (r'\d+', Number.Integer) + ], + } diff --git a/pygments/lexers/julia.py b/pygments/lexers/julia.py index 1304b395..cf7c7d61 100644 --- a/pygments/lexers/julia.py +++ b/pygments/lexers/julia.py @@ -14,7 +14,7 @@ import re from pygments.lexer import Lexer, RegexLexer, bygroups, combined, do_insertions from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ Number, Punctuation, Generic -from pygments.util import shebang_matches +from pygments.util import shebang_matches, unirange __all__ = ['JuliaLexer', 'JuliaConsoleLexer'] @@ -91,7 +91,8 @@ class JuliaLexer(RegexLexer): # names (r'@[\w.]+', Name.Decorator), - (u'[a-zA-Z_\u00A1-\U0010FFFF][a-zA-Z_0-9\u00A1-\U0010FFFF]*!*', Name), + (u'(?:[a-zA-Z_\u00A1-\uffff]|%s)(?:[a-zA-Z_0-9\u00A1-\uffff]|%s)*!*' % + ((unirange(0x10000, 0x10ffff),)*2), Name), # numbers (r'(\d+(_\d+)+\.\d*|\d*\.\d+(_\d+)+)([eEf][+-]?[0-9]+)?', Number.Float), diff --git a/pygments/lexers/jvm.py b/pygments/lexers/jvm.py index 4d3c9159..14647616 100644 --- a/pygments/lexers/jvm.py +++ b/pygments/lexers/jvm.py @@ -252,7 +252,6 @@ class ScalaLexer(RegexLexer): 'root': [ # method names (r'(class|trait|object)(\s+)', bygroups(Keyword, Text), 'class'), - (u"'%s" % idrest, Text.Symbol), (r'[^\S\n]+', Text), (r'//.*?\n', Comment.Single), (r'/\*', Comment.Multiline, 'comment'), @@ -271,6 +270,7 @@ class ScalaLexer(RegexLexer): (r'""".*?"""(?!")', String), (r'"(\\\\|\\"|[^"])*"', String), (r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char), + (u"'%s" % idrest, Text.Symbol), (r'[fs]"""', String, 'interptriplestring'), # interpolated strings (r'[fs]"', String, 'interpstring'), # interpolated strings (r'raw"(\\\\|\\"|[^"])*"', String), # raw strings @@ -990,7 +990,7 @@ class CeylonLexer(RegexLexer): class KotlinLexer(RegexLexer): """ - For `Kotlin <http://kotlin.jetbrains.org/>`_ + For `Kotlin <http://kotlinlang.org/>`_ source code. .. versionadded:: 1.5 @@ -1025,15 +1025,17 @@ class KotlinLexer(RegexLexer): (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFL]?|" r"0[xX][0-9a-fA-F]+[Ll]?", Number), (r'(class)(\s+)(object)', bygroups(Keyword, Text, Keyword)), - (r'(class|trait|object)(\s+)', bygroups(Keyword, Text), 'class'), + (r'(class|interface|object)(\s+)', bygroups(Keyword, Text), 'class'), (r'(package|import)(\s+)', bygroups(Keyword, Text), 'package'), (r'(val|var)(\s+)', bygroups(Keyword, Text), 'property'), (r'(fun)(\s+)', bygroups(Keyword, Text), 'function'), - (r'(abstract|annotation|as|break|by|catch|class|continue|do|else|' - r'enum|false|final|finally|for|fun|get|if|import|in|inner|' - r'internal|is|null|object|open|out|override|package|private|' - r'protected|public|reified|return|set|super|this|throw|trait|' - r'true|try|type|val|var|vararg|when|where|while|This)\b', Keyword), + (r'(abstract|annotation|as|break|by|catch|class|companion|const|' + r'constructor|continue|crossinline|data|do|dynamic|else|enum|' + r'external|false|final|finally|for|fun|get|if|import|in|infix|' + r'inline|inner|interface|internal|is|lateinit|noinline|null|' + r'object|open|operator|out|override|package|private|protected|' + r'public|reified|return|sealed|set|super|tailrec|this|throw|' + r'true|try|val|var|vararg|when|where|while)\b', Keyword), (kt_id, Name), ], 'package': [ diff --git a/pygments/lexers/lisp.py b/pygments/lexers/lisp.py index 729916e3..bd59d2b6 100644 --- a/pygments/lexers/lisp.py +++ b/pygments/lexers/lisp.py @@ -17,9 +17,9 @@ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ from pygments.lexers.python import PythonLexer -__all__ = ['SchemeLexer', 'CommonLispLexer', - 'HyLexer', 'RacketLexer', - 'NewLispLexer', 'EmacsLispLexer', ] +__all__ = ['SchemeLexer', 'CommonLispLexer', 'HyLexer', 'RacketLexer', + 'NewLispLexer', 'EmacsLispLexer', 'ShenLexer', 'CPSALexer'] + class SchemeLexer(RegexLexer): """ @@ -269,8 +269,8 @@ class CommonLispLexer(RegexLexer): # decimal numbers (r'[-+]?\d+\.?' + terminated, Number.Integer), (r'[-+]?\d+/\d+' + terminated, Number), - (r'[-+]?(\d*\.\d+([defls][-+]?\d+)?|\d+(\.\d*)?[defls][-+]?\d+)' - + terminated, Number.Float), + (r'[-+]?(\d*\.\d+([defls][-+]?\d+)?|\d+(\.\d*)?[defls][-+]?\d+)' + + terminated, Number.Float), # sharpsign strings and characters (r"#\\." + terminated, String.Char), @@ -1550,7 +1550,8 @@ class EmacsLispLexer(RegexLexer): 'with-syntax-table', 'with-temp-buffer', 'with-temp-file', 'with-temp-message', 'with-timeout', 'with-tramp-connection-property', 'with-tramp-file-property', 'with-tramp-progress-reporter', - 'with-wrapper-hook', 'load-time-value', 'locally', 'macrolet', 'progv', 'return-from' + 'with-wrapper-hook', 'load-time-value', 'locally', 'macrolet', 'progv', + 'return-from', )) special_forms = set(( @@ -2066,8 +2067,8 @@ class EmacsLispLexer(RegexLexer): # decimal numbers (r'[-+]?\d+\.?' + terminated, Number.Integer), (r'[-+]?\d+/\d+' + terminated, Number), - (r'[-+]?(\d*\.\d+([defls][-+]?\d+)?|\d+(\.\d*)?[defls][-+]?\d+)' - + terminated, Number.Float), + (r'[-+]?(\d*\.\d+([defls][-+]?\d+)?|\d+(\.\d*)?[defls][-+]?\d+)' + + terminated, Number.Float), # vectors (r'\[|\]', Punctuation), @@ -2121,3 +2122,244 @@ class EmacsLispLexer(RegexLexer): (r'"', String, '#pop'), ], } + + +class ShenLexer(RegexLexer): + """ + Lexer for `Shen <http://shenlanguage.org/>`_ source code. + + .. versionadded:: 2.1 + """ + name = 'Shen' + aliases = ['shen'] + filenames = ['*.shen'] + mimetypes = ['text/x-shen', 'application/x-shen'] + + DECLARATIONS = re.findall(r'\S+', """ + datatype define defmacro defprolog defcc synonyms declare package + type function + """) + + SPECIAL_FORMS = re.findall(r'\S+', """ + lambda get let if cases cond put time freeze value load $ + protect or and not do output prolog? trap-error error + make-string /. set @p @s @v + """) + + BUILTINS = re.findall(r'\S+', """ + == = * + - / < > >= <= <-address <-vector abort absvector + absvector? address-> adjoin append arity assoc bind boolean? + bound? call cd close cn compile concat cons cons? cut destroy + difference element? empty? enable-type-theory error-to-string + eval eval-kl exception explode external fail fail-if file + findall fix fst fwhen gensym get-time hash hd hdstr hdv head + identical implementation in include include-all-but inferences + input input+ integer? intern intersection is kill language + length limit lineread loaded macro macroexpand map mapcan + maxinferences mode n->string nl nth null number? occurrences + occurs-check open os out port porters pos pr preclude + preclude-all-but print profile profile-results ps quit read + read+ read-byte read-file read-file-as-bytelist + read-file-as-string read-from-string release remove return + reverse run save set simple-error snd specialise spy step + stinput stoutput str string->n string->symbol string? subst + symbol? systemf tail tc tc? thaw tl tlstr tlv track tuple? + undefmacro unify unify! union unprofile unspecialise untrack + variable? vector vector-> vector? verified version warn when + write-byte write-to-file y-or-n? + """) + + BUILTINS_ANYWHERE = re.findall(r'\S+', """ + where skip >> _ ! <e> <!> + """) + + MAPPINGS = dict((s, Keyword) for s in DECLARATIONS) + MAPPINGS.update((s, Name.Builtin) for s in BUILTINS) + MAPPINGS.update((s, Keyword) for s in SPECIAL_FORMS) + + valid_symbol_chars = r'[\w!$%*+,<=>?/.\'@&#:_-]' + valid_name = '%s+' % valid_symbol_chars + symbol_name = r'[a-z!$%%*+,<=>?/.\'@&#_-]%s*' % valid_symbol_chars + variable = r'[A-Z]%s*' % valid_symbol_chars + + tokens = { + 'string': [ + (r'"', String, '#pop'), + (r'c#\d{1,3};', String.Escape), + (r'~[ARS%]', String.Interpol), + (r'(?s).', String), + ], + + 'root': [ + (r'(?s)\\\*.*?\*\\', Comment.Multiline), # \* ... *\ + (r'\\\\.*', Comment.Single), # \\ ... + (r'\s+', Text), + (r'_{5,}', Punctuation), + (r'={5,}', Punctuation), + (r'(;|:=|\||--?>|<--?)', Punctuation), + (r'(:-|:|\{|\})', Literal), + (r'[+-]*\d*\.\d+(e[+-]?\d+)?', Number.Float), + (r'[+-]*\d+', Number.Integer), + (r'"', String, 'string'), + (variable, Name.Variable), + (r'(true|false|<>|\[\])', Keyword.Pseudo), + (symbol_name, Literal), + (r'(\[|\]|\(|\))', Punctuation), + ], + } + + def get_tokens_unprocessed(self, text): + tokens = RegexLexer.get_tokens_unprocessed(self, text) + tokens = self._process_symbols(tokens) + tokens = self._process_declarations(tokens) + return tokens + + def _relevant(self, token): + return token not in (Text, Comment.Single, Comment.Multiline) + + def _process_declarations(self, tokens): + opening_paren = False + for index, token, value in tokens: + yield index, token, value + if self._relevant(token): + if opening_paren and token == Keyword and value in self.DECLARATIONS: + declaration = value + for index, token, value in \ + self._process_declaration(declaration, tokens): + yield index, token, value + opening_paren = value == '(' and token == Punctuation + + def _process_symbols(self, tokens): + opening_paren = False + for index, token, value in tokens: + if opening_paren and token in (Literal, Name.Variable): + token = self.MAPPINGS.get(value, Name.Function) + elif token == Literal and value in self.BUILTINS_ANYWHERE: + token = Name.Builtin + opening_paren = value == '(' and token == Punctuation + yield index, token, value + + def _process_declaration(self, declaration, tokens): + for index, token, value in tokens: + if self._relevant(token): + break + yield index, token, value + + if declaration == 'datatype': + prev_was_colon = False + token = Keyword.Type if token == Literal else token + yield index, token, value + for index, token, value in tokens: + if prev_was_colon and token == Literal: + token = Keyword.Type + yield index, token, value + if self._relevant(token): + prev_was_colon = token == Literal and value == ':' + elif declaration == 'package': + token = Name.Namespace if token == Literal else token + yield index, token, value + elif declaration == 'define': + token = Name.Function if token == Literal else token + yield index, token, value + for index, token, value in tokens: + if self._relevant(token): + break + yield index, token, value + if value == '{' and token == Literal: + yield index, Punctuation, value + for index, token, value in self._process_signature(tokens): + yield index, token, value + else: + yield index, token, value + else: + token = Name.Function if token == Literal else token + yield index, token, value + + raise StopIteration + + def _process_signature(self, tokens): + for index, token, value in tokens: + if token == Literal and value == '}': + yield index, Punctuation, value + raise StopIteration + elif token in (Literal, Name.Function): + token = Name.Variable if value.istitle() else Keyword.Type + yield index, token, value + + +class CPSALexer(SchemeLexer): + """ + A CPSA lexer based on the CPSA language as of version 2.2.12 + + .. versionadded:: 2.1 + """ + name = 'CPSA' + aliases = ['cpsa'] + filenames = ['*.cpsa'] + mimetypes = [] + + # list of known keywords and builtins taken form vim 6.4 scheme.vim + # syntax file. + _keywords = ( + 'herald', 'vars', 'defmacro', 'include', 'defprotocol', 'defrole', + 'defskeleton', 'defstrand', 'deflistener', 'non-orig', 'uniq-orig', + 'pen-non-orig', 'precedes', 'trace', 'send', 'recv', 'name', 'text', + 'skey', 'akey', 'data', 'mesg', + ) + _builtins = ( + 'cat', 'enc', 'hash', 'privk', 'pubk', 'invk', 'ltk', 'gen', 'exp', + ) + + # valid names for identifiers + # well, names can only not consist fully of numbers + # but this should be good enough for now + valid_name = r'[a-zA-Z0-9!$%&*+,/:<=>?@^_~|-]+' + + tokens = { + 'root': [ + # the comments - always starting with semicolon + # and going to the end of the line + (r';.*$', Comment.Single), + + # whitespaces - usually not relevant + (r'\s+', Text), + + # numbers + (r'-?\d+\.\d+', Number.Float), + (r'-?\d+', Number.Integer), + # support for uncommon kinds of numbers - + # have to figure out what the characters mean + # (r'(#e|#i|#b|#o|#d|#x)[\d.]+', Number), + + # strings, symbols and characters + (r'"(\\\\|\\"|[^"])*"', String), + (r"'" + valid_name, String.Symbol), + (r"#\\([()/'\"._!§$%& ?=+-]{1}|[a-zA-Z0-9]+)", String.Char), + + # constants + (r'(#t|#f)', Name.Constant), + + # special operators + (r"('|#|`|,@|,|\.)", Operator), + + # highlight the keywords + (words(_keywords, suffix=r'\b'), Keyword), + + # first variable in a quoted string like + # '(this is syntactic sugar) + (r"(?<='\()" + valid_name, Name.Variable), + (r"(?<=#\()" + valid_name, Name.Variable), + + # highlight the builtins + (words(_builtins, prefix=r'(?<=\()', suffix=r'\b'), Name.Builtin), + + # the remaining functions + (r'(?<=\()' + valid_name, Name.Function), + # find the remaining variables + (valid_name, Name.Variable), + + # the famous parentheses! + (r'(\(|\))', Punctuation), + (r'(\[|\])', Punctuation), + ], + } diff --git a/pygments/lexers/make.py b/pygments/lexers/make.py index 473b1aff..f5eac127 100644 --- a/pygments/lexers/make.py +++ b/pygments/lexers/make.py @@ -173,6 +173,7 @@ class CMakeLexer(RegexLexer): (r'\(', Punctuation, '#push'), (r'\)', Punctuation, '#pop'), (r'(\$\{)(.+?)(\})', bygroups(Operator, Name.Variable, Operator)), + (r'(\$ENV\{)(.+?)(\})', bygroups(Operator, Name.Variable, Operator)), (r'(\$<)(.+?)(>)', bygroups(Operator, Name.Variable, Operator)), (r'(?s)".*?"', String.Double), (r'\\\S+', String), diff --git a/pygments/lexers/modeling.py b/pygments/lexers/modeling.py index ec99543f..a6b0cb77 100644 --- a/pygments/lexers/modeling.py +++ b/pygments/lexers/modeling.py @@ -284,8 +284,8 @@ class StanLexer(RegexLexer): """Pygments Lexer for Stan models. The Stan modeling language is specified in the *Stan Modeling Language - User's Guide and Reference Manual, v2.7.0*, - `pdf <https://github.com/stan-dev/stan/releases/download/v2.7.0/stan-reference-2.7.0.pdf>`__. + User's Guide and Reference Manual, v2.8.0*, + `pdf <https://github.com/stan-dev/stan/releases/download/v2.8.8/stan-reference-2.8.0.pdf>`__. .. versionadded:: 1.6 """ @@ -332,6 +332,8 @@ class StanLexer(RegexLexer): # Special names ending in __, like lp__ (r'[A-Za-z]\w*__\b', Name.Builtin.Pseudo), (r'(%s)\b' % r'|'.join(_stan_builtins.RESERVED), Keyword.Reserved), + # user-defined functions + (r'[A-Za-z]\w*(?=\s*\()]', Name.Function), # Regular variable names (r'[A-Za-z]\w*\b', Name), # Real Literals diff --git a/pygments/lexers/modula2.py b/pygments/lexers/modula2.py index d32bb5bb..a5fcbf78 100644 --- a/pygments/lexers/modula2.py +++ b/pygments/lexers/modula2.py @@ -77,20 +77,20 @@ class Modula2Lexer(RegexLexer): A dialect option may be embedded in a source file in form of a dialect tag, a specially formatted comment that specifies a dialect option. - Dialect Tag EBNF: + Dialect Tag EBNF:: - dialectTag : - OpeningCommentDelim Prefix dialectOption ClosingCommentDelim ; + dialectTag : + OpeningCommentDelim Prefix dialectOption ClosingCommentDelim ; - dialectOption : - 'm2pim' | 'm2iso' | 'm2r10' | 'objm2' | - 'm2iso+aglet' | 'm2pim+gm2' | 'm2iso+p1' | 'm2iso+xds' ; + dialectOption : + 'm2pim' | 'm2iso' | 'm2r10' | 'objm2' | + 'm2iso+aglet' | 'm2pim+gm2' | 'm2iso+p1' | 'm2iso+xds' ; - Prefix : '!' ; + Prefix : '!' ; - OpeningCommentDelim : '(*' ; + OpeningCommentDelim : '(*' ; - ClosingCommentDelim : '*)' ; + ClosingCommentDelim : '*)' ; No whitespace is permitted between the tokens of a dialect tag. @@ -103,9 +103,9 @@ class Modula2Lexer(RegexLexer): Examples: - `(*!m2r10*) DEFINITION MODULE Foobar; ...` + ``(*!m2r10*) DEFINITION MODULE Foobar; ...`` Use Modula2 R10 dialect to render this source file. - `(*!m2pim+gm2*) DEFINITION MODULE Bazbam; ...` + ``(*!m2pim+gm2*) DEFINITION MODULE Bazbam; ...`` Use PIM dialect with GNU extensions to render this source file. @@ -128,7 +128,7 @@ class Modula2Lexer(RegexLexer): Example: - `$ pygmentize -O full,style=algol -f latex -o /path/to/output /path/to/input` + ``$ pygmentize -O full,style=algol -f latex -o /path/to/output /path/to/input`` Render input file in Algol publication mode to LaTeX output. @@ -151,7 +151,7 @@ class Modula2Lexer(RegexLexer): Example: - `$ pygmentize -O full,dialect=m2r10,treat_stdlib_adts_as_builtins=Off ...` + ``$ pygmentize -O full,dialect=m2r10,treat_stdlib_adts_as_builtins=Off ...`` Render standard library ADTs as ordinary library types. .. versionadded:: 1.3 @@ -203,14 +203,14 @@ class Modula2Lexer(RegexLexer): 'plain_number_literals': [ # # Base-10, real number with exponent - (r'[0-9]+(\'[0-9]+)*' # integral part \ - r'\.[0-9]+(\'[0-9]+)*' # fractional part \ - r'[eE][+-]?[0-9]+(\'[0-9]+)*', # exponent \ + (r'[0-9]+(\'[0-9]+)*' # integral part + r'\.[0-9]+(\'[0-9]+)*' # fractional part + r'[eE][+-]?[0-9]+(\'[0-9]+)*', # exponent Number.Float), # # Base-10, real number without exponent - (r'[0-9]+(\'[0-9]+)*' # integral part \ - r'\.[0-9]+(\'[0-9]+)*', # fractional part \ + (r'[0-9]+(\'[0-9]+)*' # integral part + r'\.[0-9]+(\'[0-9]+)*', # fractional part Number.Float), # # Base-10, whole number @@ -235,52 +235,52 @@ class Modula2Lexer(RegexLexer): # Dot Product Operator (r'\*\.', Operator), # Array Concatenation Operator - (r'\+>', Operator), # M2R10 + ObjM2 + (r'\+>', Operator), # M2R10 + ObjM2 # Inequality Operator - (r'<>', Operator), # ISO + PIM + (r'<>', Operator), # ISO + PIM # Less-Or-Equal, Subset (r'<=', Operator), # Greater-Or-Equal, Superset (r'>=', Operator), # Identity Operator - (r'==', Operator), # M2R10 + ObjM2 + (r'==', Operator), # M2R10 + ObjM2 # Type Conversion Operator - (r'::', Operator), # M2R10 + ObjM2 + (r'::', Operator), # M2R10 + ObjM2 # Assignment Symbol (r':=', Operator), # Postfix Increment Mutator - (r'\+\+', Operator), # M2R10 + ObjM2 + (r'\+\+', Operator), # M2R10 + ObjM2 # Postfix Decrement Mutator - (r'--', Operator), # M2R10 + ObjM2 + (r'--', Operator), # M2R10 + ObjM2 ], 'unigraph_operators': [ # Arithmetic Operators (r'[+-]', Operator), (r'[*/]', Operator), # ISO 80000-2 compliant Set Difference Operator - (r'\\', Operator), # M2R10 + ObjM2 + (r'\\', Operator), # M2R10 + ObjM2 # Relational Operators (r'[=#<>]', Operator), # Dereferencing Operator (r'\^', Operator), # Dereferencing Operator Synonym - (r'@', Operator), # ISO + (r'@', Operator), # ISO # Logical AND Operator Synonym - (r'&', Operator), # PIM + ISO + (r'&', Operator), # PIM + ISO # Logical NOT Operator Synonym - (r'~', Operator), # PIM + ISO + (r'~', Operator), # PIM + ISO # Smalltalk Message Prefix - (r'`', Operator), # ObjM2 + (r'`', Operator), # ObjM2 ], 'digraph_punctuation': [ # Range Constructor (r'\.\.', Punctuation), # Opening Chevron Bracket - (r'<<', Punctuation), # M2R10 + ISO + (r'<<', Punctuation), # M2R10 + ISO # Closing Chevron Bracket - (r'>>', Punctuation), # M2R10 + ISO + (r'>>', Punctuation), # M2R10 + ISO # Blueprint Punctuation - (r'->', Punctuation), # M2R10 + ISO + (r'->', Punctuation), # M2R10 + ISO # Distinguish |# and # in M2 R10 (r'\|#', Punctuation), # Distinguish ## and # in M2 R10 @@ -292,23 +292,23 @@ class Modula2Lexer(RegexLexer): # Common Punctuation (r'[\(\)\[\]{},.:;\|]', Punctuation), # Case Label Separator Synonym - (r'!', Punctuation), # ISO + (r'!', Punctuation), # ISO # Blueprint Punctuation - (r'\?', Punctuation), # M2R10 + ObjM2 + (r'\?', Punctuation), # M2R10 + ObjM2 ], 'comments': [ # Single Line Comment - (r'^//.*?\n', Comment.Single), # M2R10 + ObjM2 + (r'^//.*?\n', Comment.Single), # M2R10 + ObjM2 # Block Comment (r'\(\*([^$].*?)\*\)', Comment.Multiline), # Template Block Comment - (r'/\*(.*?)\*/', Comment.Multiline), # M2R10 + ObjM2 + (r'/\*(.*?)\*/', Comment.Multiline), # M2R10 + ObjM2 ], 'pragmas': [ # ISO Style Pragmas - (r'<\*.*?\*>', Comment.Preproc), # ISO, M2R10 + ObjM2 + (r'<\*.*?\*>', Comment.Preproc), # ISO, M2R10 + ObjM2 # Pascal Style Pragmas - (r'\(\*\$.*?\*\)', Comment.Preproc), # PIM + (r'\(\*\$.*?\*\)', Comment.Preproc), # PIM ], 'root': [ include('whitespace'), @@ -316,8 +316,8 @@ class Modula2Lexer(RegexLexer): include('pragmas'), include('comments'), include('identifiers'), - include('suffixed_number_literals'), # PIM + ISO - include('prefixed_number_literals'), # M2R10 + ObjM2 + include('suffixed_number_literals'), # PIM + ISO + include('prefixed_number_literals'), # M2R10 + ObjM2 include('plain_number_literals'), include('string_literals'), include('digraph_punctuation'), @@ -634,7 +634,7 @@ class Modula2Lexer(RegexLexer): 'CloseOutput', 'ReadString', 'ReadInt', 'ReadCard', 'ReadWrd', 'WriteInt', 'WriteCard', 'WriteOct', 'WriteHex', 'WriteWrd', 'ReadReal', 'WriteReal', 'WriteFixPt', 'WriteRealOct', 'sqrt', 'exp', - 'ln', 'sin', 'cos', 'arctan', 'entier','ALLOCATE', 'DEALLOCATE', + 'ln', 'sin', 'cos', 'arctan', 'entier', 'ALLOCATE', 'DEALLOCATE', ) # PIM Modula-2 Standard Library Variables Dataset @@ -707,7 +707,7 @@ class Modula2Lexer(RegexLexer): 'LongRealIO', 'BCDIO', 'LongBCDIO', 'CardMath', 'LongCardMath', 'IntMath', 'LongIntMath', 'RealMath', 'LongRealMath', 'BCDMath', 'LongBCDMath', 'FileIO', 'FileSystem', 'Storage', 'IOSupport', - ) + ) # Modula-2 R10 Standard Library Types Dataset m2r10_stdlib_type_identifiers = ( @@ -733,7 +733,6 @@ class Modula2Lexer(RegexLexer): # D i a l e c t s - # Dialect modes dialects = ( 'unknown', @@ -746,39 +745,39 @@ class Modula2Lexer(RegexLexer): # Lexemes to Mark as Errors Database lexemes_to_reject_db = { # Lexemes to reject for unknown dialect - 'unknown' : ( + 'unknown': ( # LEAVE THIS EMPTY ), # Lexemes to reject for PIM Modula-2 - 'm2pim' : ( + 'm2pim': ( pim_lexemes_to_reject, ), # Lexemes to reject for ISO Modula-2 - 'm2iso' : ( + 'm2iso': ( iso_lexemes_to_reject, ), # Lexemes to reject for Modula-2 R10 - 'm2r10' : ( + 'm2r10': ( m2r10_lexemes_to_reject, ), # Lexemes to reject for Objective Modula-2 - 'objm2' : ( + 'objm2': ( objm2_lexemes_to_reject, ), # Lexemes to reject for Aglet Modula-2 - 'm2iso+aglet' : ( + 'm2iso+aglet': ( iso_lexemes_to_reject, ), # Lexemes to reject for GNU Modula-2 - 'm2pim+gm2' : ( + 'm2pim+gm2': ( pim_lexemes_to_reject, ), # Lexemes to reject for p1 Modula-2 - 'm2iso+p1' : ( + 'm2iso+p1': ( iso_lexemes_to_reject, ), # Lexemes to reject for XDS Modula-2 - 'm2iso+xds' : ( + 'm2iso+xds': ( iso_lexemes_to_reject, ), } @@ -786,7 +785,7 @@ class Modula2Lexer(RegexLexer): # Reserved Words Database reserved_words_db = { # Reserved words for unknown dialect - 'unknown' : ( + 'unknown': ( common_reserved_words, pim_additional_reserved_words, iso_additional_reserved_words, @@ -794,53 +793,53 @@ class Modula2Lexer(RegexLexer): ), # Reserved words for PIM Modula-2 - 'm2pim' : ( + 'm2pim': ( common_reserved_words, pim_additional_reserved_words, ), # Reserved words for Modula-2 R10 - 'm2iso' : ( + 'm2iso': ( common_reserved_words, iso_additional_reserved_words, ), # Reserved words for ISO Modula-2 - 'm2r10' : ( + 'm2r10': ( common_reserved_words, m2r10_additional_reserved_words, ), # Reserved words for Objective Modula-2 - 'objm2' : ( + 'objm2': ( common_reserved_words, m2r10_additional_reserved_words, objm2_additional_reserved_words, ), # Reserved words for Aglet Modula-2 Extensions - 'm2iso+aglet' : ( + 'm2iso+aglet': ( common_reserved_words, iso_additional_reserved_words, aglet_additional_reserved_words, ), # Reserved words for GNU Modula-2 Extensions - 'm2pim+gm2' : ( + 'm2pim+gm2': ( common_reserved_words, pim_additional_reserved_words, gm2_additional_reserved_words, ), # Reserved words for p1 Modula-2 Extensions - 'm2iso+p1' : ( + 'm2iso+p1': ( common_reserved_words, iso_additional_reserved_words, p1_additional_reserved_words, ), # Reserved words for XDS Modula-2 Extensions - 'm2iso+xds' : ( + 'm2iso+xds': ( common_reserved_words, iso_additional_reserved_words, xds_additional_reserved_words, @@ -850,7 +849,7 @@ class Modula2Lexer(RegexLexer): # Builtins Database builtins_db = { # Builtins for unknown dialect - 'unknown' : ( + 'unknown': ( common_builtins, pim_additional_builtins, iso_additional_builtins, @@ -858,53 +857,53 @@ class Modula2Lexer(RegexLexer): ), # Builtins for PIM Modula-2 - 'm2pim' : ( + 'm2pim': ( common_builtins, pim_additional_builtins, ), # Builtins for ISO Modula-2 - 'm2iso' : ( + 'm2iso': ( common_builtins, iso_additional_builtins, ), # Builtins for ISO Modula-2 - 'm2r10' : ( + 'm2r10': ( common_builtins, m2r10_additional_builtins, ), # Builtins for Objective Modula-2 - 'objm2' : ( + 'objm2': ( common_builtins, m2r10_additional_builtins, objm2_additional_builtins, ), # Builtins for Aglet Modula-2 Extensions - 'm2iso+aglet' : ( + 'm2iso+aglet': ( common_builtins, iso_additional_builtins, aglet_additional_builtins, ), # Builtins for GNU Modula-2 Extensions - 'm2pim+gm2' : ( + 'm2pim+gm2': ( common_builtins, pim_additional_builtins, gm2_additional_builtins, ), # Builtins for p1 Modula-2 Extensions - 'm2iso+p1' : ( + 'm2iso+p1': ( common_builtins, iso_additional_builtins, p1_additional_builtins, ), # Builtins for XDS Modula-2 Extensions - 'm2iso+xds' : ( + 'm2iso+xds': ( common_builtins, iso_additional_builtins, xds_additional_builtins, @@ -914,7 +913,7 @@ class Modula2Lexer(RegexLexer): # Pseudo-Module Builtins Database pseudo_builtins_db = { # Builtins for unknown dialect - 'unknown' : ( + 'unknown': ( common_pseudo_builtins, pim_additional_pseudo_builtins, iso_additional_pseudo_builtins, @@ -922,53 +921,53 @@ class Modula2Lexer(RegexLexer): ), # Builtins for PIM Modula-2 - 'm2pim' : ( + 'm2pim': ( common_pseudo_builtins, pim_additional_pseudo_builtins, ), # Builtins for ISO Modula-2 - 'm2iso' : ( + 'm2iso': ( common_pseudo_builtins, iso_additional_pseudo_builtins, ), # Builtins for ISO Modula-2 - 'm2r10' : ( + 'm2r10': ( common_pseudo_builtins, m2r10_additional_pseudo_builtins, ), # Builtins for Objective Modula-2 - 'objm2' : ( + 'objm2': ( common_pseudo_builtins, m2r10_additional_pseudo_builtins, objm2_additional_pseudo_builtins, ), # Builtins for Aglet Modula-2 Extensions - 'm2iso+aglet' : ( + 'm2iso+aglet': ( common_pseudo_builtins, iso_additional_pseudo_builtins, aglet_additional_pseudo_builtins, ), # Builtins for GNU Modula-2 Extensions - 'm2pim+gm2' : ( + 'm2pim+gm2': ( common_pseudo_builtins, pim_additional_pseudo_builtins, gm2_additional_pseudo_builtins, ), # Builtins for p1 Modula-2 Extensions - 'm2iso+p1' : ( + 'm2iso+p1': ( common_pseudo_builtins, iso_additional_pseudo_builtins, p1_additional_pseudo_builtins, ), # Builtins for XDS Modula-2 Extensions - 'm2iso+xds' : ( + 'm2iso+xds': ( common_pseudo_builtins, iso_additional_pseudo_builtins, xds_additional_pseudo_builtins, @@ -978,46 +977,46 @@ class Modula2Lexer(RegexLexer): # Standard Library ADTs Database stdlib_adts_db = { # Empty entry for unknown dialect - 'unknown' : ( + 'unknown': ( # LEAVE THIS EMPTY ), # Standard Library ADTs for PIM Modula-2 - 'm2pim' : ( + 'm2pim': ( # No first class library types ), # Standard Library ADTs for ISO Modula-2 - 'm2iso' : ( + 'm2iso': ( # No first class library types ), # Standard Library ADTs for Modula-2 R10 - 'm2r10' : ( + 'm2r10': ( m2r10_stdlib_adt_identifiers, ), # Standard Library ADTs for Objective Modula-2 - 'objm2' : ( + 'objm2': ( m2r10_stdlib_adt_identifiers, ), # Standard Library ADTs for Aglet Modula-2 - 'm2iso+aglet' : ( + 'm2iso+aglet': ( # No first class library types ), # Standard Library ADTs for GNU Modula-2 - 'm2pim+gm2' : ( + 'm2pim+gm2': ( # No first class library types ), # Standard Library ADTs for p1 Modula-2 - 'm2iso+p1' : ( + 'm2iso+p1': ( # No first class library types ), # Standard Library ADTs for XDS Modula-2 - 'm2iso+xds' : ( + 'm2iso+xds': ( # No first class library types ), } @@ -1025,49 +1024,49 @@ class Modula2Lexer(RegexLexer): # Standard Library Modules Database stdlib_modules_db = { # Empty entry for unknown dialect - 'unknown' : ( + 'unknown': ( # LEAVE THIS EMPTY ), # Standard Library Modules for PIM Modula-2 - 'm2pim' : ( + 'm2pim': ( pim_stdlib_module_identifiers, ), # Standard Library Modules for ISO Modula-2 - 'm2iso' : ( + 'm2iso': ( iso_stdlib_module_identifiers, ), # Standard Library Modules for Modula-2 R10 - 'm2r10' : ( + 'm2r10': ( m2r10_stdlib_blueprint_identifiers, m2r10_stdlib_module_identifiers, m2r10_stdlib_adt_identifiers, ), # Standard Library Modules for Objective Modula-2 - 'objm2' : ( + 'objm2': ( m2r10_stdlib_blueprint_identifiers, m2r10_stdlib_module_identifiers, ), # Standard Library Modules for Aglet Modula-2 - 'm2iso+aglet' : ( + 'm2iso+aglet': ( iso_stdlib_module_identifiers, ), # Standard Library Modules for GNU Modula-2 - 'm2pim+gm2' : ( + 'm2pim+gm2': ( pim_stdlib_module_identifiers, ), # Standard Library Modules for p1 Modula-2 - 'm2iso+p1' : ( + 'm2iso+p1': ( iso_stdlib_module_identifiers, ), # Standard Library Modules for XDS Modula-2 - 'm2iso+xds' : ( + 'm2iso+xds': ( iso_stdlib_module_identifiers, ), } @@ -1075,46 +1074,46 @@ class Modula2Lexer(RegexLexer): # Standard Library Types Database stdlib_types_db = { # Empty entry for unknown dialect - 'unknown' : ( + 'unknown': ( # LEAVE THIS EMPTY ), # Standard Library Types for PIM Modula-2 - 'm2pim' : ( + 'm2pim': ( pim_stdlib_type_identifiers, ), # Standard Library Types for ISO Modula-2 - 'm2iso' : ( + 'm2iso': ( iso_stdlib_type_identifiers, ), # Standard Library Types for Modula-2 R10 - 'm2r10' : ( + 'm2r10': ( m2r10_stdlib_type_identifiers, ), # Standard Library Types for Objective Modula-2 - 'objm2' : ( + 'objm2': ( m2r10_stdlib_type_identifiers, ), # Standard Library Types for Aglet Modula-2 - 'm2iso+aglet' : ( + 'm2iso+aglet': ( iso_stdlib_type_identifiers, ), # Standard Library Types for GNU Modula-2 - 'm2pim+gm2' : ( + 'm2pim+gm2': ( pim_stdlib_type_identifiers, ), # Standard Library Types for p1 Modula-2 - 'm2iso+p1' : ( + 'm2iso+p1': ( iso_stdlib_type_identifiers, ), # Standard Library Types for XDS Modula-2 - 'm2iso+xds' : ( + 'm2iso+xds': ( iso_stdlib_type_identifiers, ), } @@ -1122,46 +1121,46 @@ class Modula2Lexer(RegexLexer): # Standard Library Procedures Database stdlib_procedures_db = { # Empty entry for unknown dialect - 'unknown' : ( + 'unknown': ( # LEAVE THIS EMPTY ), # Standard Library Procedures for PIM Modula-2 - 'm2pim' : ( + 'm2pim': ( pim_stdlib_proc_identifiers, ), # Standard Library Procedures for ISO Modula-2 - 'm2iso' : ( + 'm2iso': ( iso_stdlib_proc_identifiers, ), # Standard Library Procedures for Modula-2 R10 - 'm2r10' : ( + 'm2r10': ( m2r10_stdlib_proc_identifiers, ), # Standard Library Procedures for Objective Modula-2 - 'objm2' : ( + 'objm2': ( m2r10_stdlib_proc_identifiers, ), # Standard Library Procedures for Aglet Modula-2 - 'm2iso+aglet' : ( + 'm2iso+aglet': ( iso_stdlib_proc_identifiers, ), # Standard Library Procedures for GNU Modula-2 - 'm2pim+gm2' : ( + 'm2pim+gm2': ( pim_stdlib_proc_identifiers, ), # Standard Library Procedures for p1 Modula-2 - 'm2iso+p1' : ( + 'm2iso+p1': ( iso_stdlib_proc_identifiers, ), # Standard Library Procedures for XDS Modula-2 - 'm2iso+xds' : ( + 'm2iso+xds': ( iso_stdlib_proc_identifiers, ), } @@ -1169,46 +1168,46 @@ class Modula2Lexer(RegexLexer): # Standard Library Variables Database stdlib_variables_db = { # Empty entry for unknown dialect - 'unknown' : ( + 'unknown': ( # LEAVE THIS EMPTY ), # Standard Library Variables for PIM Modula-2 - 'm2pim' : ( + 'm2pim': ( pim_stdlib_var_identifiers, ), # Standard Library Variables for ISO Modula-2 - 'm2iso' : ( + 'm2iso': ( iso_stdlib_var_identifiers, ), # Standard Library Variables for Modula-2 R10 - 'm2r10' : ( + 'm2r10': ( m2r10_stdlib_var_identifiers, ), # Standard Library Variables for Objective Modula-2 - 'objm2' : ( + 'objm2': ( m2r10_stdlib_var_identifiers, ), # Standard Library Variables for Aglet Modula-2 - 'm2iso+aglet' : ( + 'm2iso+aglet': ( iso_stdlib_var_identifiers, ), # Standard Library Variables for GNU Modula-2 - 'm2pim+gm2' : ( + 'm2pim+gm2': ( pim_stdlib_var_identifiers, ), # Standard Library Variables for p1 Modula-2 - 'm2iso+p1' : ( + 'm2iso+p1': ( iso_stdlib_var_identifiers, ), # Standard Library Variables for XDS Modula-2 - 'm2iso+xds' : ( + 'm2iso+xds': ( iso_stdlib_var_identifiers, ), } @@ -1216,46 +1215,46 @@ class Modula2Lexer(RegexLexer): # Standard Library Constants Database stdlib_constants_db = { # Empty entry for unknown dialect - 'unknown' : ( + 'unknown': ( # LEAVE THIS EMPTY ), # Standard Library Constants for PIM Modula-2 - 'm2pim' : ( + 'm2pim': ( pim_stdlib_const_identifiers, ), # Standard Library Constants for ISO Modula-2 - 'm2iso' : ( + 'm2iso': ( iso_stdlib_const_identifiers, ), # Standard Library Constants for Modula-2 R10 - 'm2r10' : ( + 'm2r10': ( m2r10_stdlib_const_identifiers, ), # Standard Library Constants for Objective Modula-2 - 'objm2' : ( + 'objm2': ( m2r10_stdlib_const_identifiers, ), # Standard Library Constants for Aglet Modula-2 - 'm2iso+aglet' : ( + 'm2iso+aglet': ( iso_stdlib_const_identifiers, ), # Standard Library Constants for GNU Modula-2 - 'm2pim+gm2' : ( + 'm2pim+gm2': ( pim_stdlib_const_identifiers, ), # Standard Library Constants for p1 Modula-2 - 'm2iso+p1' : ( + 'm2iso+p1': ( iso_stdlib_const_identifiers, ), # Standard Library Constants for XDS Modula-2 - 'm2iso+xds' : ( + 'm2iso+xds': ( iso_stdlib_const_identifiers, ), } @@ -1265,10 +1264,6 @@ class Modula2Lexer(RegexLexer): # initialise a lexer instance def __init__(self, **options): # - # Alias for unknown dialect - global UNKNOWN - UNKNOWN = self.dialects[0] - # # check dialect options # dialects = get_list_opt(options, 'dialect', []) @@ -1281,8 +1276,8 @@ class Modula2Lexer(RegexLexer): # # Fallback Mode (DEFAULT) else: - # no valid dialect option - self.set_dialect(UNKNOWN) + # no valid dialect option + self.set_dialect('unknown') # self.dialect_set_by_tag = False # @@ -1298,8 +1293,8 @@ class Modula2Lexer(RegexLexer): # # Check option flags # - self.treat_stdlib_adts_as_builtins = \ - get_bool_opt(options, 'treat_stdlib_adts_as_builtins', True) + self.treat_stdlib_adts_as_builtins = get_bool_opt( + options, 'treat_stdlib_adts_as_builtins', True) # # call superclass initialiser RegexLexer.__init__(self, **options) @@ -1307,12 +1302,12 @@ class Modula2Lexer(RegexLexer): # Set lexer to a specified dialect def set_dialect(self, dialect_id): # - #if __debug__: + # if __debug__: # print 'entered set_dialect with arg: ', dialect_id # # check dialect name against known dialects if dialect_id not in self.dialects: - dialect = UNKNOWN # default + dialect = 'unknown' # default else: dialect = dialect_id # @@ -1389,7 +1384,7 @@ class Modula2Lexer(RegexLexer): self.variables = variables_set self.constants = constants_set # - #if __debug__: + # if __debug__: # print 'exiting set_dialect' # print ' self.dialect: ', self.dialect # print ' self.lexemes_to_reject: ', self.lexemes_to_reject @@ -1409,7 +1404,7 @@ class Modula2Lexer(RegexLexer): # matching name is returned, otherwise dialect id 'unknown' is returned def get_dialect_from_dialect_tag(self, dialect_tag): # - #if __debug__: + # if __debug__: # print 'entered get_dialect_from_dialect_tag with arg: ', dialect_tag # # constants @@ -1422,37 +1417,37 @@ class Modula2Lexer(RegexLexer): # # check comment string for dialect indicator if len(dialect_tag) > (left_tag_delim_len + right_tag_delim_len) \ - and dialect_tag.startswith(left_tag_delim) \ - and dialect_tag.endswith(right_tag_delim): + and dialect_tag.startswith(left_tag_delim) \ + and dialect_tag.endswith(right_tag_delim): # - #if __debug__: + # if __debug__: # print 'dialect tag found' # # extract dialect indicator indicator = dialect_tag[indicator_start:indicator_end] # - #if __debug__: + # if __debug__: # print 'extracted: ', indicator # # check against known dialects for index in range(1, len(self.dialects)): # - #if __debug__: + # if __debug__: # print 'dialects[', index, ']: ', self.dialects[index] # if indicator == self.dialects[index]: # - #if __debug__: + # if __debug__: # print 'matching dialect found' # # indicator matches known dialect return indicator else: # indicator does not match any dialect - return UNKNOWN # default + return 'unknown' # default else: # invalid indicator string - return UNKNOWN # default + return 'unknown' # default # intercept the token stream, modify token attributes and return them def get_tokens_unprocessed(self, text): @@ -1461,7 +1456,7 @@ class Modula2Lexer(RegexLexer): # check for dialect tag if dialect has not been set by tag if not self.dialect_set_by_tag and token == Comment.Special: indicated_dialect = self.get_dialect_from_dialect_tag(value) - if indicated_dialect != UNKNOWN: + if indicated_dialect != 'unknown': # token is a dialect indicator # reset reserved words and builtins self.set_dialect(indicated_dialect) @@ -1510,7 +1505,7 @@ class Modula2Lexer(RegexLexer): elif token in Number: # # mark prefix number literals as error for PIM and ISO dialects - if self.dialect not in (UNKNOWN, 'm2r10', 'objm2'): + if self.dialect not in ('unknown', 'm2r10', 'objm2'): if "'" in value or value[0:2] in ('0b', '0x', '0u'): token = Error # @@ -1529,7 +1524,7 @@ class Modula2Lexer(RegexLexer): # # mark single line comment as error for PIM and ISO dialects if token is Comment.Single: - if self.dialect not in [UNKNOWN, 'm2r10', 'objm2']: + if self.dialect not in ('unknown', 'm2r10', 'objm2'): token = Error # if token is Comment.Preproc: @@ -1539,11 +1534,11 @@ class Modula2Lexer(RegexLexer): token = Error # mark PIM pragma as comment for other dialects elif value.startswith('(*$') and \ - self.dialect != UNKNOWN and \ - not self.dialect.startswith('m2pim'): + self.dialect != 'unknown' and \ + not self.dialect.startswith('m2pim'): token = Comment.Multiline # - else: # token is neither Name nor Comment + else: # token is neither Name nor Comment # # mark lexemes matching the dialect's error token set as errors if value in self.lexemes_to_reject: diff --git a/pygments/lexers/oberon.py b/pygments/lexers/oberon.py new file mode 100644 index 00000000..db18259d --- /dev/null +++ b/pygments/lexers/oberon.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.oberon + ~~~~~~~~~~~~~~~~~~~~~~ + + Lexers for Oberon family languages. + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re + +from pygments.lexer import RegexLexer, include, words +from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ + Number, Punctuation + +__all__ = ['ComponentPascalLexer'] + + +class ComponentPascalLexer(RegexLexer): + """ + For `Component Pascal <http://www.oberon.ch/pdf/CP-Lang.pdf>`_ source code. + + .. versionadded:: 2.1 + """ + name = 'Component Pascal' + aliases = ['componentpascal', 'cp'] + filenames = ['*.cp', '*.cps'] + mimetypes = ['text/x-component-pascal'] + + flags = re.MULTILINE | re.DOTALL + + tokens = { + 'root': [ + include('whitespace'), + include('comments'), + include('punctuation'), + include('numliterals'), + include('strings'), + include('operators'), + include('builtins'), + include('identifiers'), + ], + 'whitespace': [ + (r'\n+', Text), # blank lines + (r'\s+', Text), # whitespace + ], + 'comments': [ + (r'\(\*([^\$].*?)\*\)', Comment.Multiline), + # TODO: nested comments (* (* ... *) ... (* ... *) *) not supported! + ], + 'punctuation': [ + (r'[\(\)\[\]\{\},.:;\|]', Punctuation), + ], + 'numliterals': [ + (r'[0-9A-F]+X\b', Number.Hex), # char code + (r'[0-9A-F]+[HL]\b', Number.Hex), # hexadecimal number + (r'[0-9]+\.[0-9]+E[+-][0-9]+', Number.Float), # real number + (r'[0-9]+\.[0-9]+', Number.Float), # real number + (r'[0-9]+', Number.Integer), # decimal whole number + ], + 'strings': [ + (r"'[^\n']*'", String), # single quoted string + (r'"[^\n"]*"', String), # double quoted string + ], + 'operators': [ + # Arithmetic Operators + (r'[+-]', Operator), + (r'[*/]', Operator), + # Relational Operators + (r'[=#<>]', Operator), + # Dereferencing Operator + (r'\^', Operator), + # Logical AND Operator + (r'&', Operator), + # Logical NOT Operator + (r'~', Operator), + # Assignment Symbol + (r':=', Operator), + # Range Constructor + (r'\.\.', Operator), + (r'\$', Operator), + ], + 'identifiers': [ + (r'([a-zA-Z_\$][\w\$]*)', Name), + ], + 'builtins': [ + (words(( + 'ANYPTR', 'ANYREC', 'BOOLEAN', 'BYTE', 'CHAR', 'INTEGER', 'LONGINT', + 'REAL', 'SET', 'SHORTCHAR', 'SHORTINT', 'SHORTREAL' + ), suffix=r'\b'), Keyword.Type), + (words(( + 'ABS', 'ABSTRACT', 'ARRAY', 'ASH', 'ASSERT', 'BEGIN', 'BITS', 'BY', + 'CAP', 'CASE', 'CHR', 'CLOSE', 'CONST', 'DEC', 'DIV', 'DO', 'ELSE', + 'ELSIF', 'EMPTY', 'END', 'ENTIER', 'EXCL', 'EXIT', 'EXTENSIBLE', 'FOR', + 'HALT', 'IF', 'IMPORT', 'IN', 'INC', 'INCL', 'IS', 'LEN', 'LIMITED', + 'LONG', 'LOOP', 'MAX', 'MIN', 'MOD', 'MODULE', 'NEW', 'ODD', 'OF', + 'OR', 'ORD', 'OUT', 'POINTER', 'PROCEDURE', 'RECORD', 'REPEAT', 'RETURN', + 'SHORT', 'SHORTCHAR', 'SHORTINT', 'SIZE', 'THEN', 'TYPE', 'TO', 'UNTIL', + 'VAR', 'WHILE', 'WITH' + ), suffix=r'\b'), Keyword.Reserved), + (r'(TRUE|FALSE|NIL|INF)\b', Keyword.Constant), + ] + } diff --git a/pygments/lexers/parasail.py b/pygments/lexers/parasail.py new file mode 100644 index 00000000..878f7d26 --- /dev/null +++ b/pygments/lexers/parasail.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.parasail + ~~~~~~~~~~~~~~~~~~~~~~~~ + + Lexer for ParaSail. + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re + +from pygments.lexer import RegexLexer, include +from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ + Number, Punctuation, Literal + +__all__ = ['ParaSailLexer'] + + +class ParaSailLexer(RegexLexer): + """ + For `ParaSail <http://www.parasail-lang.org>`_ source code. + + .. versionadded:: 2.1 + """ + + name = 'ParaSail' + aliases = ['parasail'] + filenames = ['*.psi', '*.psl'] + mimetypes = ['text/x-parasail'] + + flags = re.MULTILINE + + tokens = { + 'root': [ + (r'[^\S\n]+', Text), + (r'//.*?\n', Comment.Single), + (r'\b(and|or|xor)=', Operator.Word), + (r'\b(and(\s+then)?|or(\s+else)?|xor|rem|mod|' + r'(is|not)\s+null)\b', + Operator.Word), + # Keywords + (r'\b(abs|abstract|all|block|class|concurrent|const|continue|' + r'each|end|exit|extends|exports|forward|func|global|implements|' + r'import|in|interface|is|lambda|locked|new|not|null|of|op|' + r'optional|private|queued|ref|return|reverse|separate|some|' + r'type|until|var|with|' + # Control flow + r'if|then|else|elsif|case|for|while|loop)\b', + Keyword.Reserved), + (r'(abstract\s+)?(interface|class|op|func|type)', + Keyword.Declaration), + # Literals + (r'"[^"]*"', String), + (r'\\[\'ntrf"0]', String.Escape), + (r'#[a-zA-Z]\w*', Literal), # Enumeration + include('numbers'), + (r"'[^']'", String.Char), + (r'[a-zA-Z]\w*', Name), + # Operators and Punctuation + (r'(<==|==>|<=>|\*\*=|<\|=|<<=|>>=|==|!=|=\?|<=|>=|' + r'\*\*|<<|>>|=>|:=|\+=|-=|\*=|\||\|=|/=|\+|-|\*|/|' + r'\.\.|<\.\.|\.\.<|<\.\.<)', + Operator), + (r'(<|>|\[|\]|\(|\)|\||:|;|,|.|\{|\}|->)', + Punctuation), + (r'\n+', Text), + ], + 'numbers': [ + (r'\d[0-9_]*#[0-9a-fA-F][0-9a-fA-F_]*#', Number.Hex), # any base + (r'0[xX][0-9a-fA-F][0-9a-fA-F_]*', Number.Hex), # C-like hex + (r'0[bB][01][01_]*', Number.Bin), # C-like bin + (r'\d[0-9_]*\.\d[0-9_]*[eE][+-]\d[0-9_]*', # float exp + Number.Float), + (r'\d[0-9_]*\.\d[0-9_]*', Number.Float), # float + (r'\d[0-9_]*', Number.Integer), # integer + ], + } diff --git a/pygments/lexers/pascal.py b/pygments/lexers/pascal.py index d3ce6a3a..ce991a77 100644 --- a/pygments/lexers/pascal.py +++ b/pygments/lexers/pascal.py @@ -18,6 +18,7 @@ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ Number, Punctuation, Error from pygments.scanner import Scanner +# compatibility import from pygments.lexers.modula2 import Modula2Lexer __all__ = ['DelphiLexer', 'AdaLexer'] @@ -536,11 +537,13 @@ class AdaLexer(RegexLexer): Comment.Preproc)), (r'(true|false|null)\b', Keyword.Constant), (words(( - 'Address', 'Byte', 'Boolean', 'Character', 'Controlled', 'Count', 'Cursor', - 'Duration', 'File_Mode', 'File_Type', 'Float', 'Generator', 'Integer', 'Long_Float', - 'Long_Integer', 'Long_Long_Float', 'Long_Long_Integer', 'Natural', 'Positive', - 'Reference_Type', 'Short_Float', 'Short_Integer', 'Short_Short_Float', - 'Short_Short_Integer', 'String', 'Wide_Character', 'Wide_String'), suffix=r'\b'), + 'Address', 'Byte', 'Boolean', 'Character', 'Controlled', 'Count', + 'Cursor', 'Duration', 'File_Mode', 'File_Type', 'Float', 'Generator', + 'Integer', 'Long_Float', 'Long_Integer', 'Long_Long_Float', + 'Long_Long_Integer', 'Natural', 'Positive', 'Reference_Type', + 'Short_Float', 'Short_Integer', 'Short_Short_Float', + 'Short_Short_Integer', 'String', 'Wide_Character', 'Wide_String'), + suffix=r'\b'), Keyword.Type), (r'(and(\s+then)?|in|mod|not|or(\s+else)|rem)\b', Operator.Word), (r'generic|private', Keyword.Declaration), diff --git a/pygments/lexers/praat.py b/pygments/lexers/praat.py new file mode 100644 index 00000000..776c38b8 --- /dev/null +++ b/pygments/lexers/praat.py @@ -0,0 +1,295 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.praat + ~~~~~~~~~~~~~~~~~~~~~ + + Lexer for Praat + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from pygments.lexer import RegexLexer, words, bygroups, include +from pygments.token import Name, Text, Comment, Keyword, String, Punctuation, Number, \ + Operator + +__all__ = ['PraatLexer'] + + +class PraatLexer(RegexLexer): + """ + For `Praat <http://www.praat.org>`_ scripts. + + .. versionadded:: 2.1 + """ + + name = 'Praat' + aliases = ['praat'] + filenames = ['*.praat', '*.proc', '*.psc'] + + keywords = [ + 'if', 'then', 'else', 'elsif', 'elif', 'endif', 'fi', 'for', 'from', 'to', + 'endfor', 'endproc', 'while', 'endwhile', 'repeat', 'until', 'select', 'plus', + 'minus', 'demo', 'assert', 'stopwatch', 'nocheck', 'nowarn', 'noprogress', + 'editor', 'endeditor', 'clearinfo', + ] + + functions_string = [ + 'backslashTrigraphsToUnicode', 'chooseDirectory', 'chooseReadFile', + 'chooseWriteFile', 'date', 'demoKey', 'do', 'environment', 'extractLine', + 'extractWord', 'fixed', 'info', 'left', 'mid', 'percent', 'readFile', 'replace', + 'replace_regex', 'right', 'selected', 'string', 'unicodeToBackslashTrigraphs', + ] + + functions_numeric = [ + 'abs', 'appendFile', 'appendFileLine', 'appendInfo', 'appendInfoLine', 'arccos', + 'arccosh', 'arcsin', 'arcsinh', 'arctan', 'arctan2', 'arctanh', 'barkToHertz', + 'beginPause', 'beginSendPraat', 'besselI', 'besselK', 'beta', 'beta2', + 'binomialP', 'binomialQ', 'boolean', 'ceiling', 'chiSquareP', 'chiSquareQ', + 'choice', 'comment', 'cos', 'cosh', 'createDirectory', 'deleteFile', + 'demoClicked', 'demoClickedIn', 'demoCommandKeyPressed', + 'demoExtraControlKeyPressed', 'demoInput', 'demoKeyPressed', + 'demoOptionKeyPressed', 'demoShiftKeyPressed', 'demoShow', 'demoWaitForInput', + 'demoWindowTitle', 'demoX', 'demoY', 'differenceLimensToPhon', 'do', 'editor', + 'endPause', 'endSendPraat', 'endsWith', 'erb', 'erbToHertz', 'erf', 'erfc', + 'exitScript', 'exp', 'extractNumber', 'fileReadable', 'fisherP', 'fisherQ', + 'floor', 'gaussP', 'gaussQ', 'hertzToBark', 'hertzToErb', 'hertzToMel', + 'hertzToSemitones', 'imax', 'imin', 'incompleteBeta', 'incompleteGammaP', 'index', + 'index_regex', 'invBinomialP', 'invBinomialQ', 'invChiSquareQ', 'invFisherQ', + 'invGaussQ', 'invSigmoid', 'invStudentQ', 'length', 'ln', 'lnBeta', 'lnGamma', + 'log10', 'log2', 'max', 'melToHertz', 'min', 'minusObject', 'natural', 'number', + 'numberOfColumns', 'numberOfRows', 'numberOfSelected', 'objectsAreIdentical', + 'option', 'optionMenu', 'pauseScript', 'phonToDifferenceLimens', 'plusObject', + 'positive', 'randomBinomial', 'randomGauss', 'randomInteger', 'randomPoisson', + 'randomUniform', 'real', 'readFile', 'removeObject', 'rindex', 'rindex_regex', + 'round', 'runScript', 'runSystem', 'runSystem_nocheck', 'selectObject', + 'selected', 'semitonesToHertz', 'sentencetext', 'sigmoid', 'sin', 'sinc', + 'sincpi', 'sinh', 'soundPressureToPhon', 'sqrt', 'startsWith', 'studentP', + 'studentQ', 'tan', 'tanh', 'variableExists', 'word', 'writeFile', 'writeFileLine', + 'writeInfo', 'writeInfoLine', + ] + + functions_array = [ + 'linear', 'randomGauss', 'randomInteger', 'randomUniform', 'zero', + ] + + objects = [ + 'Activation', 'AffineTransform', 'AmplitudeTier', 'Art', 'Artword', + 'Autosegment', 'BarkFilter', 'BarkSpectrogram', 'CCA', 'Categories', + 'Cepstrogram', 'Cepstrum', 'Cepstrumc', 'ChebyshevSeries', 'ClassificationTable', + 'Cochleagram', 'Collection', 'ComplexSpectrogram', 'Configuration', 'Confusion', + 'ContingencyTable', 'Corpus', 'Correlation', 'Covariance', + 'CrossCorrelationTable', 'CrossCorrelationTables', 'DTW', 'DataModeler', + 'Diagonalizer', 'Discriminant', 'Dissimilarity', 'Distance', 'Distributions', + 'DurationTier', 'EEG', 'ERP', 'ERPTier', 'EditCostsTable', 'EditDistanceTable', + 'Eigen', 'Excitation', 'Excitations', 'ExperimentMFC', 'FFNet', 'FeatureWeights', + 'FileInMemory', 'FilesInMemory', 'Formant', 'FormantFilter', 'FormantGrid', + 'FormantModeler', 'FormantPoint', 'FormantTier', 'GaussianMixture', 'HMM', + 'HMM_Observation', 'HMM_ObservationSequence', 'HMM_State', 'HMM_StateSequence', + 'Harmonicity', 'ISpline', 'Index', 'Intensity', 'IntensityTier', 'IntervalTier', + 'KNN', 'KlattGrid', 'KlattTable', 'LFCC', 'LPC', 'Label', 'LegendreSeries', + 'LinearRegression', 'LogisticRegression', 'LongSound', 'Ltas', 'MFCC', 'MSpline', + 'ManPages', 'Manipulation', 'Matrix', 'MelFilter', 'MelSpectrogram', + 'MixingMatrix', 'Movie', 'Network', 'OTGrammar', 'OTHistory', 'OTMulti', 'PCA', + 'PairDistribution', 'ParamCurve', 'Pattern', 'Permutation', 'Photo', 'Pitch', + 'PitchModeler', 'PitchTier', 'PointProcess', 'Polygon', 'Polynomial', + 'PowerCepstrogram', 'PowerCepstrum', 'Procrustes', 'RealPoint', 'RealTier', + 'ResultsMFC', 'Roots', 'SPINET', 'SSCP', 'SVD', 'Salience', 'ScalarProduct', + 'Similarity', 'SimpleString', 'SortedSetOfString', 'Sound', 'Speaker', + 'Spectrogram', 'Spectrum', 'SpectrumTier', 'SpeechSynthesizer', 'SpellingChecker', + 'Strings', 'StringsIndex', 'Table', 'TableOfReal', 'TextGrid', 'TextInterval', + 'TextPoint', 'TextTier', 'Tier', 'Transition', 'VocalTract', 'VocalTractTier', + 'Weight', 'WordList', + ] + + variables_numeric = [ + 'macintosh', 'windows', 'unix', 'praatVersion', 'pi', 'e', 'undefined', + ] + + variables_string = [ + 'praatVersion', 'tab', 'shellDirectory', 'homeDirectory', + 'preferencesDirectory', 'newline', 'temporaryDirectory', + 'defaultDirectory', + ] + + tokens = { + 'root': [ + (r'(\s+)(#.*?$)', bygroups(Text, Comment.Single)), + (r'^#.*?$', Comment.Single), + (r';[^\n]*', Comment.Single), + (r'\s+', Text), + + (r'\bprocedure\b', Keyword, 'procedure_definition'), + (r'\bcall\b', Keyword, 'procedure_call'), + (r'@', Name.Function, 'procedure_call'), + + include('function_call'), + + (words(keywords, suffix=r'\b'), Keyword), + + (r'(\bform\b)(\s+)([^\n]+)', + bygroups(Keyword, Text, String), 'old_form'), + + (r'(print(?:line|tab)?|echo|exit|asserterror|pause|send(?:praat|socket)|' + r'include|execute|system(?:_nocheck)?)(\s+)', + bygroups(Keyword, Text), 'string_unquoted'), + + (r'(goto|label)(\s+)(\w+)', bygroups(Keyword, Text, Name.Label)), + + include('variable_name'), + include('number'), + + (r'"', String, 'string'), + + (words((objects), suffix=r'(?=\s+\S+\n)'), Name.Class, 'string_unquoted'), + + (r'\b[A-Z]', Keyword, 'command'), + (r'(\.{3}|[)(,])', Punctuation), + ], + 'command': [ + (r'( ?[\w()-]+ ?)', Keyword), + (r"'(?=.*')", String.Interpol, 'string_interpolated'), + (r'\.{3}', Keyword, ('#pop', 'old_arguments')), + (r':', Keyword, ('#pop', 'comma_list')), + (r'[\s\n]', Text, '#pop'), + ], + 'procedure_call': [ + (r'\s+', Text), + (r'([\w.]+)(:|\s*\()', + bygroups(Name.Function, Text), '#pop'), + (r'([\w.]+)', Name.Function, ('#pop', 'old_arguments')), + ], + 'procedure_definition': [ + (r'\s', Text), + (r'([\w.]+)(\s*?[(:])', + bygroups(Name.Function, Text), '#pop'), + (r'([\w.]+)([^\n]*)', + bygroups(Name.Function, Text), '#pop'), + ], + 'function_call': [ + (words(functions_string, suffix=r'\$(?=\s*[:(])'), Name.Function, 'function'), + (words(functions_array, suffix=r'#(?=\s*[:(])'), Name.Function, 'function'), + (words(functions_numeric, suffix=r'(?=\s*[:(])'), Name.Function, 'function'), + ], + 'function': [ + (r'\s+', Text), + (r':', Punctuation, ('#pop', 'comma_list')), + (r'\s*\(', Punctuation, ('#pop', 'comma_list')), + ], + 'comma_list': [ + (r'(\s*\n\s*)(\.{3})', bygroups(Text, Punctuation)), + + (r'(\s*[])\n])', Text, '#pop'), + + (r'\s+', Text), + (r'"', String, 'string'), + (r'\b(if|then|else|fi|endif)\b', Keyword), + + include('function_call'), + include('variable_name'), + include('operator'), + include('number'), + + (r',', Punctuation), + ], + 'old_arguments': [ + (r'\n', Text, '#pop'), + + include('variable_name'), + include('operator'), + include('number'), + + (r'"', String, 'string'), + (r'[^\n]', Text), + ], + 'number': [ + (r'\b\d+(\.\d*)?([eE][-+]?\d+)?%?', Number), + ], + 'object_attributes': [ + (r'\.?(n(col|row)|[xy]min|[xy]max|[nd][xy])\b', Name.Builtin, '#pop'), + (r'(\.?(?:col|row)\$)(\[)', + bygroups(Name.Builtin, Text), 'variable_name'), + (r'(\$?)(\[)', + bygroups(Name.Builtin, Text), ('#pop', 'comma_list')), + ], + 'variable_name': [ + include('operator'), + include('number'), + + (words(variables_string, suffix=r'\$'), Name.Variable.Global), + (words(variables_numeric, suffix=r'\b'), Name.Variable.Global), + + (r'\bObject_\w+', Name.Builtin, 'object_attributes'), + (words(objects, prefix=r'\b', suffix=r'_\w+'), + Name.Builtin, 'object_attributes'), + + (r"\b(Object_)(')", + bygroups(Name.Builtin, String.Interpol), + ('object_attributes', 'string_interpolated')), + (words(objects, prefix=r'\b', suffix=r"(_)(')"), + bygroups(Name.Builtin, Name.Builtin, String.Interpol), + ('object_attributes', 'string_interpolated')), + + (r'\.?_?[a-z][a-zA-Z0-9_.]*(\$|#)?', Text), + (r'[\[\]]', Punctuation, 'comma_list'), + (r"'(?=.*')", String.Interpol, 'string_interpolated'), + ], + 'operator': [ + (r'([+\/*<>=!-]=?|[&*|][&*|]?|\^|<>)', Operator), + (r'\b(and|or|not|div|mod)\b', Operator.Word), + ], + 'string_interpolated': [ + (r'\.?[_a-z][a-zA-Z0-9_.]*[\$#]?(?:\[[a-zA-Z0-9,]+\])?(:[0-9]+)?', + String.Interpol), + (r"'", String.Interpol, '#pop'), + ], + 'string_unquoted': [ + (r'(\n\s*)(\.{3})', bygroups(Text, Punctuation)), + + (r'\n', Text, '#pop'), + (r'\s', Text), + (r"'(?=.*')", String.Interpol, 'string_interpolated'), + (r"'", String), + (r"[^'\n]+", String), + ], + 'string': [ + (r'(\n\s*)(\.{3})', bygroups(Text, Punctuation)), + + (r'"', String, '#pop'), + (r"'(?=.*')", String.Interpol, 'string_interpolated'), + (r"'", String), + (r'[^\'"\n]+', String), + ], + 'old_form': [ + (r'\s+', Text), + + (r'(optionmenu|choice)([ \t]+\S+:[ \t]+)', + bygroups(Keyword, Text), 'number'), + + (r'(option|button)([ \t]+)', + bygroups(Keyword, Text), 'number'), + + (r'(option|button)([ \t]+)', + bygroups(Keyword, Text), 'string_unquoted'), + + (r'(sentence|text)([ \t]+\S+)', + bygroups(Keyword, Text), 'string_unquoted'), + + (r'(word)([ \t]+\S+[ \t]*)(\S+)?([ \t]+.*)?', + bygroups(Keyword, Text, String, Text)), + + (r'(boolean)(\s+\S+\s*)(0|1|"?(?:yes|no)"?)', + bygroups(Keyword, Text, Name.Variable)), + + # Ideally processing of the number would happend in the 'number' + # but that doesn't seem to work + (r'(real|natural|positive|integer)([ \t]+\S+[ \t]*)([+-]?)(\d+(?:\.\d*)?' + r'(?:[eE][-+]?\d+)?%?)', + bygroups(Keyword, Text, Operator, Number)), + + (r'(comment)(\s+)', + bygroups(Keyword, Text), 'string_unquoted'), + + (r'\bendform\b', Keyword, '#pop'), + ] + } diff --git a/pygments/lexers/prolog.py b/pygments/lexers/prolog.py index 2b1c7634..7d32d7f6 100644 --- a/pygments/lexers/prolog.py +++ b/pygments/lexers/prolog.py @@ -155,11 +155,11 @@ class LogtalkLexer(RegexLexer): # Term creation and decomposition (r'(functor|arg|copy_term|numbervars|term_variables)(?=[(])', Keyword), # Evaluable functors - (r'(rem|m(ax|in|od)|abs|sign)(?=[(])', Keyword), + (r'(div|rem|m(ax|in|od)|abs|sign)(?=[(])', Keyword), (r'float(_(integer|fractional)_part)?(?=[(])', Keyword), - (r'(floor|truncate|round|ceiling)(?=[(])', Keyword), + (r'(floor|t(an|runcate)|round|ceiling)(?=[(])', Keyword), # Other arithmetic functors - (r'(cos|a(cos|sin|tan)|exp|log|s(in|qrt))(?=[(])', Keyword), + (r'(cos|a(cos|sin|tan|tan2)|exp|log|s(in|qrt)|xor)(?=[(])', Keyword), # Term testing (r'(var|atom(ic)?|integer|float|c(allable|ompound)|n(onvar|umber)|' r'ground|acyclic_term)(?=[(])', Keyword), @@ -212,7 +212,7 @@ class LogtalkLexer(RegexLexer): (r'(==|\\==|@=<|@<|@>=|@>)', Operator), # Evaluable functors (r'(//|[-+*/])', Operator), - (r'\b(e|pi|mod|rem)\b', Operator), + (r'\b(e|pi|div|mod|rem)\b', Operator), # Other arithemtic functors (r'\b\*\*\b', Operator), # DCG rules diff --git a/pygments/lexers/python.py b/pygments/lexers/python.py index ea97b855..dee8e6c7 100644 --- a/pygments/lexers/python.py +++ b/pygments/lexers/python.py @@ -35,6 +35,19 @@ class PythonLexer(RegexLexer): filenames = ['*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac', '*.sage'] mimetypes = ['text/x-python', 'application/x-python'] + def innerstring_rules(ttype): + return [ + # the old style '%s' % (...) string formatting + (r'%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?' + '[hlL]?[diouxXeEfFgGcrs%]', String.Interpol), + # backslashes, quotes and formatting signs must be parsed one at a time + (r'[^\\\'"%\n]+', ttype), + (r'[\'"\\]', ttype), + # unhandled string formatting sign + (r'%', ttype), + # newlines are an error (use "nl" state) + ] + tokens = { 'root': [ (r'\n', Text), @@ -57,14 +70,14 @@ class PythonLexer(RegexLexer): 'import'), include('builtins'), include('backtick'), - ('(?:[rR]|[uU][rR]|[rR][uU])"""', String, 'tdqs'), - ("(?:[rR]|[uU][rR]|[rR][uU])'''", String, 'tsqs'), - ('(?:[rR]|[uU][rR]|[rR][uU])"', String, 'dqs'), - ("(?:[rR]|[uU][rR]|[rR][uU])'", String, 'sqs'), - ('[uU]?"""', String, combined('stringescape', 'tdqs')), - ("[uU]?'''", String, combined('stringescape', 'tsqs')), - ('[uU]?"', String, combined('stringescape', 'dqs')), - ("[uU]?'", String, combined('stringescape', 'sqs')), + ('(?:[rR]|[uU][rR]|[rR][uU])"""', String.Double, 'tdqs'), + ("(?:[rR]|[uU][rR]|[rR][uU])'''", String.Single, 'tsqs'), + ('(?:[rR]|[uU][rR]|[rR][uU])"', String.Double, 'dqs'), + ("(?:[rR]|[uU][rR]|[rR][uU])'", String.Single, 'sqs'), + ('[uU]?"""', String.Double, combined('stringescape', 'tdqs')), + ("[uU]?'''", String.Single, combined('stringescape', 'tsqs')), + ('[uU]?"', String.Double, combined('stringescape', 'dqs')), + ("[uU]?'", String.Single, combined('stringescape', 'sqs')), include('name'), include('numbers'), ], @@ -155,39 +168,27 @@ class PythonLexer(RegexLexer): (r'\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|' r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape) ], - 'strings': [ - # the old style '%s' % (...) string formatting - (r'%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?' - '[hlL]?[diouxXeEfFgGcrs%]', String.Interpol), - # backslashes, quotes and formatting signs must be parsed one at a time - (r'[^\\\'"%\n]+', String), - (r'[\'"\\]', String), - # unhandled string formatting sign - (r'%', String) - # newlines are an error (use "nl" state) - ], - 'nl': [ - (r'\n', String) - ], + 'strings-single': innerstring_rules(String.Single), + 'strings-double': innerstring_rules(String.Double), 'dqs': [ - (r'"', String, '#pop'), + (r'"', String.Double, '#pop'), (r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings - include('strings') + include('strings-double') ], 'sqs': [ - (r"'", String, '#pop'), + (r"'", String.Single, '#pop'), (r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings - include('strings') + include('strings-single') ], 'tdqs': [ - (r'"""', String, '#pop'), - include('strings'), - include('nl') + (r'"""', String.Double, '#pop'), + include('strings-double'), + (r'\n', String.Double) ], 'tsqs': [ - (r"'''", String, '#pop'), - include('strings'), - include('nl') + (r"'''", String.Single, '#pop'), + include('strings-single'), + (r'\n', String.Single) ], } @@ -418,8 +419,10 @@ class PythonTracebackLexer(RegexLexer): tokens = { 'root': [ - (r'^Traceback \(most recent call last\):\n', - Generic.Traceback, 'intb'), + # Cover both (most recent call last) and (innermost last) + # The optional ^C allows us to catch keyboard interrupt signals. + (r'^(\^C)?(Traceback.*\n)', + bygroups(Text, Generic.Traceback), 'intb'), # SyntaxError starts with this. (r'^(?= File "[^"]+", line \d+)', Generic.Traceback, 'intb'), (r'^.*\n', Other), @@ -549,7 +552,7 @@ class CythonLexer(RegexLexer): 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', - 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', + 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'unsigned', 'vars', 'xrange', 'zip'), prefix=r'(?<!\.)', suffix=r'\b'), Name.Builtin), (r'(?<!\.)(self|None|Ellipsis|NotImplemented|False|True|NULL' @@ -557,13 +560,14 @@ class CythonLexer(RegexLexer): (words(( 'ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'DeprecationWarning', 'EOFError', 'EnvironmentError', - 'Exception', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', - 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', - 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', - 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', - 'OverflowWarning', 'PendingDeprecationWarning', 'ReferenceError', - 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', - 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', + 'Exception', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', + 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', + 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', + 'MemoryError', 'NameError', 'NotImplemented', 'NotImplementedError', + 'OSError', 'OverflowError', 'OverflowWarning', + 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', + 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', + 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', diff --git a/pygments/lexers/qvt.py b/pygments/lexers/qvt.py new file mode 100644 index 00000000..5bc61310 --- /dev/null +++ b/pygments/lexers/qvt.py @@ -0,0 +1,150 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.qvt + ~~~~~~~~~~~~~~~~~~~ + + Lexer for QVT Operational language. + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from pygments.lexer import RegexLexer, bygroups, include, combined +from pygments.token import Text, Comment, Operator, Keyword, Punctuation, \ + Name, String, Number + +__all__ = ['QVToLexer'] + + +class QVToLexer(RegexLexer): + """ + For the `QVT Operational Mapping language <http://www.omg.org/spec/QVT/1.1/>`_. + + Reference for implementing this: «Meta Object Facility (MOF) 2.0 + Query/View/Transformation Specification», Version 1.1 - January 2011 + (http://www.omg.org/spec/QVT/1.1/), see §8.4, «Concrete Syntax» in + particular. + + Notable tokens assignments: + + - Name.Class is assigned to the identifier following any of the following + keywords: metamodel, class, exception, primitive, enum, transformation + or library + + - Name.Function is assigned to the names of mappings and queries + + - Name.Builtin.Pseudo is assigned to the pre-defined variables 'this', + 'self' and 'result'. + """ + # With obvious borrowings & inspiration from the Java, Python and C lexers + + name = 'QVTO' + aliases = ['qvto', 'qvt'] + filenames = ['*.qvto'] + + tokens = { + 'root': [ + (r'\n', Text), + (r'[^\S\n]+', Text), + (r'(--|//)(\s*)(directive:)?(.*)$', + bygroups(Comment, Comment, Comment.Preproc, Comment)), + # Uncomment the following if you want to distinguish between + # '/*' and '/**', à la javadoc + #(r'/[*]{2}(.|\n)*?[*]/', Comment.Multiline), + (r'/[*](.|\n)*?[*]/', Comment.Multiline), + (r'\\\n', Text), + (r'(and|not|or|xor|##?)\b', Operator.Word), + (r'([:]{1-2}=|[-+]=)\b', Operator.Word), + (r'(@|<<|>>)\b', Keyword), # stereotypes + (r'!=|<>|=|==|!->|->|>=|<=|[.]{3}|[+/*%=<>&|.~]', Operator), + (r'[]{}:(),;[]', Punctuation), + (r'(true|false|unlimited|null)\b', Keyword.Constant), + (r'(this|self|result)\b', Name.Builtin.Pseudo), + (r'(var)\b', Keyword.Declaration), + (r'(from|import)\b', Keyword.Namespace, 'fromimport'), + (r'(metamodel|class|exception|primitive|enum|transformation|library)(\s+)([a-zA-Z0-9_]+)', + bygroups(Keyword.Word, Text, Name.Class)), + (r'(exception)(\s+)([a-zA-Z0-9_]+)', bygroups(Keyword.Word, Text, Name.Exception)), + (r'(main)\b', Name.Function), + (r'(mapping|helper|query)(\s+)', bygroups(Keyword.Declaration, Text), 'operation'), + (r'(assert)(\s+)\b', bygroups(Keyword, Text), 'assert'), + (r'(Bag|Collection|Dict|OrderedSet|Sequence|Set|Tuple|List)\b', + Keyword.Type), + include('keywords'), + ('"', String, combined('stringescape', 'dqs')), + ("'", String, combined('stringescape', 'sqs')), + include('name'), + include('numbers'), + # (r'([a-zA-Z_][a-zA-Z0-9_]*)(::)([a-zA-Z_][a-zA-Z0-9_]*)', + # bygroups(Text, Text, Text)), + ], + + 'fromimport': [ + (r'(?:[ \t]|\\\n)+', Text), + (r'[a-zA-Z_][a-zA-Z0-9_.]*', Name.Namespace), + (r'', Text, '#pop'), + ], + + 'operation': [ + (r'::', Text), + (r'(.*::)([a-zA-Z_][a-zA-Z0-9_]*)[ \t]*(\()', bygroups(Text,Name.Function, Text), '#pop') + ], + + 'assert': [ + (r'(warning|error|fatal)\b', Keyword, '#pop'), + (r'', Text, '#pop') # all else: go back + ], + + 'keywords': [ + (r'(abstract|access|any|assert|' + r'blackbox|break|case|collect|collectNested|' + r'collectOne|collectselect|collectselectOne|composes|' + r'compute|configuration|constructor|continue|datatype|' + r'default|derived|disjuncts|do|elif|else|end|' + r'endif|except|exists|extends|' + r'forAll|forEach|forOne|from|if|' + r'implies|in|inherits|init|inout|' + r'intermediate|invresolve|invresolveIn|invresolveone|' + r'invresolveoneIn|isUnique|iterate|late|let|' + r'literal|log|map|merges|' + r'modeltype|new|object|one|' + r'ordered|out|package|population|' + r'property|raise|readonly|references|refines|' + r'reject|resolve|resolveIn|resolveone|resolveoneIn|' + r'return|select|selectOne|sortedBy|static|switch|' + r'tag|then|try|typedef|' + r'unlimited|uses|when|where|while|with|' + r'xcollect|xmap|xselect)\b', Keyword), + ], + + # There is no need to distinguish between String.Single and + # String.Double: 'strings' is factorised for 'dqs' and 'sqs' + 'strings': [ + (r'[^\\\'"\n]+', String), + # quotes, percents and backslashes must be parsed one at a time + (r'[\'"\\]', String), + ], + 'stringescape': [ + (r'\\([\\btnfr"\']|u[0-3][0-7]{2}|u[0-7]{1,2})', String.Escape) + ], + 'dqs': [ # double-quoted string + (r'"', String, '#pop'), + (r'\\\\|\\"', String.Escape), + include('strings') + ], + 'sqs': [ # single-quoted string + (r"'", String, '#pop'), + (r"\\\\|\\'", String.Escape), + include('strings') + ], + 'name': [ + ('[a-zA-Z_][a-zA-Z0-9_]*', Name), + ], + # numbers: excerpt taken from the python lexer + 'numbers': [ + (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float), + (r'\d+[eE][+-]?[0-9]+', Number.Float), + (r'\d+', Number.Integer) + ], + } + diff --git a/pygments/lexers/rdf.py b/pygments/lexers/rdf.py index fb14629a..cb634ee0 100644 --- a/pygments/lexers/rdf.py +++ b/pygments/lexers/rdf.py @@ -12,10 +12,10 @@ import re from pygments.lexer import RegexLexer, bygroups, default -from pygments.token import Keyword, Punctuation, String, Number, Operator, \ +from pygments.token import Keyword, Punctuation, String, Number, Operator, Generic, \ Whitespace, Name, Literal, Comment, Text -__all__ = ['SparqlLexer'] +__all__ = ['SparqlLexer', 'TurtleLexer'] class SparqlLexer(RegexLexer): @@ -29,39 +29,193 @@ class SparqlLexer(RegexLexer): filenames = ['*.rq', '*.sparql'] mimetypes = ['application/sparql-query'] - flags = re.IGNORECASE + # terminal productions :: + + PN_CHARS_BASE = (u'(?:[a-zA-Z' + u'\u00c0-\u00d6' + u'\u00d8-\u00f6' + u'\u00f8-\u02ff' + u'\u0370-\u037d' + u'\u037f-\u1fff' + u'\u200c-\u200d' + u'\u2070-\u218f' + u'\u2c00-\u2fef' + u'\u3001-\ud7ff' + u'\uf900-\ufdcf' + u'\ufdf0-\ufffd]|' + u'[^\u0000-\uffff]|' + u'[\ud800-\udbff][\udc00-\udfff])') + + PN_CHARS_U = '(?:' + PN_CHARS_BASE + '|_)' + + PN_CHARS = ('(?:' + PN_CHARS_U + r'|[\-0-9' + + u'\u00b7' + + u'\u0300-\u036f' + + u'\u203f-\u2040])') + + HEX = '[0-9A-Fa-f]' + + PN_LOCAL_ESC_CHARS = r'[ _~.\-!$&""()*+,;=/?#@%]' + + IRIREF = r'<(?:[^<>"{}|^`\\\x00-\x20])*>' + + BLANK_NODE_LABEL = '_:(?:' + PN_CHARS_U + '|[0-9])(?:(?:' + PN_CHARS + '|\.)*' + \ + PN_CHARS + ')?' + + PN_PREFIX = PN_CHARS_BASE + '(?:(?:' + PN_CHARS + '|\.)*' + PN_CHARS + ')?' + + VARNAME = '(?:' + PN_CHARS_U + '|[0-9])(?:' + PN_CHARS_U + \ + u'|[0-9\u00b7\u0300-\u036f\u203f-\u2040])*' + + PERCENT = '%' + HEX + HEX + + PN_LOCAL_ESC = r'\\' + PN_LOCAL_ESC_CHARS + + PLX = '(?:' + PERCENT + ')|(?:' + PN_LOCAL_ESC + ')' + + PN_LOCAL = ('(?:(?:' + PN_CHARS_U + '|[:0-9])|' + PLX + ')' + + '(?:(?:(?:' + PN_CHARS + '|[.:])|' + PLX + ')*(?:(?:' + + PN_CHARS + '|:)|' + PLX + '))?') + + EXPONENT = r'[eE][+-]?\d+' + + # Lexer token definitions :: tokens = { 'root': [ - (r'\s+', Whitespace), - (r'(select|construct|describe|ask|where|filter|group\s+by|minus|' - r'distinct|reduced|from named|from|order\s+by|limit|' + (r'\s+', Text), + # keywords :: + (r'((?i)select|construct|describe|ask|where|filter|group\s+by|minus|' + r'distinct|reduced|from\s+named|from|order\s+by|desc|asc|limit|' r'offset|bindings|load|clear|drop|create|add|move|copy|' r'insert\s+data|delete\s+data|delete\s+where|delete|insert|' - r'using named|using|graph|default|named|all|optional|service|' - r'silent|bind|union|not in|in|as|a)', Keyword), - (r'(prefix|base)(\s+)([a-z][\w-]*)(\s*)(\:)', - bygroups(Keyword, Whitespace, Name.Namespace, Whitespace, - Punctuation)), - (r'\?[a-z_]\w*', Name.Variable), - (r'<[^>]+>', Name.Label), - (r'([a-z][\w-]*)(\:)([a-z][\w-]*)', + r'using\s+named|using|graph|default|named|all|optional|service|' + r'silent|bind|union|not\s+in|in|as|having|to|prefix|base)\b', Keyword), + (r'(a)\b', Keyword), + # IRIs :: + ('(' + IRIREF + ')', Name.Label), + # blank nodes :: + ('(' + BLANK_NODE_LABEL + ')', Name.Label), + # # variables :: + ('[?$]' + VARNAME, Name.Variable), + # prefixed names :: + (r'(' + PN_PREFIX + ')?(\:)(' + PN_LOCAL + ')?', bygroups(Name.Namespace, Punctuation, Name.Tag)), - (r'(str|lang|langmatches|datatype|bound|iri|uri|bnode|rand|abs|' + # function names :: + (r'((?i)str|lang|langmatches|datatype|bound|iri|uri|bnode|rand|abs|' r'ceil|floor|round|concat|strlen|ucase|lcase|encode_for_uri|' r'contains|strstarts|strends|strbefore|strafter|year|month|day|' r'hours|minutes|seconds|timezone|tz|now|md5|sha1|sha256|sha384|' r'sha512|coalesce|if|strlang|strdt|sameterm|isiri|isuri|isblank|' - r'isliteral|isnumeric|regex|substr|replace|exists|not exists|' + r'isliteral|isnumeric|regex|substr|replace|exists|not\s+exists|' r'count|sum|min|max|avg|sample|group_concat|separator)\b', Name.Function), - (r'(true|false)', Literal), + # boolean literals :: + (r'(true|false)', Keyword.Constant), + # double literals :: + (r'[+\-]?(\d+\.\d*' + EXPONENT + '|\.?\d+' + EXPONENT + ')', Number.Float), + # decimal literals :: + (r'[+\-]?(\d+\.\d*|\.\d+)', Number.Float), + # integer literals :: + (r'[+\-]?\d+', Number.Integer), + # operators :: + (r'(\|\||&&|=|\*|\-|\+|/|!=|<=|>=|!|<|>)', Operator), + # punctuation characters :: + (r'[(){}.;,:^\[\]]', Punctuation), + # line comments :: + (r'#[^\n]*', Comment), + # strings :: + (r'"""', String, 'triple-double-quoted-string'), + (r'"', String, 'single-double-quoted-string'), + (r"'''", String, 'triple-single-quoted-string'), + (r"'", String, 'single-single-quoted-string'), + ], + 'triple-double-quoted-string': [ + (r'"""', String, 'end-of-string'), + (r'[^\\]+', String), + (r'\\', String, 'string-escape'), + ], + 'single-double-quoted-string': [ + (r'"', String, 'end-of-string'), + (r'[^"\\\n]+', String), + (r'\\', String, 'string-escape'), + ], + 'triple-single-quoted-string': [ + (r"'''", String, 'end-of-string'), + (r'[^\\]+', String), + (r'\\', String.Escape, 'string-escape'), + ], + 'single-single-quoted-string': [ + (r"'", String, 'end-of-string'), + (r"[^'\\\n]+", String), + (r'\\', String, 'string-escape'), + ], + 'string-escape': [ + (r'u' + HEX + '{4}', String.Escape, '#pop'), + (r'U' + HEX + '{8}', String.Escape, '#pop'), + (r'.', String.Escape, '#pop'), + ], + 'end-of-string': [ + (r'(@)([a-zA-Z]+(?:-[a-zA-Z0-9]+)*)', + bygroups(Operator, Name.Function), '#pop:2'), + (r'\^\^', Operator, '#pop:2'), + default('#pop:2'), + ], + } + + +class TurtleLexer(RegexLexer): + """ + Lexer for `Turtle <http://www.w3.org/TR/turtle/>`_ data language. + + .. versionadded:: 2.1 + """ + name = 'Turtle' + aliases = ['turtle'] + filenames = ['*.ttl'] + mimetypes = ['text/turtle', 'application/x-turtle'] + + flags = re.IGNORECASE + + patterns = { + 'PNAME_NS': r'((?:[a-zA-Z][\w-]*)?\:)', # Simplified character range + 'IRIREF': r'(<[^<>"{}|^`\\\x00-\x20]*>)' + } + + # PNAME_NS PN_LOCAL (with simplified character range) + patterns['PrefixedName'] = r'%(PNAME_NS)s([a-z][\w-]*)' % patterns + + tokens = { + 'root': [ + (r'\s+', Whitespace), + + # Base / prefix + (r'(@base|BASE)(\s+)%(IRIREF)s(\s*)(\.?)' % patterns, + bygroups(Keyword, Whitespace, Name.Variable, Whitespace, + Punctuation)), + (r'(@prefix|PREFIX)(\s+)%(PNAME_NS)s(\s+)%(IRIREF)s(\s*)(\.?)' % patterns, + bygroups(Keyword, Whitespace, Name.Namespace, Whitespace, + Name.Variable, Whitespace, Punctuation)), + + # The shorthand predicate 'a' + (r'(?<=\s)a(?=\s)', Keyword.Type), + + # IRIREF + (r'%(IRIREF)s' % patterns, Name.Variable), + + # PrefixedName + (r'%(PrefixedName)s' % patterns, + bygroups(Name.Namespace, Name.Tag)), + + # Comment + (r'#[^\n]+', Comment), + + (r'\b(true|false)\b', Literal), (r'[+\-]?\d*\.\d+', Number.Float), (r'[+\-]?\d*(:?\.\d+)?E[+\-]?\d+', Number.Float), (r'[+\-]?\d+', Number.Integer), - (r'(\|\||&&|=|\*|\-|\+|/)', Operator), - (r'[(){}.;,:^]', Punctuation), - (r'#[^\n]+', Comment), + (r'[\[\](){}.;,:^]', Punctuation), + (r'"""', String, 'triple-double-quoted-string'), (r'"', String, 'single-double-quoted-string'), (r"'''", String, 'triple-single-quoted-string'), @@ -91,9 +245,15 @@ class SparqlLexer(RegexLexer): (r'.', String, '#pop'), ], 'end-of-string': [ - (r'(@)([a-z]+(:?-[a-z0-9]+)*)', - bygroups(Operator, Name.Function), '#pop:2'), - (r'\^\^', Operator, '#pop:2'), + + (r'(@)([a-zA-Z]+(:?-[a-zA-Z0-9]+)*)', + bygroups(Operator, Generic.Emph), '#pop:2'), + + (r'(\^\^)%(IRIREF)s' % patterns, bygroups(Operator, Generic.Emph), '#pop:2'), + (r'(\^\^)%(PrefixedName)s' % patterns, + bygroups(Operator, Generic.Emph, Generic.Emph), '#pop:2'), + default('#pop:2'), + ], } diff --git a/pygments/lexers/roboconf.py b/pygments/lexers/roboconf.py new file mode 100644 index 00000000..59755a68 --- /dev/null +++ b/pygments/lexers/roboconf.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.roboconf + ~~~~~~~~~~~~~~~~~~~~~~~~ + + Lexers for Roboconf DSL. + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from pygments.lexer import RegexLexer, words, re +from pygments.token import Text, Operator, Keyword, Name, Comment + +__all__ = ['RoboconfGraphLexer', 'RoboconfInstancesLexer'] + + +class RoboconfGraphLexer(RegexLexer): + """ + Lexer for `Roboconf <http://roboconf.net/en/roboconf.html>`_ graph files. + + .. versionadded:: 2.1 + """ + name = 'Roboconf Graph' + aliases = ['roboconf-graph'] + filenames = ['*.graph'] + + flags = re.IGNORECASE | re.MULTILINE + tokens = { + 'root': [ + # Skip white spaces + (r'\s+', Text), + + # There is one operator + (r'=', Operator), + + # Keywords + (words(('facet', 'import'), suffix=r'\s*\b', prefix=r'\b'), Keyword), + (words(( + 'installer', 'extends', 'exports', 'imports', 'facets', + 'children'), suffix=r'\s*:?', prefix=r'\b'), Name), + + # Comments + (r'#.*\n', Comment), + + # Default + (r'[^#]', Text), + (r'.*\n', Text) + ] + } + + +class RoboconfInstancesLexer(RegexLexer): + """ + Lexer for `Roboconf <http://roboconf.net/en/roboconf.html>`_ instances files. + + .. versionadded:: 2.1 + """ + name = 'Roboconf Instances' + aliases = ['roboconf-instances'] + filenames = ['*.instances'] + + flags = re.IGNORECASE | re.MULTILINE + tokens = { + 'root': [ + + # Skip white spaces + (r'\s+', Text), + + # Keywords + (words(('instance of', 'import'), suffix=r'\s*\b', prefix=r'\b'), Keyword), + (words(('name', 'count'), suffix=r's*:?', prefix=r'\b'), Name), + (r'\s*[\w.-]+\s*:', Name), + + # Comments + (r'#.*\n', Comment), + + # Default + (r'[^#]', Text), + (r'.*\n', Text) + ] + } diff --git a/pygments/lexers/ruby.py b/pygments/lexers/ruby.py index 63fed60f..e81d6ecf 100644 --- a/pygments/lexers/ruby.py +++ b/pygments/lexers/ruby.py @@ -36,7 +36,7 @@ class RubyLexer(ExtendedRegexLexer): name = 'Ruby' aliases = ['rb', 'ruby', 'duby'] filenames = ['*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec', - '*.rbx', '*.duby'] + '*.rbx', '*.duby', 'Gemfile'] mimetypes = ['text/x-ruby', 'application/x-ruby'] flags = re.DOTALL | re.MULTILINE diff --git a/pygments/lexers/rust.py b/pygments/lexers/rust.py index d8939678..5d1162b8 100644 --- a/pygments/lexers/rust.py +++ b/pygments/lexers/rust.py @@ -23,7 +23,7 @@ class RustLexer(RegexLexer): .. versionadded:: 1.6 """ name = 'Rust' - filenames = ['*.rs'] + filenames = ['*.rs', '*.rs.in'] aliases = ['rust'] mimetypes = ['text/rust'] diff --git a/pygments/lexers/scripting.py b/pygments/lexers/scripting.py index 473ea7eb..4dd9594b 100644 --- a/pygments/lexers/scripting.py +++ b/pygments/lexers/scripting.py @@ -14,11 +14,12 @@ import re from pygments.lexer import RegexLexer, include, bygroups, default, combined, \ words from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ - Number, Punctuation, Error, Whitespace + Number, Punctuation, Error, Whitespace, Other from pygments.util import get_bool_opt, get_list_opt, iteritems __all__ = ['LuaLexer', 'MoonScriptLexer', 'ChaiscriptLexer', 'LSLLexer', - 'AppleScriptLexer', 'RexxLexer', 'MOOCodeLexer', 'HybrisLexer'] + 'AppleScriptLexer', 'RexxLexer', 'MOOCodeLexer', 'HybrisLexer', + 'EasytrieveLexer', 'JclLexer'] class LuaLexer(RegexLexer): @@ -877,25 +878,29 @@ class HybrisLexer(RegexLexer): bygroups(Keyword.Namespace, Text), 'import'), (words(( 'gc_collect', 'gc_mm_items', 'gc_mm_usage', 'gc_collect_threshold', - 'urlencode', 'urldecode', 'base64encode', 'base64decode', 'sha1', 'crc32', 'sha2', - 'md5', 'md5_file', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp', - 'fabs', 'floor', 'fmod', 'log', 'log10', 'pow', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', - 'isint', 'isfloat', 'ischar', 'isstring', 'isarray', 'ismap', 'isalias', 'typeof', - 'sizeof', 'toint', 'tostring', 'fromxml', 'toxml', 'binary', 'pack', 'load', 'eval', - 'var_names', 'var_values', 'user_functions', 'dyn_functions', 'methods', 'call', - 'call_method', 'mknod', 'mkfifo', 'mount', 'umount2', 'umount', 'ticks', 'usleep', - 'sleep', 'time', 'strtime', 'strdate', 'dllopen', 'dlllink', 'dllcall', 'dllcall_argv', - 'dllclose', 'env', 'exec', 'fork', 'getpid', 'wait', 'popen', 'pclose', 'exit', 'kill', - 'pthread_create', 'pthread_create_argv', 'pthread_exit', 'pthread_join', 'pthread_kill', - 'smtp_send', 'http_get', 'http_post', 'http_download', 'socket', 'bind', 'listen', - 'accept', 'getsockname', 'getpeername', 'settimeout', 'connect', 'server', 'recv', - 'send', 'close', 'print', 'println', 'printf', 'input', 'readline', 'serial_open', - 'serial_fcntl', 'serial_get_attr', 'serial_get_ispeed', 'serial_get_ospeed', - 'serial_set_attr', 'serial_set_ispeed', 'serial_set_ospeed', 'serial_write', - 'serial_read', 'serial_close', 'xml_load', 'xml_parse', 'fopen', 'fseek', 'ftell', - 'fsize', 'fread', 'fwrite', 'fgets', 'fclose', 'file', 'readdir', 'pcre_replace', 'size', - 'pop', 'unmap', 'has', 'keys', 'values', 'length', 'find', 'substr', 'replace', 'split', - 'trim', 'remove', 'contains', 'join'), suffix=r'\b'), + 'urlencode', 'urldecode', 'base64encode', 'base64decode', 'sha1', 'crc32', + 'sha2', 'md5', 'md5_file', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', + 'cosh', 'exp', 'fabs', 'floor', 'fmod', 'log', 'log10', 'pow', 'sin', + 'sinh', 'sqrt', 'tan', 'tanh', 'isint', 'isfloat', 'ischar', 'isstring', + 'isarray', 'ismap', 'isalias', 'typeof', 'sizeof', 'toint', 'tostring', + 'fromxml', 'toxml', 'binary', 'pack', 'load', 'eval', 'var_names', + 'var_values', 'user_functions', 'dyn_functions', 'methods', 'call', + 'call_method', 'mknod', 'mkfifo', 'mount', 'umount2', 'umount', 'ticks', + 'usleep', 'sleep', 'time', 'strtime', 'strdate', 'dllopen', 'dlllink', + 'dllcall', 'dllcall_argv', 'dllclose', 'env', 'exec', 'fork', 'getpid', + 'wait', 'popen', 'pclose', 'exit', 'kill', 'pthread_create', + 'pthread_create_argv', 'pthread_exit', 'pthread_join', 'pthread_kill', + 'smtp_send', 'http_get', 'http_post', 'http_download', 'socket', 'bind', + 'listen', 'accept', 'getsockname', 'getpeername', 'settimeout', 'connect', + 'server', 'recv', 'send', 'close', 'print', 'println', 'printf', 'input', + 'readline', 'serial_open', 'serial_fcntl', 'serial_get_attr', + 'serial_get_ispeed', 'serial_get_ospeed', 'serial_set_attr', + 'serial_set_ispeed', 'serial_set_ospeed', 'serial_write', 'serial_read', + 'serial_close', 'xml_load', 'xml_parse', 'fopen', 'fseek', 'ftell', + 'fsize', 'fread', 'fwrite', 'fgets', 'fclose', 'file', 'readdir', + 'pcre_replace', 'size', 'pop', 'unmap', 'has', 'keys', 'values', + 'length', 'find', 'substr', 'replace', 'split', 'trim', 'remove', + 'contains', 'join'), suffix=r'\b'), Name.Builtin), (words(( 'MethodReference', 'Runner', 'Dll', 'Thread', 'Pipe', 'Process', @@ -921,3 +926,278 @@ class HybrisLexer(RegexLexer): (r'[\w.]+\*?', Name.Namespace, '#pop') ], } + + +class EasytrieveLexer(RegexLexer): + """ + Easytrieve Plus is a programming language for extracting, filtering and + converting sequential data. Furthermore it can layout data for reports. + It is mainly used on mainframe platforms and can access several of the + mainframe's native file formats. It is somewhat comparable to awk. + + .. versionadded:: 2.1 + """ + name = 'Easytrieve' + aliases = ['easytrieve'] + filenames = ['*.ezt', '*.mac'] + mimetypes = ['text/x-easytrieve'] + flags = 0 + + # Note: We cannot use r'\b' at the start and end of keywords because + # Easytrieve Plus delimiter characters are: + # + # * space ( ) + # * apostrophe (') + # * period (.) + # * comma (,) + # * paranthesis ( and ) + # * colon (:) + # + # Additionally words end once a '*' appears, indicatins a comment. + _DELIMITERS = r' \'.,():\n' + _DELIMITERS_OR_COMENT = _DELIMITERS + '*' + _DELIMITER_PATTERN = '[' + _DELIMITERS + ']' + _DELIMITER_PATTERN_CAPTURE = '(' + _DELIMITER_PATTERN + ')' + _NON_DELIMITER_OR_COMMENT_PATTERN = '[^' + _DELIMITERS_OR_COMENT + ']' + _OPERATORS_PATTERN = u'[.+\\-/=\\[\\](){}<>;,&%¬]' + _KEYWORDS = [ + 'AFTER-BREAK', 'AFTER-LINE', 'AFTER-SCREEN', 'AIM', 'AND', 'ATTR', + 'BEFORE', 'BEFORE-BREAK', 'BEFORE-LINE', 'BEFORE-SCREEN', 'BUSHU', + 'BY', 'CALL', 'CASE', 'CHECKPOINT', 'CHKP', 'CHKP-STATUS', 'CLEAR', + 'CLOSE', 'COL', 'COLOR', 'COMMIT', 'CONTROL', 'COPY', 'CURSOR', 'D', + 'DECLARE', 'DEFAULT', 'DEFINE', 'DELETE', 'DENWA', 'DISPLAY', 'DLI', + 'DO', 'DUPLICATE', 'E', 'ELSE', 'ELSE-IF', 'END', 'END-CASE', + 'END-DO', 'END-IF', 'END-PROC', 'ENDPAGE', 'ENDTABLE', 'ENTER', 'EOF', + 'EQ', 'ERROR', 'EXIT', 'EXTERNAL', 'EZLIB', 'F1', 'F10', 'F11', 'F12', + 'F13', 'F14', 'F15', 'F16', 'F17', 'F18', 'F19', 'F2', 'F20', 'F21', + 'F22', 'F23', 'F24', 'F25', 'F26', 'F27', 'F28', 'F29', 'F3', 'F30', + 'F31', 'F32', 'F33', 'F34', 'F35', 'F36', 'F4', 'F5', 'F6', 'F7', + 'F8', 'F9', 'FETCH', 'FILE-STATUS', 'FILL', 'FINAL', 'FIRST', + 'FIRST-DUP', 'FOR', 'GE', 'GET', 'GO', 'GOTO', 'GQ', 'GR', 'GT', + 'HEADING', 'HEX', 'HIGH-VALUES', 'IDD', 'IDMS', 'IF', 'IN', 'INSERT', + 'JUSTIFY', 'KANJI-DATE', 'KANJI-DATE-LONG', 'KANJI-TIME', 'KEY', + 'KEY-PRESSED', 'KOKUGO', 'KUN', 'LAST-DUP', 'LE', 'LEVEL', 'LIKE', + 'LINE', 'LINE-COUNT', 'LINE-NUMBER', 'LINK', 'LIST', 'LOW-VALUES', + 'LQ', 'LS', 'LT', 'MACRO', 'MASK', 'MATCHED', 'MEND', 'MESSAGE', + 'MOVE', 'MSTART', 'NE', 'NEWPAGE', 'NOMASK', 'NOPRINT', 'NOT', + 'NOTE', 'NOVERIFY', 'NQ', 'NULL', 'OF', 'OR', 'OTHERWISE', 'PA1', + 'PA2', 'PA3', 'PAGE-COUNT', 'PAGE-NUMBER', 'PARM-REGISTER', + 'PATH-ID', 'PATTERN', 'PERFORM', 'POINT', 'POS', 'PRIMARY', 'PRINT', + 'PROCEDURE', 'PROGRAM', 'PUT', 'READ', 'RECORD', 'RECORD-COUNT', + 'RECORD-LENGTH', 'REFRESH', 'RELEASE', 'RENUM', 'REPEAT', 'REPORT', + 'REPORT-INPUT', 'RESHOW', 'RESTART', 'RETRIEVE', 'RETURN-CODE', + 'ROLLBACK', 'ROW', 'S', 'SCREEN', 'SEARCH', 'SECONDARY', 'SELECT', + 'SEQUENCE', 'SIZE', 'SKIP', 'SOKAKU', 'SORT', 'SQL', 'STOP', 'SUM', + 'SYSDATE', 'SYSDATE-LONG', 'SYSIN', 'SYSIPT', 'SYSLST', 'SYSPRINT', + 'SYSSNAP', 'SYSTIME', 'TALLY', 'TERM-COLUMNS', 'TERM-NAME', + 'TERM-ROWS', 'TERMINATION', 'TITLE', 'TO', 'TRANSFER', 'TRC', + 'UNIQUE', 'UNTIL', 'UPDATE', 'UPPERCASE', 'USER', 'USERID', 'VALUE', + 'VERIFY', 'W', 'WHEN', 'WHILE', 'WORK', 'WRITE', 'X', 'XDM', 'XRST' + ] + + tokens = { + 'root': [ + (r'\*.*\n', Comment.Single), + (r'\n+', Whitespace), + # Macro argument + (r'&' + _NON_DELIMITER_OR_COMMENT_PATTERN + r'+\.', Name.Variable, + 'after_macro_argument'), + # Macro call + (r'%' + _NON_DELIMITER_OR_COMMENT_PATTERN + r'+', Name.Variable), + (r'(FILE|MACRO|REPORT)(\s+)', + bygroups(Keyword.Declaration, Whitespace), 'after_declaration'), + (r'(JOB|PARM)' + r'(' + _DELIMITER_PATTERN + r')', + bygroups(Keyword.Declaration, Operator)), + (words(_KEYWORDS, suffix=_DELIMITER_PATTERN_CAPTURE), + bygroups(Keyword.Reserved, Operator)), + (_OPERATORS_PATTERN, Operator), + # Procedure declaration + (r'(' + _NON_DELIMITER_OR_COMMENT_PATTERN + r'+)(\s*)(\.?)(\s*)(PROC)(\s*\n)', + bygroups(Name.Function, Whitespace, Operator, Whitespace, + Keyword.Declaration, Whitespace)), + (r'[0-9]+\.[0-9]*', Number.Float), + (r'[0-9]+', Number.Integer), + (r"'(''|[^'])*'", String), + (r'\s+', Whitespace), + # Everything else just belongs to a name + (_NON_DELIMITER_OR_COMMENT_PATTERN + r'+', Name) + ], + 'after_declaration': [ + (_NON_DELIMITER_OR_COMMENT_PATTERN + r'+', Name.Function), + ('', Whitespace, '#pop') + ], + 'after_macro_argument': [ + (r'\*.*\n', Comment.Single, '#pop'), + (r'\s+', Whitespace, '#pop'), + (_OPERATORS_PATTERN, Operator, '#pop'), + (r"'(''|[^'])*'", String, '#pop'), + # Everything else just belongs to a name + (_NON_DELIMITER_OR_COMMENT_PATTERN + r'+', Name) + ], + } + _COMMENT_LINE_REGEX = re.compile(r'^\s*\*') + _MACRO_HEADER_REGEX = re.compile(r'^\s*MACRO') + + def analyse_text(text): + """ + Perform a structural analysis for basic Easytrieve constructs. + """ + result = 0.0 + lines = text.split('\n') + hasEndProc = False + hasHeaderComment = False + hasFile = False + hasJob = False + hasProc = False + hasParm = False + hasReport = False + + def isCommentLine(line): + return EasytrieveLexer._COMMENT_LINE_REGEX.match(lines[0]) is not None + + def isEmptyLine(line): + return not bool(line.strip()) + + # Remove possible empty lines and header comments. + while lines and (isEmptyLine(lines[0]) or isCommentLine(lines[0])): + if not isEmptyLine(lines[0]): + hasHeaderComment = True + del lines[0] + + if EasytrieveLexer._MACRO_HEADER_REGEX.match(lines[0]): + # Looks like an Easytrieve macro. + result = 0.4 + if hasHeaderComment: + result += 0.4 + else: + # Scan the source for lines starting with indicators. + for line in lines: + words = line.split() + if (len(words) >= 2): + firstWord = words[0] + if not hasReport: + if not hasJob: + if not hasFile: + if not hasParm: + if firstWord == 'PARM': + hasParm = True + if firstWord == 'FILE': + hasFile = True + if firstWord == 'JOB': + hasJob = True + elif firstWord == 'PROC': + hasProc = True + elif firstWord == 'END-PROC': + hasEndProc = True + elif firstWord == 'REPORT': + hasReport = True + + # Weight the findings. + if hasJob and (hasProc == hasEndProc): + if hasHeaderComment: + result += 0.1 + if hasParm: + if hasProc: + # Found PARM, JOB and PROC/END-PROC: + # pretty sure this is Easytrieve. + result += 0.8 + else: + # Found PARAM and JOB: probably this is Easytrieve + result += 0.5 + else: + # Found JOB and possibly other keywords: might be Easytrieve + result += 0.11 + if hasParm: + # Note: PARAM is not a proper English word, so this is + # regarded a much better indicator for Easytrieve than + # the other words. + result += 0.2 + if hasFile: + result += 0.01 + if hasReport: + result += 0.01 + assert 0.0 <= result <= 1.0 + return result + + +class JclLexer(RegexLexer): + """ + `Job Control Language (JCL) <http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/IEA2B570/CCONTENTS>`_ + is a scripting language used on mainframe platforms to instruct the system + on how to run a batch job or start a subsystem. It is somewhat + comparable to MS DOS batch and Unix shell scripts. + + .. versionadded:: 2.1 + """ + name = 'JCL' + aliases = ['jcl'] + filenames = ['*.jcl'] + mimetypes = ['text/x-jcl'] + flags = re.IGNORECASE + + tokens = { + 'root': [ + (r'//\*.*\n', Comment.Single), + (r'//', Keyword.Pseudo, 'statement'), + (r'/\*', Keyword.Pseudo, 'jes2_statement'), + # TODO: JES3 statement + (r'.*\n', Other) # Input text or inline code in any language. + ], + 'statement': [ + (r'\s*\n', Whitespace, '#pop'), + (r'([a-z][a-z_0-9]*)(\s+)(exec|job)(\s*)', + bygroups(Name.Label, Whitespace, Keyword.Reserved, Whitespace), + 'option'), + (r'[a-z][a-z_0-9]*', Name.Variable, 'statement_command'), + (r'\s+', Whitespace, 'statement_command'), + ], + 'statement_command': [ + (r'\s+(command|cntl|dd|endctl|endif|else|include|jcllib|' + r'output|pend|proc|set|then|xmit)\s+', Keyword.Reserved, 'option'), + include('option') + ], + 'jes2_statement': [ + (r'\s*\n', Whitespace, '#pop'), + (r'\$', Keyword, 'option'), + (r'\b(jobparam|message|netacct|notify|output|priority|route|' + r'setup|signoff|xeq|xmit)\b', Keyword, 'option'), + ], + 'option': [ + # (r'\n', Text, 'root'), + (r'\*', Name.Builtin), + (r'[\[\](){}<>;,]', Punctuation), + (r'[-+*/=&%]', Operator), + (r'[a-z_][a-z_0-9]*', Name), + (r'[0-9]+\.[0-9]*', Number.Float), + (r'\.[0-9]+', Number.Float), + (r'[0-9]+', Number.Integer), + (r"'", String, 'option_string'), + (r'[ \t]+', Whitespace, 'option_comment'), + (r'\.', Punctuation), + ], + 'option_string': [ + (r"(\n)(//)", bygroups(Text, Keyword.Pseudo)), + (r"''", String), + (r"[^']", String), + (r"'", String, '#pop'), + ], + 'option_comment': [ + # (r'\n', Text, 'root'), + (r'.+', Comment.Single), + ] + } + + _JOB_HEADER_PATTERN = re.compile(r'^//[a-z#$@][a-z0-9#$@]{0,7}\s+job(\s+.*)?$', + re.IGNORECASE) + + def analyse_text(text): + """ + Recognize JCL job by header. + """ + result = 0.0 + lines = text.split('\n') + if len(lines) > 0: + if JclLexer._JOB_HEADER_PATTERN.match(lines[0]): + result = 1.0 + assert 0.0 <= result <= 1.0 + return result diff --git a/pygments/lexers/shell.py b/pygments/lexers/shell.py index 1e3640bf..dc23d018 100644 --- a/pygments/lexers/shell.py +++ b/pygments/lexers/shell.py @@ -11,16 +11,18 @@ import re -from pygments.lexer import Lexer, RegexLexer, do_insertions, bygroups, include +from pygments.lexer import Lexer, RegexLexer, do_insertions, bygroups, \ + include, default, this, using, words from pygments.token import Punctuation, \ - Text, Comment, Operator, Keyword, Name, String, Number, Generic + Text, Comment, Operator, Keyword, Name, String, Number, Generic from pygments.util import shebang_matches __all__ = ['BashLexer', 'BashSessionLexer', 'TcshLexer', 'BatchLexer', - 'PowerShellLexer', 'ShellSessionLexer'] + 'MSDOSSessionLexer', 'PowerShellLexer', + 'PowerShellSessionLexer', 'TcshSessionLexer', 'FishShellLexer'] -line_re = re.compile('.*?\n') +line_re = re.compile('.*?\n') class BashLexer(RegexLexer): @@ -47,7 +49,9 @@ class BashLexer(RegexLexer): (r'\$\(\(', Keyword, 'math'), (r'\$\(', Keyword, 'paren'), (r'\$\{#?', String.Interpol, 'curly'), - (r'\$(\w+|.)', Name.Variable), + (r'\$[a-fA-F_][a-fA-F0-9_]*', Name.Variable), # user variable + (r'\$(?:\d+|[#$?!_*@-])', Name.Variable), # builtin + (r'\$', Text), ], 'basic': [ (r'\b(if|fi|else|while|do|done|for|then|return|function|case|' @@ -58,7 +62,7 @@ class BashLexer(RegexLexer): r'export|false|fc|fg|getopts|hash|help|history|jobs|kill|let|' r'local|logout|popd|printf|pushd|pwd|read|readonly|set|shift|' r'shopt|source|suspend|test|time|times|trap|true|type|typeset|' - r'ulimit|umask|unalias|unset|wait)\s*\b(?!\.)', + r'ulimit|umask|unalias|unset|wait)(?=[\s)`])', Name.Builtin), (r'\A#!.+\n', Comment.Hashbang), (r'#.*\n', Comment.Single), @@ -120,20 +124,14 @@ class BashLexer(RegexLexer): return 0.2 -class BashSessionLexer(Lexer): +class ShellSessionBaseLexer(Lexer): """ - Lexer for simplistic shell sessions. + Base lexer for simplistic shell sessions. - .. versionadded:: 1.1 + .. versionadded:: 2.1 """ - - name = 'Bash Session' - aliases = ['console'] - filenames = ['*.sh-session'] - mimetypes = ['application/x-shell-session'] - def get_tokens_unprocessed(self, text): - bashlexer = BashLexer(**self.options) + innerlexer = self._innerLexerCls(**self.options) pos = 0 curcode = '' @@ -141,8 +139,7 @@ class BashSessionLexer(Lexer): for match in line_re.finditer(text): line = match.group() - m = re.match(r'^((?:\(\S+\))?(?:|sh\S*?|\w+\S+[@:]\S+(?:\s+\S+)' - r'?|\[\S+[@:][^\n]+\].+)[$#%])(.*\n?)' , line) + m = re.match(self._ps1rgx, line) if m: # To support output lexers (say diff output), the output # needs to be broken by prompts whenever the output lexer @@ -153,13 +150,13 @@ class BashSessionLexer(Lexer): insertions.append((len(curcode), [(0, Generic.Prompt, m.group(1))])) curcode += m.group(2) - elif line.startswith('>'): + elif line.startswith(self._ps2): insertions.append((len(curcode), - [(0, Generic.Prompt, line[:1])])) - curcode += line[1:] + [(0, Generic.Prompt, line[:len(self._ps2)])])) + curcode += line[len(self._ps2):] else: if insertions: - toks = bashlexer.get_tokens_unprocessed(curcode) + toks = innerlexer.get_tokens_unprocessed(curcode) for i, t, v in do_insertions(insertions, toks): yield pos+i, t, v yield match.start(), Generic.Output, line @@ -167,54 +164,27 @@ class BashSessionLexer(Lexer): curcode = '' if insertions: for i, t, v in do_insertions(insertions, - bashlexer.get_tokens_unprocessed(curcode)): + innerlexer.get_tokens_unprocessed(curcode)): yield pos+i, t, v -class ShellSessionLexer(Lexer): +class BashSessionLexer(ShellSessionBaseLexer): """ - Lexer for shell sessions that works with different command prompts + Lexer for simplistic shell sessions. - .. versionadded:: 1.6 + .. versionadded:: 1.1 """ - name = 'Shell Session' - aliases = ['shell-session'] - filenames = ['*.shell-session'] - mimetypes = ['application/x-sh-session'] - - def get_tokens_unprocessed(self, text): - bashlexer = BashLexer(**self.options) + name = 'Bash Session' + aliases = ['console', 'shell-session'] + filenames = ['*.sh-session', '*.shell-session'] + mimetypes = ['application/x-shell-session', 'application/x-sh-session'] - pos = 0 - curcode = '' - insertions = [] - - for match in line_re.finditer(text): - line = match.group() - m = re.match(r'^((?:\[?\S+@[^$#%]+\]?\s*)[$#%])(.*\n?)', line) - if m: - # To support output lexers (say diff output), the output - # needs to be broken by prompts whenever the output lexer - # changes. - if not insertions: - pos = match.start() - - insertions.append((len(curcode), - [(0, Generic.Prompt, m.group(1))])) - curcode += m.group(2) - else: - if insertions: - toks = bashlexer.get_tokens_unprocessed(curcode) - for i, t, v in do_insertions(insertions, toks): - yield pos+i, t, v - yield match.start(), Generic.Output, line - insertions = [] - curcode = '' - if insertions: - for i, t, v in do_insertions(insertions, - bashlexer.get_tokens_unprocessed(curcode)): - yield pos+i, t, v + _innerLexerCls = BashLexer + _ps1rgx = \ + r'^((?:(?:\[.*?\])|(?:\(\S+\))?(?:| |sh\S*?|\w+\S+[@:]\S+(?:\s+\S+)' \ + r'?|\[\S+[@:][^\n]+\].+))\s*[$#%])(.*\n?)' + _ps2 = '>' class BatchLexer(RegexLexer): @@ -230,49 +200,317 @@ class BatchLexer(RegexLexer): flags = re.MULTILINE | re.IGNORECASE + _nl = r'\n\x1a' + _punct = r'&<>|' + _ws = r'\t\v\f\r ,;=\xa0' + _space = r'(?:(?:(?:\^[%s])?[%s])+)' % (_nl, _ws) + _keyword_terminator = (r'(?=(?:\^[%s]?)?[%s+./:[\\\]]|[%s%s(])' % + (_nl, _ws, _nl, _punct)) + _token_terminator = r'(?=\^?[%s]|[%s%s])' % (_ws, _punct, _nl) + _start_label = r'((?:(?<=^[^:])|^[^:]?)[%s]*)(:)' % _ws + _label = r'(?:(?:[^%s%s%s+:^]|\^[%s]?[\w\W])*)' % (_nl, _punct, _ws, _nl) + _label_compound = (r'(?:(?:[^%s%s%s+:^)]|\^[%s]?[^)])*)' % + (_nl, _punct, _ws, _nl)) + _number = r'(?:-?(?:0[0-7]+|0x[\da-f]+|\d+)%s)' % _token_terminator + _opword = r'(?:equ|geq|gtr|leq|lss|neq)' + _string = r'(?:"[^%s"]*"?)' % _nl + _variable = (r'(?:(?:%%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|' + r'[^%%:%s]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%%%s^]|' + r'\^[^%%%s])[^=%s]*=(?:[^%%%s^]|\^[^%%%s])*)?)?%%))|' + r'(?:\^?![^!:%s]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:' + r'[^!%s^]|\^[^!%s])[^=%s]*=(?:[^!%s^]|\^[^!%s])*)?)?\^?!))' % + (_nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl)) + _core_token = r'(?:(?:(?:\^[%s]?)?[^%s%s%s])+)' % (_nl, _nl, _punct, _ws) + _core_token_compound = r'(?:(?:(?:\^[%s]?)?[^%s%s%s)])+)' % (_nl, _nl, + _punct, _ws) + _token = r'(?:[%s]+|%s)' % (_punct, _core_token) + _token_compound = r'(?:[%s]+|%s)' % (_punct, _core_token_compound) + _stoken = (r'(?:[%s]+|(?:%s|%s|%s)+)' % + (_punct, _string, _variable, _core_token)) + + def _make_begin_state(compound, _core_token=_core_token, + _core_token_compound=_core_token_compound, + _keyword_terminator=_keyword_terminator, + _nl=_nl, _punct=_punct, _string=_string, + _space=_space, _start_label=_start_label, + _stoken=_stoken, _token_terminator=_token_terminator, + _variable=_variable, _ws=_ws): + rest = '(?:%s|%s|[^"%%%s%s%s])*' % (_string, _variable, _nl, _punct, + ')' if compound else '') + rest_of_line = r'(?:(?:[^%s^]|\^[%s]?[\w\W])*)' % (_nl, _nl) + rest_of_line_compound = r'(?:(?:[^%s^)]|\^[%s]?[^)])*)' % (_nl, _nl) + set_space = r'((?:(?:\^[%s]?)?[^\S\n])*)' % _nl + suffix = '' + if compound: + _keyword_terminator = r'(?:(?=\))|%s)' % _keyword_terminator + _token_terminator = r'(?:(?=\))|%s)' % _token_terminator + suffix = '/compound' + return [ + ((r'\)', Punctuation, '#pop') if compound else + (r'\)((?=\()|%s)%s' % (_token_terminator, rest_of_line), + Comment.Single)), + (r'(?=%s)' % _start_label, Text, 'follow%s' % suffix), + (_space, using(this, state='text')), + include('redirect%s' % suffix), + (r'[%s]+' % _nl, Text), + (r'\(', Punctuation, 'root/compound'), + (r'@+', Punctuation), + (r'((?:for|if|rem)(?:(?=(?:\^[%s]?)?/)|(?:(?!\^)|' + r'(?<=m))(?:(?=\()|%s)))(%s?%s?(?:\^[%s]?)?/(?:\^[%s]?)?\?)' % + (_nl, _token_terminator, _space, + _core_token_compound if compound else _core_token, _nl, _nl), + bygroups(Keyword, using(this, state='text')), + 'follow%s' % suffix), + (r'(goto%s)(%s(?:\^[%s]?)?/(?:\^[%s]?)?\?%s)' % + (_keyword_terminator, rest, _nl, _nl, rest), + bygroups(Keyword, using(this, state='text')), + 'follow%s' % suffix), + (words(('assoc', 'break', 'cd', 'chdir', 'cls', 'color', 'copy', + 'date', 'del', 'dir', 'dpath', 'echo', 'endlocal', 'erase', + 'exit', 'ftype', 'keys', 'md', 'mkdir', 'mklink', 'move', + 'path', 'pause', 'popd', 'prompt', 'pushd', 'rd', 'ren', + 'rename', 'rmdir', 'setlocal', 'shift', 'start', 'time', + 'title', 'type', 'ver', 'verify', 'vol'), + suffix=_keyword_terminator), Keyword, 'follow%s' % suffix), + (r'(call)(%s?)(:)' % _space, + bygroups(Keyword, using(this, state='text'), Punctuation), + 'call%s' % suffix), + (r'call%s' % _keyword_terminator, Keyword), + (r'(for%s(?!\^))(%s)(/f%s)' % + (_token_terminator, _space, _token_terminator), + bygroups(Keyword, using(this, state='text'), Keyword), + ('for/f', 'for')), + (r'(for%s(?!\^))(%s)(/l%s)' % + (_token_terminator, _space, _token_terminator), + bygroups(Keyword, using(this, state='text'), Keyword), + ('for/l', 'for')), + (r'for%s(?!\^)' % _token_terminator, Keyword, ('for2', 'for')), + (r'(goto%s)(%s?)(:?)' % (_keyword_terminator, _space), + bygroups(Keyword, using(this, state='text'), Punctuation), + 'label%s' % suffix), + (r'(if(?:(?=\()|%s)(?!\^))(%s?)((?:/i%s)?)(%s?)((?:not%s)?)(%s?)' % + (_token_terminator, _space, _token_terminator, _space, + _token_terminator, _space), + bygroups(Keyword, using(this, state='text'), Keyword, + using(this, state='text'), Keyword, + using(this, state='text')), ('(?', 'if')), + (r'rem(((?=\()|%s)%s?%s?.*|%s%s)' % + (_token_terminator, _space, _stoken, _keyword_terminator, + rest_of_line_compound if compound else rest_of_line), + Comment.Single, 'follow%s' % suffix), + (r'(set%s)%s(/a)' % (_keyword_terminator, set_space), + bygroups(Keyword, using(this, state='text'), Keyword), + 'arithmetic%s' % suffix), + (r'(set%s)%s((?:/p)?)%s((?:(?:(?:\^[%s]?)?[^"%s%s^=%s]|' + r'\^[%s]?[^"=])+)?)((?:(?:\^[%s]?)?=)?)' % + (_keyword_terminator, set_space, set_space, _nl, _nl, _punct, + ')' if compound else '', _nl, _nl), + bygroups(Keyword, using(this, state='text'), Keyword, + using(this, state='text'), using(this, state='variable'), + Punctuation), + 'follow%s' % suffix), + default('follow%s' % suffix) + ] + + def _make_follow_state(compound, _label=_label, + _label_compound=_label_compound, _nl=_nl, + _space=_space, _start_label=_start_label, + _token=_token, _token_compound=_token_compound, + _ws=_ws): + suffix = '/compound' if compound else '' + state = [] + if compound: + state.append((r'(?=\))', Text, '#pop')) + state += [ + (r'%s([%s]*)(%s)(.*)' % + (_start_label, _ws, _label_compound if compound else _label), + bygroups(Text, Punctuation, Text, Name.Label, Comment.Single)), + include('redirect%s' % suffix), + (r'(?=[%s])' % _nl, Text, '#pop'), + (r'\|\|?|&&?', Punctuation, '#pop'), + include('text') + ] + return state + + def _make_arithmetic_state(compound, _nl=_nl, _punct=_punct, + _string=_string, _variable=_variable, _ws=_ws): + op = r'=+\-*/!~' + state = [] + if compound: + state.append((r'(?=\))', Text, '#pop')) + state += [ + (r'0[0-7]+', Number.Oct), + (r'0x[\da-f]+', Number.Hex), + (r'\d+', Number.Integer), + (r'[(),]+', Punctuation), + (r'([%s]|%%|\^\^)+' % op, Operator), + (r'(%s|%s|(\^[%s]?)?[^()%s%%^"%s%s%s]|\^[%s%s]?%s)+' % + (_string, _variable, _nl, op, _nl, _punct, _ws, _nl, _ws, + r'[^)]' if compound else r'[\w\W]'), + using(this, state='variable')), + (r'(?=[\x00|&])', Text, '#pop'), + include('follow') + ] + return state + + def _make_call_state(compound, _label=_label, + _label_compound=_label_compound): + state = [] + if compound: + state.append((r'(?=\))', Text, '#pop')) + state.append((r'(:?)(%s)' % (_label_compound if compound else _label), + bygroups(Punctuation, Name.Label), '#pop')) + return state + + def _make_label_state(compound, _label=_label, + _label_compound=_label_compound, _nl=_nl, + _punct=_punct, _string=_string, _variable=_variable): + state = [] + if compound: + state.append((r'(?=\))', Text, '#pop')) + state.append((r'(%s?)((?:%s|%s|\^[%s]?%s|[^"%%^%s%s%s])*)' % + (_label_compound if compound else _label, _string, + _variable, _nl, r'[^)]' if compound else r'[\w\W]', _nl, + _punct, r')' if compound else ''), + bygroups(Name.Label, Comment.Single), '#pop')) + return state + + def _make_redirect_state(compound, + _core_token_compound=_core_token_compound, + _nl=_nl, _punct=_punct, _stoken=_stoken, + _string=_string, _space=_space, + _variable=_variable, _ws=_ws): + stoken_compound = (r'(?:[%s]+|(?:%s|%s|%s)+)' % + (_punct, _string, _variable, _core_token_compound)) + return [ + (r'((?:(?<=[%s%s])\d)?)(>>?&|<&)([%s%s]*)(\d)' % + (_nl, _ws, _nl, _ws), + bygroups(Number.Integer, Punctuation, Text, Number.Integer)), + (r'((?:(?<=[%s%s])(?<!\^[%s])\d)?)(>>?|<)(%s?%s)' % + (_nl, _ws, _nl, _space, stoken_compound if compound else _stoken), + bygroups(Number.Integer, Punctuation, using(this, state='text'))) + ] + tokens = { - 'root': [ - # Lines can start with @ to prevent echo - (r'^\s*@', Punctuation), - (r'^(\s*)(rem\s.*)$', bygroups(Text, Comment)), - (r'".*?"', String.Double), - (r"'.*?'", String.Single), - # If made more specific, make sure you still allow expansions - # like %~$VAR:zlt - (r'%%?[~$:\w]+%?', Name.Variable), - (r'::.*', Comment), # Technically :: only works at BOL - (r'\b(set)(\s+)(\w+)', bygroups(Keyword, Text, Name.Variable)), - (r'\b(call)(\s+)(:\w+)', bygroups(Keyword, Text, Name.Label)), - (r'\b(goto)(\s+)(\w+)', bygroups(Keyword, Text, Name.Label)), - (r'\b(set|call|echo|on|off|endlocal|for|do|goto|if|pause|' - r'setlocal|shift|errorlevel|exist|defined|cmdextversion|' - r'errorlevel|else|cd|md|del|deltree|cls|choice)\b', Keyword), - (r'\b(equ|neq|lss|leq|gtr|geq)\b', Operator), - include('basic'), - (r'.', Text), + 'root': _make_begin_state(False), + 'follow': _make_follow_state(False), + 'arithmetic': _make_arithmetic_state(False), + 'call': _make_call_state(False), + 'label': _make_label_state(False), + 'redirect': _make_redirect_state(False), + 'root/compound': _make_begin_state(True), + 'follow/compound': _make_follow_state(True), + 'arithmetic/compound': _make_arithmetic_state(True), + 'call/compound': _make_call_state(True), + 'label/compound': _make_label_state(True), + 'redirect/compound': _make_redirect_state(True), + 'variable-or-escape': [ + (_variable, Name.Variable), + (r'%%%%|\^[%s]?(\^!|[\w\W])' % _nl, String.Escape) ], - 'echo': [ - # Escapes only valid within echo args? - (r'\^\^|\^<|\^>|\^\|', String.Escape), - (r'\n', Text, '#pop'), - include('basic'), - (r'[^\'"^]+', Text), + 'string': [ + (r'"', String.Double, '#pop'), + (_variable, Name.Variable), + (r'\^!|%%', String.Escape), + (r'[^"%%^%s]+|[%%^]' % _nl, String.Double), + default('#pop') ], - 'basic': [ - (r'".*?"', String.Double), - (r"'.*?'", String.Single), - (r'`.*?`', String.Backtick), - (r'-?\d+', Number), - (r',', Punctuation), - (r'=', Operator), - (r'/\S+', Name), - (r':\w+', Name.Label), - (r'\w:\w+', Text), - (r'([<>|])(\s*)(\w+)', bygroups(Punctuation, Text, Name)), + 'sqstring': [ + include('variable-or-escape'), + (r'[^%]+|%', String.Single) + ], + 'bqstring': [ + include('variable-or-escape'), + (r'[^%]+|%', String.Backtick) + ], + 'text': [ + (r'"', String.Double, 'string'), + include('variable-or-escape'), + (r'[^"%%^%s%s%s\d)]+|.' % (_nl, _punct, _ws), Text) ], + 'variable': [ + (r'"', String.Double, 'string'), + include('variable-or-escape'), + (r'[^"%%^%s]+|.' % _nl, Name.Variable) + ], + 'for': [ + (r'(%s)(in)(%s)(\()' % (_space, _space), + bygroups(using(this, state='text'), Keyword, + using(this, state='text'), Punctuation), '#pop'), + include('follow') + ], + 'for2': [ + (r'\)', Punctuation), + (r'(%s)(do%s)' % (_space, _token_terminator), + bygroups(using(this, state='text'), Keyword), '#pop'), + (r'[%s]+' % _nl, Text), + include('follow') + ], + 'for/f': [ + (r'(")((?:%s|[^"])*?")([%s%s]*)(\))' % (_variable, _nl, _ws), + bygroups(String.Double, using(this, state='string'), Text, + Punctuation)), + (r'"', String.Double, ('#pop', 'for2', 'string')), + (r"('(?:%s|[\w\W])*?')([%s%s]*)(\))" % (_variable, _nl, _ws), + bygroups(using(this, state='sqstring'), Text, Punctuation)), + (r'(`(?:%s|[\w\W])*?`)([%s%s]*)(\))' % (_variable, _nl, _ws), + bygroups(using(this, state='bqstring'), Text, Punctuation)), + include('for2') + ], + 'for/l': [ + (r'-?\d+', Number.Integer), + include('for2') + ], + 'if': [ + (r'((?:cmdextversion|errorlevel)%s)(%s)(\d+)' % + (_token_terminator, _space), + bygroups(Keyword, using(this, state='text'), + Number.Integer), '#pop'), + (r'(defined%s)(%s)(%s)' % (_token_terminator, _space, _stoken), + bygroups(Keyword, using(this, state='text'), + using(this, state='variable')), '#pop'), + (r'(exist%s)(%s%s)' % (_token_terminator, _space, _stoken), + bygroups(Keyword, using(this, state='text')), '#pop'), + (r'(%s%s?)(==)(%s?%s)' % (_stoken, _space, _space, _stoken), + bygroups(using(this, state='text'), Operator, + using(this, state='text')), '#pop'), + (r'(%s%s)(%s)(%s%s)' % (_number, _space, _opword, _space, _number), + bygroups(using(this, state='arithmetic'), Operator.Word, + using(this, state='arithmetic')), '#pop'), + (r'(%s%s)(%s)(%s%s)' % (_stoken, _space, _opword, _space, _stoken), + bygroups(using(this, state='text'), Operator.Word, + using(this, state='text')), '#pop') + ], + '(?': [ + (_space, using(this, state='text')), + (r'\(', Punctuation, ('#pop', 'else?', 'root/compound')), + default('#pop') + ], + 'else?': [ + (_space, using(this, state='text')), + (r'else%s' % _token_terminator, Keyword, '#pop'), + default('#pop') + ] } +class MSDOSSessionLexer(ShellSessionBaseLexer): + """ + Lexer for simplistic MSDOS sessions. + + .. versionadded:: 2.1 + """ + + name = 'MSDOS Session' + aliases = ['doscon'] + filenames = [] + mimetypes = [] + + _innerLexerCls = BatchLexer + _ps1rgx = r'^([^>]+>)(.*\n?)' + _ps2 = 'More? ' + + class TcshLexer(RegexLexer): """ Lexer for tcsh scripts. @@ -341,6 +579,23 @@ class TcshLexer(RegexLexer): } +class TcshSessionLexer(ShellSessionBaseLexer): + """ + Lexer for Tcsh sessions. + + .. versionadded:: 2.1 + """ + + name = 'Tcsh Session' + aliases = ['tcshcon'] + filenames = [] + mimetypes = [] + + _innerLexerCls = TcshLexer + _ps1rgx = r'^([^>]+>)(.*\n?)' + _ps2 = '? ' + + class PowerShellLexer(RegexLexer): """ For Windows PowerShell code. @@ -349,7 +604,7 @@ class PowerShellLexer(RegexLexer): """ name = 'PowerShell' aliases = ['powershell', 'posh', 'ps1', 'psm1'] - filenames = ['*.ps1','*.psm1'] + filenames = ['*.ps1', '*.psm1'] mimetypes = ['text/x-powershell'] flags = re.DOTALL | re.IGNORECASE | re.MULTILINE @@ -436,3 +691,93 @@ class PowerShellLexer(RegexLexer): (r".", String.Heredoc), ] } + + +class PowerShellSessionLexer(ShellSessionBaseLexer): + """ + Lexer for simplistic Windows PowerShell sessions. + + .. versionadded:: 2.1 + """ + + name = 'PowerShell Session' + aliases = ['ps1con'] + filenames = [] + mimetypes = [] + + _innerLexerCls = PowerShellLexer + _ps1rgx = r'^(PS [^>]+> )(.*\n?)' + _ps2 = '>> ' + + +class FishShellLexer(RegexLexer): + """ + Lexer for Fish shell scripts. + + .. versionadded:: 2.1 + """ + + name = 'Fish' + aliases = ['fish', 'fishshell'] + filenames = ['*.fish', '*.load'] + mimetypes = ['application/x-fish'] + + tokens = { + 'root': [ + include('basic'), + include('data'), + include('interp'), + ], + 'interp': [ + (r'\$\(\(', Keyword, 'math'), + (r'\(', Keyword, 'paren'), + (r'\$#?(\w+|.)', Name.Variable), + ], + 'basic': [ + (r'\b(begin|end|if|else|while|break|for|in|return|function|block|' + r'case|continue|switch|not|and|or|set|echo|exit|pwd|true|false|' + r'cd|count|test)(\s*)\b', + bygroups(Keyword, Text)), + (r'\b(alias|bg|bind|breakpoint|builtin|command|commandline|' + r'complete|contains|dirh|dirs|emit|eval|exec|fg|fish|fish_config|' + r'fish_indent|fish_pager|fish_prompt|fish_right_prompt|' + r'fish_update_completions|fishd|funced|funcsave|functions|help|' + r'history|isatty|jobs|math|mimedb|nextd|open|popd|prevd|psub|' + r'pushd|random|read|set_color|source|status|trap|type|ulimit|' + r'umask|vared|fc|getopts|hash|kill|printf|time|wait)\s*\b(?!\.)', + Name.Builtin), + (r'#.*\n', Comment), + (r'\\[\w\W]', String.Escape), + (r'(\b\w+)(\s*)(=)', bygroups(Name.Variable, Text, Operator)), + (r'[\[\]()=]', Operator), + (r'<<-?\s*(\'?)\\?(\w+)[\w\W]+?\2', String), + ], + 'data': [ + (r'(?s)\$?"(\\\\|\\[0-7]+|\\.|[^"\\$])*"', String.Double), + (r'"', String.Double, 'string'), + (r"(?s)\$'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single), + (r"(?s)'.*?'", String.Single), + (r';', Punctuation), + (r'&|\||\^|<|>', Operator), + (r'\s+', Text), + (r'\d+(?= |\Z)', Number), + (r'[^=\s\[\]{}()$"\'`\\<&|;]+', Text), + ], + 'string': [ + (r'"', String.Double, '#pop'), + (r'(?s)(\\\\|\\[0-7]+|\\.|[^"\\$])+', String.Double), + include('interp'), + ], + 'paren': [ + (r'\)', Keyword, '#pop'), + include('root'), + ], + 'math': [ + (r'\)\)', Keyword, '#pop'), + (r'[-+*/%^|&]|\*\*|\|\|', Operator), + (r'\d+#\d+', Number), + (r'\d+#(?! )', Number), + (r'\d+', Number), + include('root'), + ], + } diff --git a/pygments/lexers/sql.py b/pygments/lexers/sql.py index f575ed38..646a9f31 100644 --- a/pygments/lexers/sql.py +++ b/pygments/lexers/sql.py @@ -489,8 +489,8 @@ class MySqlLexer(RegexLexer): r'day_hour|day_microsecond|day_minute|day_second|dec|decimal|' r'declare|default|delayed|delete|desc|describe|deterministic|' r'distinct|distinctrow|div|double|drop|dual|each|else|elseif|' - r'enclosed|escaped|exists|exit|explain|fetch|float|float4|float8' - r'|for|force|foreign|from|fulltext|grant|group|having|' + r'enclosed|escaped|exists|exit|explain|fetch|flush|float|float4|' + r'float8|for|force|foreign|from|fulltext|grant|group|having|' r'high_priority|hour_microsecond|hour_minute|hour_second|if|' r'ignore|in|index|infile|inner|inout|insensitive|insert|int|' r'int1|int2|int3|int4|int8|integer|interval|into|is|iterate|' diff --git a/pygments/lexers/supercollider.py b/pygments/lexers/supercollider.py new file mode 100644 index 00000000..d3e4c460 --- /dev/null +++ b/pygments/lexers/supercollider.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.supercollider + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lexer for SuperCollider + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re + +from pygments.lexer import RegexLexer, include, words +from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ + Number, Punctuation + +__all__ = ['SuperColliderLexer'] + + +class SuperColliderLexer(RegexLexer): + """ + For `SuperCollider <http://supercollider.github.io/>`_ source code. + + .. versionadded:: 2.1 + """ + + name = 'SuperCollider' + aliases = ['sc', 'supercollider'] + filenames = ['*.sc', '*.scd'] + mimetypes = ['application/supercollider', 'text/supercollider', ] + + flags = re.DOTALL | re.MULTILINE + tokens = { + 'commentsandwhitespace': [ + (r'\s+', Text), + (r'<!--', Comment), + (r'//.*?\n', Comment.Single), + (r'/\*.*?\*/', Comment.Multiline) + ], + 'slashstartsregex': [ + include('commentsandwhitespace'), + (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/' + r'([gim]+\b|\B)', String.Regex, '#pop'), + (r'(?=/)', Text, ('#pop', 'badregex')), + (r'', Text, '#pop') + ], + 'badregex': [ + (r'\n', Text, '#pop') + ], + 'root': [ + (r'^(?=\s|/|<!--)', Text, 'slashstartsregex'), + include('commentsandwhitespace'), + (r'\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|' + r'(<<|>>>?|==?|!=?|[-<>+*%&|^/])=?', Operator, 'slashstartsregex'), + (r'[{(\[;,]', Punctuation, 'slashstartsregex'), + (r'[})\].]', Punctuation), + (words(( + 'for', 'in', 'while', 'do', 'break', 'return', 'continue', + 'switch', 'case', 'default', 'if', 'else', 'throw', 'try', + 'catch', 'finally', 'new', 'delete', 'typeof', 'instanceof', + 'void'), suffix=r'\b'), + Keyword, 'slashstartsregex'), + (words(('var', 'let', 'with', 'function', 'arg'), suffix=r'\b'), + Keyword.Declaration, 'slashstartsregex'), + (words(( + '(abstract', 'boolean', 'byte', 'char', 'class', 'const', + 'debugger', 'double', 'enum', 'export', 'extends', 'final', + 'float', 'goto', 'implements', 'import', 'int', 'interface', + 'long', 'native', 'package', 'private', 'protected', 'public', + 'short', 'static', 'super', 'synchronized', 'throws', + 'transient', 'volatile'), suffix=r'\b'), + Keyword.Reserved), + (words(('true', 'false', 'nil', 'inf'), suffix=r'\b'), Keyword.Constant), + (words(( + 'Array', 'Boolean', 'Date', 'Error', 'Function', 'Number', + 'Object', 'Packages', 'RegExp', 'String', 'Error', + 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'super', + 'thisFunctionDef', 'thisFunction', 'thisMethod', 'thisProcess', + 'thisThread', 'this'), suffix=r'\b'), + Name.Builtin), + (r'[$a-zA-Z_][a-zA-Z0-9_]*', Name.Other), + (r'\\?[$a-zA-Z_][a-zA-Z0-9_]*', String.Symbol), + (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float), + (r'0x[0-9a-fA-F]+', Number.Hex), + (r'[0-9]+', Number.Integer), + (r'"(\\\\|\\"|[^"])*"', String.Double), + (r"'(\\\\|\\'|[^'])*'", String.Single), + ] + } diff --git a/pygments/lexers/templates.py b/pygments/lexers/templates.py index bfca0d38..71055a9f 100644 --- a/pygments/lexers/templates.py +++ b/pygments/lexers/templates.py @@ -568,10 +568,12 @@ class MasonLexer(RegexLexer): } def analyse_text(text): - rv = 0.0 - if re.search('<&', text) is not None: - rv = 1.0 - return rv + result = 0.0 + if re.search(r'</%(class|doc|init)%>', text) is not None: + result = 1.0 + elif re.search(r'<&.+&>', text, re.DOTALL) is not None: + result = 0.11 + return result class MakoLexer(RegexLexer): diff --git a/pygments/lexers/testing.py b/pygments/lexers/testing.py index 4a91c5b1..0bdebe74 100644 --- a/pygments/lexers/testing.py +++ b/pygments/lexers/testing.py @@ -10,9 +10,9 @@ """ from pygments.lexer import RegexLexer, include, bygroups -from pygments.token import Comment, Keyword, Name, String +from pygments.token import Comment, Keyword, Name, String, Number, Generic, Text -__all__ = ['GherkinLexer'] +__all__ = ['GherkinLexer', 'TAPLexer'] class GherkinLexer(RegexLexer): @@ -26,10 +26,10 @@ class GherkinLexer(RegexLexer): filenames = ['*.feature'] mimetypes = ['text/x-gherkin'] - feature_keywords = u'^(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Фича|Особина|Могућност|Özellik|Właściwość|Tính năng|Trajto|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd)(:)(.*)$' + feature_keywords = u'^(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Фича|Особина|Могућност|Özellik|Właściwość|Tính năng|Trajto|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd)(:)(.*)$' feature_element_keywords = u'^(\\s*)(시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|剧本大纲|剧本|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|سيناريو مخطط|سيناريو|الخلفية|תרחיש|תבנית תרחיש|רקע|Тарих|Сценарій|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Пример|Предыстория|Предистория|Позадина|Передумова|Основа|Концепт|Контекст|Założenia|Wharrimean is|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenaro|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenario Outline|Scenario Amlinellol|Scenario|Scenarijus|Scenarijaus šablonas|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Konturo de la scenaro|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Fono|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l\'escenari|Escenario|Escenari|Dis is what went down|Dasar|Contexto|Contexte|Contesto|Condiţii|Conditii|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y\'all|Achtergrond|Abstrakt Scenario|Abstract Scenario)(:)(.*)$' - examples_keywords = u'^(\\s*)(예|例子|例|サンプル|امثلة|דוגמאות|Сценарији|Примери|Приклади|Мисоллар|Значения|Örnekler|Voorbeelden|Variantai|Tapaukset|Scenarios|Scenariji|Scenarijai|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Piemēri|Pavyzdžiai|Paraugs|Juhtumid|Exemplos|Exemples|Exemplele|Exempel|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Contoh|Cobber|Beispiele)(:)(.*)$' - step_keywords = u'^(\\s*)(하지만|조건|먼저|만일|만약|단|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假设|假如|假定|但是|但し|並且|并且|同時|同时|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Унда |То |Припустимо, що |Припустимо |Онда |Но |Нехай |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Але |Агар |А |І |Și |És |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Youse know when youse got |Youse know like when |Yna |Ya know how |Ya gotta |Y |Wun |Wtedy |When y\'all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y\'all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Sed |Se |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu\'|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kaj |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y\'all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Dengan |Den youse gotta |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |Cal |But y\'all |But |Buh |Biết |Bet |BUT |Atès |Atunci |Atesa |Anrhegedig a |Angenommen |And y\'all |And |An |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\* )' + examples_keywords = u'^(\\s*)(예|例子|例|サンプル|امثلة|דוגמאות|Сценарији|Примери|Приклади|Мисоллар|Значения|Örnekler|Voorbeelden|Variantai|Tapaukset|Scenarios|Scenariji|Scenarijai|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Piemēri|Pavyzdžiai|Paraugs|Juhtumid|Exemplos|Exemples|Exemplele|Exempel|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Contoh|Cobber|Beispiele)(:)(.*)$' + step_keywords = u'^(\\s*)(하지만|조건|먼저|만일|만약|단|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假设|假如|假定|但是|但し|並且|并且|同時|同时|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Унда |То |Припустимо, що |Припустимо |Онда |Но |Нехай |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Але |Агар |А |І |Și |És |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Youse know when youse got |Youse know like when |Yna |Ya know how |Ya gotta |Y |Wun |Wtedy |When y\'all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y\'all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Sed |Se |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu\'|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kaj |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y\'all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Dengan |Den youse gotta |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |Cal |But y\'all |But |Buh |Biết |Bet |BUT |Atès |Atunci |Atesa |Anrhegedig a |Angenommen |And y\'all |And |An |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\* )' tokens = { 'comments': [ @@ -129,3 +129,79 @@ class GherkinLexer(RegexLexer): (r'(\s|.)', Name.Function), ] } + + +class TAPLexer(RegexLexer): + """ + For Test Anything Protocol (TAP) output. + + .. versionadded:: 2.1 + """ + name = 'TAP' + aliases = ['tap'] + filenames = ['*.tap'] + + tokens = { + 'root': [ + # A TAP version may be specified. + (r'^TAP version \d+\n', Name.Namespace), + + # Specify a plan with a plan line. + (r'^1..\d+', Keyword.Declaration, 'plan'), + + # A test failure + (r'^(not ok)([^\S\n]*)(\d*)', + bygroups(Generic.Error, Text, Number.Integer), 'test'), + + # A test success + (r'^(ok)([^\S\n]*)(\d*)', + bygroups(Keyword.Reserved, Text, Number.Integer), 'test'), + + # Diagnostics start with a hash. + (r'^#.*\n', Comment), + + # TAP's version of an abort statement. + (r'^Bail out!.*\n', Generic.Error), + + # TAP ignores any unrecognized lines. + (r'^.*\n', Text), + ], + 'plan': [ + # Consume whitespace (but not newline). + (r'[^\S\n]+', Text), + + # A plan may have a directive with it. + (r'#', Comment, 'directive'), + + # Or it could just end. + (r'\n', Comment, '#pop'), + + # Anything else is wrong. + (r'.*\n', Generic.Error, '#pop'), + ], + 'test': [ + # Consume whitespace (but not newline). + (r'[^\S\n]+', Text), + + # A test may have a directive with it. + (r'#', Comment, 'directive'), + + (r'\S+', Text), + + (r'\n', Text, '#pop'), + ], + 'directive': [ + # Consume whitespace (but not newline). + (r'[^\S\n]+', Comment), + + # Extract todo items. + (r'(?i)\bTODO\b', Comment.Preproc), + + # Extract skip items. + (r'(?i)\bSKIP\S*', Comment.Preproc), + + (r'\S+', Comment), + + (r'\n', Comment, '#pop:2'), + ], + } diff --git a/pygments/lexers/theorem.py b/pygments/lexers/theorem.py index 47fdc8b6..60a101cc 100644 --- a/pygments/lexers/theorem.py +++ b/pygments/lexers/theorem.py @@ -43,7 +43,8 @@ class CoqLexer(RegexLexer): 'Proposition', 'Fact', 'Remark', 'Example', 'Proof', 'Goal', 'Save', 'Qed', 'Defined', 'Hint', 'Resolve', 'Rewrite', 'View', 'Search', 'Show', 'Print', 'Printing', 'All', 'Graph', 'Projections', 'inside', - 'outside', 'Check', + 'outside', 'Check', 'Global', 'Instance', 'Class', 'Existing', + 'Universe', 'Polymorphic', 'Monomorphic', 'Context' ) keywords2 = ( # Gallina @@ -64,12 +65,16 @@ class CoqLexer(RegexLexer): 'unfold', 'change', 'cutrewrite', 'simpl', 'have', 'suff', 'wlog', 'suffices', 'without', 'loss', 'nat_norm', 'assert', 'cut', 'trivial', 'revert', 'bool_congr', 'nat_congr', 'symmetry', 'transitivity', 'auto', - 'split', 'left', 'right', 'autorewrite', 'tauto', + 'split', 'left', 'right', 'autorewrite', 'tauto', 'setoid_rewrite', + 'intuition', 'eauto', 'eapply', 'econstructor', 'etransitivity', + 'constructor', 'erewrite', 'red', 'cbv', 'lazy', 'vm_compute', + 'native_compute', 'subst', ) keywords5 = ( # Terminators 'by', 'done', 'exact', 'reflexivity', 'tauto', 'romega', 'omega', 'assumption', 'solve', 'contradiction', 'discriminate', + 'congruence', ) keywords6 = ( # Control @@ -87,15 +92,13 @@ class CoqLexer(RegexLexer): '->', r'\.', r'\.\.', ':', '::', ':=', ':>', ';', ';;', '<', '<-', '<->', '=', '>', '>]', r'>\}', r'\?', r'\?\?', r'\[', r'\[<', r'\[>', r'\[\|', ']', '_', '`', r'\{', r'\{<', r'\|', r'\|]', r'\}', '~', '=>', - r'/\\', r'\\/', + r'/\\', r'\\/', r'\{\|', r'\|\}', u'Π', u'λ', ) operators = r'[!$%&*+\./:<=>?@^|~-]' - word_operators = ('and', 'asr', 'land', 'lor', 'lsl', 'lxor', 'mod', 'or') prefix_syms = r'[!?~]' infix_syms = r'[=<>@^|&+\*/$%-]' - primitives = ('unit', 'int', 'float', 'bool', 'string', 'char', 'list', - 'array') + primitives = ('unit', 'nat', 'bool', 'string', 'ascii', 'list') tokens = { 'root': [ @@ -108,11 +111,10 @@ class CoqLexer(RegexLexer): (words(keywords4, prefix=r'\b', suffix=r'\b'), Keyword), (words(keywords5, prefix=r'\b', suffix=r'\b'), Keyword.Pseudo), (words(keywords6, prefix=r'\b', suffix=r'\b'), Keyword.Reserved), - (r'\b([A-Z][\w\']*)(?=\s*\.)', Name.Namespace, 'dotted'), - (r'\b([A-Z][\w\']*)', Name.Class), + # (r'\b([A-Z][\w\']*)(\.)', Name.Namespace, 'dotted'), + (r'\b([A-Z][\w\']*)', Name), (r'(%s)' % '|'.join(keyopts[::-1]), Operator), (r'(%s|%s)?%s' % (infix_syms, prefix_syms, operators), Operator), - (r'\b(%s)\b' % '|'.join(word_operators), Operator.Word), (r'\b(%s)\b' % '|'.join(primitives), Keyword.Type), (r"[^\W\d][\w']*", Name), @@ -130,7 +132,7 @@ class CoqLexer(RegexLexer): (r'"', String.Double, 'string'), - (r'[~?][a-z][\w\']*:', Name.Variable), + (r'[~?][a-z][\w\']*:', Name), ], 'comment': [ (r'[^(*)]+', Comment), diff --git a/pygments/lexers/trafficscript.py b/pygments/lexers/trafficscript.py new file mode 100644 index 00000000..34ca7d5b --- /dev/null +++ b/pygments/lexers/trafficscript.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +""" + + pygments.lexers.trafficscript + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lexer for RiverBed's TrafficScript (RTS) language. + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" +import re + +from pygments.lexer import RegexLexer +from pygments.token import String, Number, Name, Keyword, Operator, Text, Comment + +__all__ = ['RtsLexer'] + +class RtsLexer(RegexLexer): + """ + For `Riverbed Stingray Traffic Manager <http://www.riverbed.com/stingray>`_ + + .. versionadded:: 2.1 + """ + name = 'TrafficScript' + aliases = ['rts','trafficscript'] + filenames = ['*.rts'] + + tokens = { + 'root' : [ + (r"'(\\\\|\\[^\\]|[^'\\])*'", String), + (r'"', String, 'escapable-string'), + (r'(0x[0-9a-fA-F]+|\d+)', Number), + (r'\d+\.\d+', Number.Float), + (r'\$[a-zA-Z](\w|_)*', Name.Variable), + (r'(if|else|for(each)?|in|while|do|break|sub|return|import)', Keyword), + (r'[a-zA-Z][\w.]*', Name.Function), + (r'[-+*/%=,;(){}<>^.!~|&\[\]\?\:]', Operator), + (r'(>=|<=|==|!=|' + r'&&|\|\||' + r'\+=|.=|-=|\*=|/=|%=|<<=|>>=|&=|\|=|\^=|' + r'>>|<<|' + r'\+\+|--|=>)', Operator), + (r'[ \t\r]+', Text), + (r'#[^\n]*', Comment), + ], + 'escapable-string' : [ + (r'\\[tsn]', String.Escape), + (r'[^"]', String), + (r'"', String, '#pop'), + ], + + } diff --git a/pygments/lexers/webmisc.py b/pygments/lexers/webmisc.py index 08b6c969..def11dba 100644 --- a/pygments/lexers/webmisc.py +++ b/pygments/lexers/webmisc.py @@ -333,13 +333,14 @@ class XQueryLexer(ExtendedRegexLexer): (r'(\{)', pushstate_root_callback), (r'then|else|external|at|div|except', Keyword, 'root'), (r'order by', Keyword, 'root'), + (r'group by', Keyword, 'root'), (r'is|mod|order\s+by|stable\s+order\s+by', Keyword, 'root'), (r'and|or', Operator.Word, 'root'), (r'(eq|ge|gt|le|lt|ne|idiv|intersect|in)(?=\b)', Operator.Word, 'root'), (r'return|satisfies|to|union|where|preserve\s+strip', Keyword, 'root'), - (r'(>=|>>|>|<=|<<|<|-|\*|!=|\+|\|\||\||:=|=)', + (r'(>=|>>|>|<=|<<|<|-|\*|!=|\+|\|\||\||:=|=|!)', operator_root_callback), (r'(::|;|\[|//|/|,)', punctuation_root_callback), @@ -349,6 +350,8 @@ class XQueryLexer(ExtendedRegexLexer): bygroups(Keyword, Text, Keyword), 'itemtype'), (r'(treat)(\s+)(as)\b', bygroups(Keyword, Text, Keyword), 'itemtype'), + (r'(case)(\s+)(' + stringdouble + ')', bygroups(Keyword, Text, String.Double), 'itemtype'), + (r'(case)(\s+)(' + stringsingle + ')', bygroups(Keyword, Text, String.Single), 'itemtype'), (r'(case|as)\b', Keyword, 'itemtype'), (r'(\))(\s*)(as)', bygroups(Punctuation, Text, Keyword), 'itemtype'), @@ -361,6 +364,13 @@ class XQueryLexer(ExtendedRegexLexer): (r'ascending|descending|default', Keyword, '#push'), (r'external', Keyword), (r'collation', Keyword, 'uritooperator'), + + # eXist specific XQUF + (r'(into|following|preceding|with)', Keyword, 'root'), + + # support for current context on rhs of Simple Map Operator + (r'\.', Operator), + # finally catch all string literals and stay in operator state (stringdouble, String.Double), (stringsingle, String.Single), @@ -394,9 +404,21 @@ class XQueryLexer(ExtendedRegexLexer): (r'preserve|no-preserve', Keyword), (r',', Punctuation), ], + 'annotationname':[ + (r'\(:', Comment, 'comment'), + (qname, Name.Decorator), + (r'(\()(' + stringdouble + ')', bygroups(Punctuation, String.Double)), + (r'(\()(' + stringsingle + ')', bygroups(Punctuation, String.Single)), + (r'(\,)(\s+)(' + stringdouble + ')', bygroups(Punctuation, Text, String.Double)), + (r'(\,)(\s+)(' + stringsingle + ')', bygroups(Punctuation, Text, String.Single)), + (r'\)', Punctuation), + (r'(\s+)(\%)', bygroups(Text, Name.Decorator), 'annotationname'), + (r'(\s+)(variable)(\s+)(\$)', bygroups(Text, Keyword.Declaration, Text, Name.Variable), 'varname'), + (r'(\s+)(function)(\s+)', bygroups(Text, Keyword.Declaration, Text), 'root') + ], 'varname': [ (r'\(:', Comment, 'comment'), - (qname, Name.Variable, 'operator'), + (r'(' + qname + ')(\()?', bygroups(Name, Punctuation), 'operator'), ], 'singletype': [ (r'\(:', Comment, 'comment'), @@ -406,7 +428,7 @@ class XQueryLexer(ExtendedRegexLexer): 'itemtype': [ include('whitespace'), (r'\(:', Comment, 'comment'), - (r'\$', Punctuation, 'varname'), + (r'\$', Name.Variable, 'varname'), (r'(void)(\s*)(\()(\s*)(\))', bygroups(Keyword, Text, Punctuation, Text, Punctuation), 'operator'), (r'(element|attribute|schema-element|schema-attribute|comment|text|' @@ -415,11 +437,11 @@ class XQueryLexer(ExtendedRegexLexer): # Marklogic specific type? (r'(processing-instruction)(\s*)(\()', bygroups(Keyword, Text, Punctuation), - ('occurrenceindicator', 'kindtestforpi')), + ('occurrenceindicator', 'kindtestforpi')), (r'(item)(\s*)(\()(\s*)(\))(?=[*+?])', bygroups(Keyword, Text, Punctuation, Text, Punctuation), 'occurrenceindicator'), - (r'\(\#', Punctuation, 'pragma'), + (r'(\(\#)(\s*)', bygroups(Punctuation, Text), 'pragma'), (r';', Punctuation, '#pop'), (r'then|else', Keyword, '#pop'), (r'(at)(\s+)(' + stringdouble + ')', @@ -437,9 +459,12 @@ class XQueryLexer(ExtendedRegexLexer): bygroups(Keyword, Text, Keyword), 'singletype'), (r'(treat)(\s+)(as)', bygroups(Keyword, Text, Keyword)), (r'(instance)(\s+)(of)', bygroups(Keyword, Text, Keyword)), + (r'(case)(\s+)(' + stringdouble + ')', bygroups(Keyword, Text, String.Double), 'itemtype'), + (r'(case)(\s+)(' + stringsingle + ')', bygroups(Keyword, Text, String.Single), 'itemtype'), (r'case|as', Keyword, 'itemtype'), (r'(\))(\s*)(as)', bygroups(Operator, Text, Keyword), 'itemtype'), (ncname + r':\*', Keyword.Type, 'operator'), + (r'(function)(\()', bygroups(Keyword.Type, Punctuation)), (qname, Keyword.Type, 'occurrenceindicator'), ], 'kindtest': [ @@ -589,9 +614,9 @@ class XQueryLexer(ExtendedRegexLexer): (r'(\d+)', Number.Integer, 'operator'), (r'(\.\.|\.|\))', Punctuation, 'operator'), (r'(declare)(\s+)(construction)', - bygroups(Keyword, Text, Keyword), 'operator'), + bygroups(Keyword.Declaration, Text, Keyword.Declaration), 'operator'), (r'(declare)(\s+)(default)(\s+)(order)', - bygroups(Keyword, Text, Keyword, Text, Keyword), 'operator'), + bygroups(Keyword.Declaration, Text, Keyword.Declaration, Text, Keyword.Declaration), 'operator'), (ncname + ':\*', Name, 'operator'), ('\*:'+ncname, Name.Tag, 'operator'), ('\*', Name.Tag, 'operator'), @@ -602,26 +627,29 @@ class XQueryLexer(ExtendedRegexLexer): # NAMESPACE DECL (r'(declare)(\s+)(default)(\s+)(collation)', - bygroups(Keyword, Text, Keyword, Text, Keyword)), + bygroups(Keyword.Declaration, Text, Keyword.Declaration, Text, Keyword.Declaration)), (r'(module|declare)(\s+)(namespace)', - bygroups(Keyword, Text, Keyword), 'namespacedecl'), + bygroups(Keyword.Declaration, Text, Keyword.Declaration), 'namespacedecl'), (r'(declare)(\s+)(base-uri)', - bygroups(Keyword, Text, Keyword), 'namespacedecl'), + bygroups(Keyword.Declaration, Text, Keyword.Declaration), 'namespacedecl'), # NAMESPACE KEYWORD (r'(declare)(\s+)(default)(\s+)(element|function)', - bygroups(Keyword, Text, Keyword, Text, Keyword), 'namespacekeyword'), + bygroups(Keyword.Declaration, Text, Keyword.Declaration, Text, Keyword.Declaration), 'namespacekeyword'), (r'(import)(\s+)(schema|module)', bygroups(Keyword.Pseudo, Text, Keyword.Pseudo), 'namespacekeyword'), (r'(declare)(\s+)(copy-namespaces)', - bygroups(Keyword, Text, Keyword), 'namespacekeyword'), + bygroups(Keyword.Declaration, Text, Keyword.Declaration), 'namespacekeyword'), # VARNAMEs (r'(for|let|some|every)(\s+)(\$)', bygroups(Keyword, Text, Name.Variable), 'varname'), (r'\$', Name.Variable, 'varname'), (r'(declare)(\s+)(variable)(\s+)(\$)', - bygroups(Keyword, Text, Keyword, Text, Name.Variable), 'varname'), + bygroups(Keyword.Declaration, Text, Keyword.Declaration, Text, Name.Variable), 'varname'), + + # ANNOTATED GLOBAL VARIABLES AND FUNCTIONS + (r'(declare)(\s+)(\%)', bygroups(Keyword.Declaration, Text, Name.Decorator), 'annotationname'), # ITEMTYPE (r'(\))(\s+)(as)', bygroups(Operator, Text, Keyword), 'itemtype'), @@ -643,12 +671,13 @@ class XQueryLexer(ExtendedRegexLexer): (r'(<)', pushstate_operator_starttag_callback), (r'(declare)(\s+)(boundary-space)', - bygroups(Keyword, Text, Keyword), 'xmlspace_decl'), + bygroups(Keyword.Declaration, Text, Keyword.Declaration), 'xmlspace_decl'), (r'(validate)(\s+)(lax|strict)', pushstate_operator_root_validate_withmode), (r'(validate)(\s*)(\{)', pushstate_operator_root_validate), (r'(typeswitch)(\s*)(\()', bygroups(Keyword, Text, Punctuation)), + (r'(typeswitch)(\s*)(\()', bygroups(Keyword, Text, Punctuation)), (r'(element|attribute)(\s*)(\{)', pushstate_operator_root_construct_callback), @@ -666,7 +695,7 @@ class XQueryLexer(ExtendedRegexLexer): 'operator'), (r'(declare|define)(\s+)(function)', - bygroups(Keyword, Text, Keyword)), + bygroups(Keyword.Declaration, Text, Keyword.Declaration)), (r'(\{)', pushstate_operator_root_callback), @@ -674,17 +703,17 @@ class XQueryLexer(ExtendedRegexLexer): pushstate_operator_order_callback), (r'(declare)(\s+)(ordering)', - bygroups(Keyword, Text, Keyword), 'declareordering'), + bygroups(Keyword.Declaration, Text, Keyword.Declaration), 'declareordering'), (r'(xquery)(\s+)(version)', bygroups(Keyword.Pseudo, Text, Keyword.Pseudo), 'xqueryversion'), - (r'(\(#)', Punctuation, 'pragma'), + (r'(\(#)(\s*)', bygroups(Punctuation, Text), 'pragma'), # sometimes return can occur in root state (r'return', Keyword), - (r'(declare)(\s+)(option)', bygroups(Keyword, Text, Keyword), + (r'(declare)(\s+)(option)', bygroups(Keyword.Declaration, Text, Keyword.Declaration), 'option'), # URI LITERALS - single and double quoted @@ -700,11 +729,16 @@ class XQueryLexer(ExtendedRegexLexer): (r'then|else', Keyword), - # ML specific + # eXist specific XQUF + (r'(update)(\s*)(insert|delete|replace|value|rename)', bygroups(Keyword, Text, Keyword)), + (r'(into|following|preceding|with)', Keyword), + + # Marklogic specific (r'(try)(\s*)', bygroups(Keyword, Text), 'root'), (r'(catch)(\s*)(\()(\$)', bygroups(Keyword, Text, Punctuation, Name.Variable), 'varname'), + (r'(@'+qname+')', Name.Attribute), (r'(@'+ncname+')', Name.Attribute), (r'@\*:'+ncname, Name.Attribute), @@ -715,6 +749,7 @@ class XQueryLexer(ExtendedRegexLexer): # STANDALONE QNAMES (qname + r'(?=\s*\{)', Name.Tag, 'qname_braren'), (qname + r'(?=\s*\([^:])', Name.Function, 'qname_braren'), + (r'(' + qname + ')(#)([0-9]+)', bygroups(Name.Function, Keyword.Type, Number.Integer)), (qname, Name.Tag, 'operator'), ] } @@ -731,9 +766,9 @@ class QmlLexer(RegexLexer): # JavascriptLexer above. name = 'QML' - aliases = ['qml'] - filenames = ['*.qml'] - mimetypes = ['application/x-qml'] + aliases = ['qml', 'qbs'] + filenames = ['*.qml', '*.qbs'] + mimetypes = ['application/x-qml', 'application/x-qt.qbs+qml'] # pasted from JavascriptLexer, with some additions flags = re.DOTALL | re.MULTILINE diff --git a/pygments/lexers/x10.py b/pygments/lexers/x10.py new file mode 100644 index 00000000..ea75ab71 --- /dev/null +++ b/pygments/lexers/x10.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.x10 + ~~~~~~~~~~~~~~~~~~~ + + Lexers for the X10 programming language. + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re + +from pygments.lexer import RegexLexer +from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ + Number, Punctuation, Error + +__all__ = ['X10Lexer'] + +class X10Lexer(RegexLexer): + """ + For the X10 language. + + .. versionadded:: 0.1 + """ + + name = 'X10' + aliases = ['x10', 'xten'] + filenames = ['*.x10'] + mimetypes = ['text/x-x10'] + + keywords = ( + 'as', 'assert', 'async', 'at', 'athome', 'ateach', 'atomic', + 'break', 'case', 'catch', 'class', 'clocked', 'continue', + 'def', 'default', 'do', 'else', 'final', 'finally', 'finish', + 'for', 'goto', 'haszero', 'here', 'if', 'import', 'in', + 'instanceof', 'interface', 'isref', 'new', 'offer', + 'operator', 'package', 'return', 'struct', 'switch', 'throw', + 'try', 'type', 'val', 'var', 'when', 'while' + ) + + types = ( + 'void' + ) + + values = ( + 'false', 'null', 'self', 'super', 'this', 'true' + ) + + modifiers = ( + 'abstract', 'extends', 'implements', 'native', 'offers', + 'private', 'property', 'protected', 'public', 'static', + 'throws', 'transient' + ) + + tokens = { + 'root': [ + (r'[^\S\n]+', Text), + (r'//.*?\n', Comment.Single), + (r'/\*(.|\n)*?\*/', Comment.Multiline), + (r'\b(%s)\b' % '|'.join(keywords), Keyword), + (r'\b(%s)\b' % '|'.join(types), Keyword.Type), + (r'\b(%s)\b' % '|'.join(values), Keyword.Constant), + (r'\b(%s)\b' % '|'.join(modifiers), Keyword.Declaration), + (r'"(\\\\|\\"|[^"])*"', String), + (r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char), + (r'.', Text) + ], + } diff --git a/pygments/sphinxext.py b/pygments/sphinxext.py index e63d3d35..2dc9810f 100644 --- a/pygments/sphinxext.py +++ b/pygments/sphinxext.py @@ -113,6 +113,8 @@ class PygmentsDoc(Directive): moduledocstrings[module] = moddoc for module, lexers in sorted(modules.items(), key=lambda x: x[0]): + if moduledocstrings[module] is None: + raise Exception("Missing docstring for %s" % (module,)) heading = moduledocstrings[module].splitlines()[4].strip().rstrip('.') out.append(MODULEDOC % (module, heading, '-'*len(heading))) for data in lexers: diff --git a/pygments/styles/arduino.py b/pygments/styles/arduino.py index f6bcd1cd..cb4d17b0 100644 --- a/pygments/styles/arduino.py +++ b/pygments/styles/arduino.py @@ -16,7 +16,8 @@ from pygments.token import Keyword, Name, Comment, String, Error, \ class ArduinoStyle(Style): """ - The Arduino® language style. This style is designed to highlight the Arduino source code, so exepect the best results with it. + The Arduino® language style. This style is designed to highlight the + Arduino source code, so exepect the best results with it. """ background_color = "#ffffff" diff --git a/pygments/token.py b/pygments/token.py index bfdfc114..f31625ed 100644 --- a/pygments/token.py +++ b/pygments/token.py @@ -182,6 +182,7 @@ STANDARD_TYPES = { Comment.Hashbang: 'ch', Comment.Multiline: 'cm', Comment.Preproc: 'cp', + Comment.PreprocFile: 'cpf', Comment.Single: 'c1', Comment.Special: 'cs', diff --git a/pygments/util.py b/pygments/util.py index c464e17c..07b662d0 100644 --- a/pygments/util.py +++ b/pygments/util.py @@ -122,7 +122,7 @@ def make_analysator(f): def shebang_matches(text, regex): - """Check if the given regular expression matches the last part of the + r"""Check if the given regular expression matches the last part of the shebang if one exists. >>> from pygments.util import shebang_matches @@ -160,7 +160,7 @@ def shebang_matches(text, regex): if x and not x.startswith('-')][-1] except IndexError: return False - regex = re.compile('^%s(\.(exe|cmd|bat|bin))?$' % regex, re.IGNORECASE) + regex = re.compile(r'^%s(\.(exe|cmd|bat|bin))?$' % regex, re.IGNORECASE) if regex.search(found) is not None: return True return False @@ -372,7 +372,7 @@ else: class UnclosingTextIOWrapper(TextIOWrapper): # Don't close underlying buffer on destruction. def close(self): - pass + self.flush() def add_metaclass(metaclass): |