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

Tue, 21 Apr 2020 19:47:10 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 21 Apr 2020 19:47:10 +0200
changeset 7547
21b0534faebc
parent 6942
2602857055c5
child 7701
25f42e208e08
permissions
-rw-r--r--

Pygments: updated Pygments to 2.3.1

1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 """
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 pygments.lexers.shell
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 ~~~~~~~~~~~~~~~~~~~~~
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 Lexers for various shells.
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
8 :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 :license: BSD, see LICENSE for details.
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 """
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import re
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
14 from pygments.lexer import Lexer, RegexLexer, do_insertions, bygroups, \
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
15 include, default, this, using, words
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from pygments.token import Punctuation, \
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
17 Text, Comment, Operator, Keyword, Name, String, Number, Generic
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from pygments.util import shebang_matches
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 __all__ = ['BashLexer', 'BashSessionLexer', 'TcshLexer', 'BatchLexer',
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
22 'SlurmBashLexer', 'MSDOSSessionLexer', 'PowerShellLexer',
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
23 'PowerShellSessionLexer', 'TcshSessionLexer', 'FishShellLexer']
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
25 line_re = re.compile('.*?\n')
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 class BashLexer(RegexLexer):
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
30 Lexer for (ba|k|z|)sh shell scripts.
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
32 .. versionadded:: 0.6
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 name = 'Bash'
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
36 aliases = ['bash', 'sh', 'ksh', 'zsh', 'shell']
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 filenames = ['*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass',
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
38 '*.exheres-0', '*.exlib', '*.zsh',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
39 '.bashrc', 'bashrc', '.bash_*', 'bash_*', 'zshrc', '.zshrc',
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
40 'PKGBUILD']
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
41 mimetypes = ['application/x-sh', 'application/x-shellscript', 'text/x-shellscript']
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 tokens = {
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 'root': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 include('basic'),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
46 (r'`', String.Backtick, 'backticks'),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
47 include('data'),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
48 include('interp'),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
49 ],
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
50 'interp': [
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 (r'\$\(\(', Keyword, 'math'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 (r'\$\(', Keyword, 'paren'),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
53 (r'\$\{#?', String.Interpol, 'curly'),
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
54 (r'\$[a-zA-Z_]\w*', Name.Variable), # user variable
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
55 (r'\$(?:\d+|[#$?!_*@-])', Name.Variable), # builtin
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
56 (r'\$', Text),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 'basic': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 (r'\b(if|fi|else|while|do|done|for|then|return|function|case|'
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
60 r'select|continue|until|esac|elif)(\s*)\b',
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
61 bygroups(Keyword, Text)),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 (r'\b(alias|bg|bind|break|builtin|caller|cd|command|compgen|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 r'complete|declare|dirs|disown|echo|enable|eval|exec|exit|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 r'export|false|fc|fg|getopts|hash|help|history|jobs|kill|let|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 r'local|logout|popd|printf|pushd|pwd|read|readonly|set|shift|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 r'shopt|source|suspend|test|time|times|trap|true|type|typeset|'
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
67 r'ulimit|umask|unalias|unset|wait)(?=[\s)`])',
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 Name.Builtin),
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
69 (r'\A#!.+\n', Comment.Hashbang),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
70 (r'#.*\n', Comment.Single),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 (r'\\[\w\W]', String.Escape),
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
72 (r'(\b\w+)(\s*)(\+?=)', bygroups(Name.Variable, Text, Operator)),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 (r'[\[\]{}()=]', Operator),
2426
da76c71624de Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1705
diff changeset
74 (r'<<<', Operator), # here-string
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 (r'<<-?\s*(\'?)\\?(\w+)[\w\W]+?\2', String),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 (r'&&|\|\|', Operator),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 'data': [
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
79 (r'(?s)\$?"(\\.|[^"\\$])*"', String.Double),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
80 (r'"', String.Double, 'string'),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
81 (r"(?s)\$'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
82 (r"(?s)'.*?'", String.Single),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
83 (r';', Punctuation),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
84 (r'&', Punctuation),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
85 (r'\|', Punctuation),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 (r'\s+', Text),
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
87 (r'\d+\b', Number),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
88 (r'[^=\s\[\]{}()$"\'`\\<&|;]+', Text),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 (r'<', Text),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 ],
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
91 'string': [
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
92 (r'"', String.Double, '#pop'),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
93 (r'(?s)(\\\\|\\[0-7]+|\\.|[^"\\$])+', String.Double),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
94 include('interp'),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
95 ],
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 'curly': [
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
97 (r'\}', String.Interpol, '#pop'),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 (r':-', Keyword),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
99 (r'\w+', Name.Variable),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
100 (r'[^}:"\'`$\\]+', Punctuation),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 (r':', Punctuation),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 include('root'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 'paren': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 (r'\)', Keyword, '#pop'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 include('root'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 'math': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 (r'\)\)', Keyword, '#pop'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 (r'[-+*/%^|&]|\*\*|\|\|', Operator),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
111 (r'\d+#\d+', Number),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
112 (r'\d+#(?! )', Number),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 (r'\d+', Number),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 include('root'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 'backticks': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 (r'`', String.Backtick, '#pop'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 include('root'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 }
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 def analyse_text(text):
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
123 if shebang_matches(text, r'(ba|z|)sh'):
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
124 return 1
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
125 if text.startswith('$ '):
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
126 return 0.2
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
129 class SlurmBashLexer(BashLexer):
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
130 """
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
131 Lexer for (ba|k|z|)sh Slurm scripts.
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
132
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
133 .. versionadded:: 2.4
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
134 """
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
135
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
136 name = 'Slurm'
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
137 aliases = ['slurm', 'sbatch']
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
138 filenames = ['*.sl']
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
139 mimetypes = []
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
140 EXTRA_KEYWORDS = {'srun'}
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
141
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
142 def get_tokens_unprocessed(self, text):
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
143 for index, token, value in BashLexer.get_tokens_unprocessed(self, text):
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
144 if token is Text and value in self.EXTRA_KEYWORDS:
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
145 yield index, Name.Builtin, value
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
146 elif token is Comment.Single and 'SBATCH' in value:
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
147 yield index, Keyword.Pseudo, value
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
148 else:
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
149 yield index, token, value
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
150
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
151 class ShellSessionBaseLexer(Lexer):
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 """
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
153 Base lexer for simplistic shell sessions.
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
155 .. versionadded:: 2.1
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
156 """
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
157
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
158 _venv = re.compile(r'^(\([^)]*\))(\s*)')
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
159
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 def get_tokens_unprocessed(self, text):
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
161 innerlexer = self._innerLexerCls(**self.options)
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 pos = 0
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 curcode = ''
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 insertions = []
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
166 backslash_continuation = False
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 for match in line_re.finditer(text):
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 line = match.group()
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
170 if backslash_continuation:
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
171 curcode += line
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
172 backslash_continuation = curcode.endswith('\\\n')
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
173 continue
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
174
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
175 venv_match = self._venv.match(line)
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
176 if venv_match:
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
177 venv = venv_match.group(1)
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
178 venv_whitespace = venv_match.group(2)
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
179 insertions.append((len(curcode),
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
180 [(0, Generic.Prompt.VirtualEnv, venv)]))
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
181 if venv_whitespace:
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
182 insertions.append((len(curcode),
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
183 [(0, Text, venv_whitespace)]))
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
184 line = line[venv_match.end():]
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
185
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
186 m = self._ps1rgx.match(line)
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
187 if m:
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 # To support output lexers (say diff output), the output
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 # needs to be broken by prompts whenever the output lexer
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 # changes.
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 if not insertions:
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 pos = match.start()
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 insertions.append((len(curcode),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 [(0, Generic.Prompt, m.group(1))]))
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 curcode += m.group(2)
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
197 backslash_continuation = curcode.endswith('\\\n')
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
198 elif line.startswith(self._ps2):
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 insertions.append((len(curcode),
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
200 [(0, Generic.Prompt, line[:len(self._ps2)])]))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
201 curcode += line[len(self._ps2):]
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
202 backslash_continuation = curcode.endswith('\\\n')
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 else:
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 if insertions:
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
205 toks = innerlexer.get_tokens_unprocessed(curcode)
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 for i, t, v in do_insertions(insertions, toks):
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 yield pos+i, t, v
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 yield match.start(), Generic.Output, line
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 insertions = []
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 curcode = ''
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 if insertions:
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 for i, t, v in do_insertions(insertions,
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
213 innerlexer.get_tokens_unprocessed(curcode)):
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 yield pos+i, t, v
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
217 class BashSessionLexer(ShellSessionBaseLexer):
2426
da76c71624de Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1705
diff changeset
218 """
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
219 Lexer for simplistic shell sessions.
2426
da76c71624de Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1705
diff changeset
220
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
221 .. versionadded:: 1.1
2426
da76c71624de Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1705
diff changeset
222 """
da76c71624de Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1705
diff changeset
223
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
224 name = 'Bash Session'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
225 aliases = ['console', 'shell-session']
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
226 filenames = ['*.sh-session', '*.shell-session']
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
227 mimetypes = ['application/x-shell-session', 'application/x-sh-session']
2426
da76c71624de Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1705
diff changeset
228
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
229 _innerLexerCls = BashLexer
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
230 _ps1rgx = re.compile(
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
231 r'^((?:(?:\[.*?\])|(?:\(\S+\))?(?:| |sh\S*?|\w+\S+[@:]\S+(?:\s+\S+)' \
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
232 r'?|\[\S+[@:][^\n]+\].+))\s*[$#%])(.*\n?)')
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
233 _ps2 = '>'
2426
da76c71624de Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1705
diff changeset
234
da76c71624de Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1705
diff changeset
235
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 class BatchLexer(RegexLexer):
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 """
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 Lexer for the DOS/Windows Batch file format.
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
240 .. versionadded:: 0.7
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 """
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 name = 'Batchfile'
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
243 aliases = ['bat', 'batch', 'dosbatch', 'winbatch']
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 filenames = ['*.bat', '*.cmd']
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 mimetypes = ['application/x-dos-batch']
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 flags = re.MULTILINE | re.IGNORECASE
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
249 _nl = r'\n\x1a'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
250 _punct = r'&<>|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
251 _ws = r'\t\v\f\r ,;=\xa0'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
252 _space = r'(?:(?:(?:\^[%s])?[%s])+)' % (_nl, _ws)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
253 _keyword_terminator = (r'(?=(?:\^[%s]?)?[%s+./:[\\\]]|[%s%s(])' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
254 (_nl, _ws, _nl, _punct))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
255 _token_terminator = r'(?=\^?[%s]|[%s%s])' % (_ws, _punct, _nl)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
256 _start_label = r'((?:(?<=^[^:])|^[^:]?)[%s]*)(:)' % _ws
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
257 _label = r'(?:(?:[^%s%s%s+:^]|\^[%s]?[\w\W])*)' % (_nl, _punct, _ws, _nl)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
258 _label_compound = (r'(?:(?:[^%s%s%s+:^)]|\^[%s]?[^)])*)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
259 (_nl, _punct, _ws, _nl))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
260 _number = r'(?:-?(?:0[0-7]+|0x[\da-f]+|\d+)%s)' % _token_terminator
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
261 _opword = r'(?:equ|geq|gtr|leq|lss|neq)'
5072
aab59042fefb Updated Pygments to 2.1.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4697
diff changeset
262 _string = r'(?:"[^%s"]*(?:"|(?=[%s])))' % (_nl, _nl)
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
263 _variable = (r'(?:(?:%%(?:\*|(?:~[a-z]*(?:\$[^:]+:)?)?\d|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
264 r'[^%%:%s]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:[^%%%s^]|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
265 r'\^[^%%%s])[^=%s]*=(?:[^%%%s^]|\^[^%%%s])*)?)?%%))|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
266 r'(?:\^?![^!:%s]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
267 r'[^!%s^]|\^[^!%s])[^=%s]*=(?:[^!%s^]|\^[^!%s])*)?)?\^?!))' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
268 (_nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl))
5072
aab59042fefb Updated Pygments to 2.1.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4697
diff changeset
269 _core_token = r'(?:(?:(?:\^[%s]?)?[^"%s%s%s])+)' % (_nl, _nl, _punct, _ws)
aab59042fefb Updated Pygments to 2.1.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4697
diff changeset
270 _core_token_compound = r'(?:(?:(?:\^[%s]?)?[^"%s%s%s)])+)' % (_nl, _nl,
aab59042fefb Updated Pygments to 2.1.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4697
diff changeset
271 _punct, _ws)
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
272 _token = r'(?:[%s]+|%s)' % (_punct, _core_token)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
273 _token_compound = r'(?:[%s]+|%s)' % (_punct, _core_token_compound)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
274 _stoken = (r'(?:[%s]+|(?:%s|%s|%s)+)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
275 (_punct, _string, _variable, _core_token))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
276
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
277 def _make_begin_state(compound, _core_token=_core_token,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
278 _core_token_compound=_core_token_compound,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
279 _keyword_terminator=_keyword_terminator,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
280 _nl=_nl, _punct=_punct, _string=_string,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
281 _space=_space, _start_label=_start_label,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
282 _stoken=_stoken, _token_terminator=_token_terminator,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
283 _variable=_variable, _ws=_ws):
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
284 rest = '(?:%s|%s|[^"%%%s%s%s])*' % (_string, _variable, _nl, _punct,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
285 ')' if compound else '')
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
286 rest_of_line = r'(?:(?:[^%s^]|\^[%s]?[\w\W])*)' % (_nl, _nl)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
287 rest_of_line_compound = r'(?:(?:[^%s^)]|\^[%s]?[^)])*)' % (_nl, _nl)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
288 set_space = r'((?:(?:\^[%s]?)?[^\S\n])*)' % _nl
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
289 suffix = ''
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
290 if compound:
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
291 _keyword_terminator = r'(?:(?=\))|%s)' % _keyword_terminator
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
292 _token_terminator = r'(?:(?=\))|%s)' % _token_terminator
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
293 suffix = '/compound'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
294 return [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
295 ((r'\)', Punctuation, '#pop') if compound else
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
296 (r'\)((?=\()|%s)%s' % (_token_terminator, rest_of_line),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
297 Comment.Single)),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
298 (r'(?=%s)' % _start_label, Text, 'follow%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
299 (_space, using(this, state='text')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
300 include('redirect%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
301 (r'[%s]+' % _nl, Text),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
302 (r'\(', Punctuation, 'root/compound'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
303 (r'@+', Punctuation),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
304 (r'((?:for|if|rem)(?:(?=(?:\^[%s]?)?/)|(?:(?!\^)|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
305 r'(?<=m))(?:(?=\()|%s)))(%s?%s?(?:\^[%s]?)?/(?:\^[%s]?)?\?)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
306 (_nl, _token_terminator, _space,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
307 _core_token_compound if compound else _core_token, _nl, _nl),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
308 bygroups(Keyword, using(this, state='text')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
309 'follow%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
310 (r'(goto%s)(%s(?:\^[%s]?)?/(?:\^[%s]?)?\?%s)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
311 (_keyword_terminator, rest, _nl, _nl, rest),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
312 bygroups(Keyword, using(this, state='text')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
313 'follow%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
314 (words(('assoc', 'break', 'cd', 'chdir', 'cls', 'color', 'copy',
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
315 'date', 'del', 'dir', 'dpath', 'echo', 'endlocal', 'erase',
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
316 'exit', 'ftype', 'keys', 'md', 'mkdir', 'mklink', 'move',
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
317 'path', 'pause', 'popd', 'prompt', 'pushd', 'rd', 'ren',
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
318 'rename', 'rmdir', 'setlocal', 'shift', 'start', 'time',
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
319 'title', 'type', 'ver', 'verify', 'vol'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
320 suffix=_keyword_terminator), Keyword, 'follow%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
321 (r'(call)(%s?)(:)' % _space,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
322 bygroups(Keyword, using(this, state='text'), Punctuation),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
323 'call%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
324 (r'call%s' % _keyword_terminator, Keyword),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
325 (r'(for%s(?!\^))(%s)(/f%s)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
326 (_token_terminator, _space, _token_terminator),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
327 bygroups(Keyword, using(this, state='text'), Keyword),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
328 ('for/f', 'for')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
329 (r'(for%s(?!\^))(%s)(/l%s)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
330 (_token_terminator, _space, _token_terminator),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
331 bygroups(Keyword, using(this, state='text'), Keyword),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
332 ('for/l', 'for')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
333 (r'for%s(?!\^)' % _token_terminator, Keyword, ('for2', 'for')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
334 (r'(goto%s)(%s?)(:?)' % (_keyword_terminator, _space),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
335 bygroups(Keyword, using(this, state='text'), Punctuation),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
336 'label%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
337 (r'(if(?:(?=\()|%s)(?!\^))(%s?)((?:/i%s)?)(%s?)((?:not%s)?)(%s?)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
338 (_token_terminator, _space, _token_terminator, _space,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
339 _token_terminator, _space),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
340 bygroups(Keyword, using(this, state='text'), Keyword,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
341 using(this, state='text'), Keyword,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
342 using(this, state='text')), ('(?', 'if')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
343 (r'rem(((?=\()|%s)%s?%s?.*|%s%s)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
344 (_token_terminator, _space, _stoken, _keyword_terminator,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
345 rest_of_line_compound if compound else rest_of_line),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
346 Comment.Single, 'follow%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
347 (r'(set%s)%s(/a)' % (_keyword_terminator, set_space),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
348 bygroups(Keyword, using(this, state='text'), Keyword),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
349 'arithmetic%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
350 (r'(set%s)%s((?:/p)?)%s((?:(?:(?:\^[%s]?)?[^"%s%s^=%s]|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
351 r'\^[%s]?[^"=])+)?)((?:(?:\^[%s]?)?=)?)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
352 (_keyword_terminator, set_space, set_space, _nl, _nl, _punct,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
353 ')' if compound else '', _nl, _nl),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
354 bygroups(Keyword, using(this, state='text'), Keyword,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
355 using(this, state='text'), using(this, state='variable'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
356 Punctuation),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
357 'follow%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
358 default('follow%s' % suffix)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
359 ]
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
360
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
361 def _make_follow_state(compound, _label=_label,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
362 _label_compound=_label_compound, _nl=_nl,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
363 _space=_space, _start_label=_start_label,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
364 _token=_token, _token_compound=_token_compound,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
365 _ws=_ws):
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
366 suffix = '/compound' if compound else ''
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
367 state = []
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
368 if compound:
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
369 state.append((r'(?=\))', Text, '#pop'))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
370 state += [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
371 (r'%s([%s]*)(%s)(.*)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
372 (_start_label, _ws, _label_compound if compound else _label),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
373 bygroups(Text, Punctuation, Text, Name.Label, Comment.Single)),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
374 include('redirect%s' % suffix),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
375 (r'(?=[%s])' % _nl, Text, '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
376 (r'\|\|?|&&?', Punctuation, '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
377 include('text')
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
378 ]
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
379 return state
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
380
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
381 def _make_arithmetic_state(compound, _nl=_nl, _punct=_punct,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
382 _string=_string, _variable=_variable, _ws=_ws):
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
383 op = r'=+\-*/!~'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
384 state = []
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
385 if compound:
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
386 state.append((r'(?=\))', Text, '#pop'))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
387 state += [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
388 (r'0[0-7]+', Number.Oct),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
389 (r'0x[\da-f]+', Number.Hex),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
390 (r'\d+', Number.Integer),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
391 (r'[(),]+', Punctuation),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
392 (r'([%s]|%%|\^\^)+' % op, Operator),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
393 (r'(%s|%s|(\^[%s]?)?[^()%s%%^"%s%s%s]|\^[%s%s]?%s)+' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
394 (_string, _variable, _nl, op, _nl, _punct, _ws, _nl, _ws,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
395 r'[^)]' if compound else r'[\w\W]'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
396 using(this, state='variable')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
397 (r'(?=[\x00|&])', Text, '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
398 include('follow')
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
399 ]
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
400 return state
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
401
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
402 def _make_call_state(compound, _label=_label,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
403 _label_compound=_label_compound):
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
404 state = []
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
405 if compound:
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
406 state.append((r'(?=\))', Text, '#pop'))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
407 state.append((r'(:?)(%s)' % (_label_compound if compound else _label),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
408 bygroups(Punctuation, Name.Label), '#pop'))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
409 return state
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
410
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
411 def _make_label_state(compound, _label=_label,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
412 _label_compound=_label_compound, _nl=_nl,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
413 _punct=_punct, _string=_string, _variable=_variable):
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
414 state = []
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
415 if compound:
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
416 state.append((r'(?=\))', Text, '#pop'))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
417 state.append((r'(%s?)((?:%s|%s|\^[%s]?%s|[^"%%^%s%s%s])*)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
418 (_label_compound if compound else _label, _string,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
419 _variable, _nl, r'[^)]' if compound else r'[\w\W]', _nl,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
420 _punct, r')' if compound else ''),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
421 bygroups(Name.Label, Comment.Single), '#pop'))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
422 return state
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
423
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
424 def _make_redirect_state(compound,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
425 _core_token_compound=_core_token_compound,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
426 _nl=_nl, _punct=_punct, _stoken=_stoken,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
427 _string=_string, _space=_space,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
428 _variable=_variable, _ws=_ws):
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
429 stoken_compound = (r'(?:[%s]+|(?:%s|%s|%s)+)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
430 (_punct, _string, _variable, _core_token_compound))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
431 return [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
432 (r'((?:(?<=[%s%s])\d)?)(>>?&|<&)([%s%s]*)(\d)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
433 (_nl, _ws, _nl, _ws),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
434 bygroups(Number.Integer, Punctuation, Text, Number.Integer)),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
435 (r'((?:(?<=[%s%s])(?<!\^[%s])\d)?)(>>?|<)(%s?%s)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
436 (_nl, _ws, _nl, _space, stoken_compound if compound else _stoken),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
437 bygroups(Number.Integer, Punctuation, using(this, state='text')))
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
438 ]
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
439
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 tokens = {
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
441 'root': _make_begin_state(False),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
442 'follow': _make_follow_state(False),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
443 'arithmetic': _make_arithmetic_state(False),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
444 'call': _make_call_state(False),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
445 'label': _make_label_state(False),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
446 'redirect': _make_redirect_state(False),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
447 'root/compound': _make_begin_state(True),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
448 'follow/compound': _make_follow_state(True),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
449 'arithmetic/compound': _make_arithmetic_state(True),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
450 'call/compound': _make_call_state(True),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
451 'label/compound': _make_label_state(True),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
452 'redirect/compound': _make_redirect_state(True),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
453 'variable-or-escape': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
454 (_variable, Name.Variable),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
455 (r'%%%%|\^[%s]?(\^!|[\w\W])' % _nl, String.Escape)
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 ],
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
457 'string': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
458 (r'"', String.Double, '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
459 (_variable, Name.Variable),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
460 (r'\^!|%%', String.Escape),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
461 (r'[^"%%^%s]+|[%%^]' % _nl, String.Double),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
462 default('#pop')
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
463 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
464 'sqstring': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
465 include('variable-or-escape'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
466 (r'[^%]+|%', String.Single)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
467 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
468 'bqstring': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
469 include('variable-or-escape'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
470 (r'[^%]+|%', String.Backtick)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
471 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
472 'text': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
473 (r'"', String.Double, 'string'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
474 include('variable-or-escape'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
475 (r'[^"%%^%s%s%s\d)]+|.' % (_nl, _punct, _ws), Text)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
476 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
477 'variable': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
478 (r'"', String.Double, 'string'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
479 include('variable-or-escape'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
480 (r'[^"%%^%s]+|.' % _nl, Name.Variable)
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
481 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
482 'for': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
483 (r'(%s)(in)(%s)(\()' % (_space, _space),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
484 bygroups(using(this, state='text'), Keyword,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
485 using(this, state='text'), Punctuation), '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
486 include('follow')
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
487 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
488 'for2': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
489 (r'\)', Punctuation),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
490 (r'(%s)(do%s)' % (_space, _token_terminator),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
491 bygroups(using(this, state='text'), Keyword), '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
492 (r'[%s]+' % _nl, Text),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
493 include('follow')
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
494 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
495 'for/f': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
496 (r'(")((?:%s|[^"])*?")([%s%s]*)(\))' % (_variable, _nl, _ws),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
497 bygroups(String.Double, using(this, state='string'), Text,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
498 Punctuation)),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
499 (r'"', String.Double, ('#pop', 'for2', 'string')),
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
500 (r"('(?:%%%%|%s|[\w\W])*?')([%s%s]*)(\))" % (_variable, _nl, _ws),
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
501 bygroups(using(this, state='sqstring'), Text, Punctuation)),
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
502 (r'(`(?:%%%%|%s|[\w\W])*?`)([%s%s]*)(\))' % (_variable, _nl, _ws),
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
503 bygroups(using(this, state='bqstring'), Text, Punctuation)),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
504 include('for2')
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 ],
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
506 'for/l': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
507 (r'-?\d+', Number.Integer),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
508 include('for2')
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
509 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
510 'if': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
511 (r'((?:cmdextversion|errorlevel)%s)(%s)(\d+)' %
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
512 (_token_terminator, _space),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
513 bygroups(Keyword, using(this, state='text'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
514 Number.Integer), '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
515 (r'(defined%s)(%s)(%s)' % (_token_terminator, _space, _stoken),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
516 bygroups(Keyword, using(this, state='text'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
517 using(this, state='variable')), '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
518 (r'(exist%s)(%s%s)' % (_token_terminator, _space, _stoken),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
519 bygroups(Keyword, using(this, state='text')), '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
520 (r'(%s%s)(%s)(%s%s)' % (_number, _space, _opword, _space, _number),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
521 bygroups(using(this, state='arithmetic'), Operator.Word,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
522 using(this, state='arithmetic')), '#pop'),
5713
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
523 (_stoken, using(this, state='text'), ('#pop', 'if2')),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
524 ],
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
525 'if2': [
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
526 (r'(%s?)(==)(%s?%s)' % (_space, _space, _stoken),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
527 bygroups(using(this, state='text'), Operator,
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
528 using(this, state='text')), '#pop'),
6762afd9f963 Updated Pygments to 2.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5072
diff changeset
529 (r'(%s)(%s)(%s%s)' % (_space, _opword, _space, _stoken),
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
530 bygroups(using(this, state='text'), Operator.Word,
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
531 using(this, state='text')), '#pop')
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 ],
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
533 '(?': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
534 (_space, using(this, state='text')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
535 (r'\(', Punctuation, ('#pop', 'else?', 'root/compound')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
536 default('#pop')
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
537 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
538 'else?': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
539 (_space, using(this, state='text')),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
540 (r'else%s' % _token_terminator, Keyword, '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
541 default('#pop')
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
542 ]
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 }
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
546 class MSDOSSessionLexer(ShellSessionBaseLexer):
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
547 """
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
548 Lexer for simplistic MSDOS sessions.
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
549
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
550 .. versionadded:: 2.1
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
551 """
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
552
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
553 name = 'MSDOS Session'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
554 aliases = ['doscon']
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
555 filenames = []
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
556 mimetypes = []
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
557
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
558 _innerLexerCls = BatchLexer
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
559 _ps1rgx = re.compile(r'^([^>]*>)(.*\n?)')
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
560 _ps2 = 'More? '
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
561
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
562
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 class TcshLexer(RegexLexer):
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 """
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 Lexer for tcsh scripts.
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
567 .. versionadded:: 0.10
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 """
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 name = 'Tcsh'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 aliases = ['tcsh', 'csh']
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 filenames = ['*.tcsh', '*.csh']
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573 mimetypes = ['application/x-csh']
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 tokens = {
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 'root': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 include('basic'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 (r'\$\(', Keyword, 'paren'),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
579 (r'\$\{#?', Keyword, 'curly'),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 (r'`', String.Backtick, 'backticks'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 include('data'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 'basic': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 (r'\b(if|endif|else|while|then|foreach|case|default|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 r'continue|goto|breaksw|end|switch|endsw)\s*\b',
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 Keyword),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 (r'\b(alias|alloc|bg|bindkey|break|builtins|bye|caller|cd|chdir|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 r'complete|dirs|echo|echotc|eval|exec|exit|fg|filetest|getxvers|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 r'glob|getspath|hashstat|history|hup|inlib|jobs|kill|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 r'limit|log|login|logout|ls-F|migrate|newgrp|nice|nohup|notify|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 r'onintr|popd|printenv|pushd|rehash|repeat|rootnode|popd|pushd|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 r'set|shift|sched|setenv|setpath|settc|setty|setxvers|shift|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 r'source|stop|suspend|source|suspend|telltc|time|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 r'umask|unalias|uncomplete|unhash|universe|unlimit|unset|unsetenv|'
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595 r'ver|wait|warp|watchlog|where|which)\s*\b',
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 Name.Builtin),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
597 (r'#.*', Comment),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 (r'\\[\w\W]', String.Escape),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 (r'(\b\w+)(\s*)(=)', bygroups(Name.Variable, Text, Operator)),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 (r'[\[\]{}()=]+', Operator),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 (r'<<\s*(\'?)\\?(\w+)[\w\W]+?\2', String),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
602 (r';', Punctuation),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 'data': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 (r'(?s)"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 (r"(?s)'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 (r'\s+', Text),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
608 (r'[^=\s\[\]{}()$"\'`\\;#]+', Text),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 (r'\d+(?= |\Z)', Number),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 (r'\$#?(\w+|.)', Name.Variable),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 'curly': [
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
613 (r'\}', Keyword, '#pop'),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 (r':-', Keyword),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
615 (r'\w+', Name.Variable),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 (r'[^}:"\'`$]+', Punctuation),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 (r':', Punctuation),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 include('root'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 'paren': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 (r'\)', Keyword, '#pop'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 include('root'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 'backticks': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 (r'`', String.Backtick, '#pop'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 include('root'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 }
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
631 class TcshSessionLexer(ShellSessionBaseLexer):
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
632 """
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
633 Lexer for Tcsh sessions.
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
634
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
635 .. versionadded:: 2.1
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
636 """
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
637
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
638 name = 'Tcsh Session'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
639 aliases = ['tcshcon']
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
640 filenames = []
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
641 mimetypes = []
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
642
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
643 _innerLexerCls = TcshLexer
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
644 _ps1rgx = re.compile(r'^([^>]+>)(.*\n?)')
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
645 _ps2 = '? '
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
646
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
647
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 class PowerShellLexer(RegexLexer):
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 """
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 For Windows PowerShell code.
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
651
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
652 .. versionadded:: 1.5
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653 """
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 name = 'PowerShell'
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
655 aliases = ['powershell', 'posh', 'ps1', 'psm1']
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
656 filenames = ['*.ps1', '*.psm1']
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 mimetypes = ['text/x-powershell']
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 flags = re.DOTALL | re.IGNORECASE | re.MULTILINE
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 keywords = (
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 'while validateset validaterange validatepattern validatelength '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663 'validatecount until trap switch return ref process param parameter in '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664 'if global: function foreach for finally filter end elseif else '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
665 'dynamicparam do default continue cmdletbinding break begin alias \\? '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666 '% #script #private #local #global mandatory parametersetname position '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667 'valuefrompipeline valuefrompipelinebypropertyname '
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
668 'valuefromremainingarguments helpmessage try catch throw').split()
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
669
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
670 operators = (
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
671 'and as band bnot bor bxor casesensitive ccontains ceq cge cgt cle '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672 'clike clt cmatch cne cnotcontains cnotlike cnotmatch contains '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
673 'creplace eq exact f file ge gt icontains ieq ige igt ile ilike ilt '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674 'imatch ine inotcontains inotlike inotmatch ireplace is isnot le like '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 'lt match ne not notcontains notlike notmatch or regex replace '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 'wildcard').split()
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678 verbs = (
6651
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
679 'write where watch wait use update unregister unpublish unprotect '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
680 'unlock uninstall undo unblock trace test tee take sync switch '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
681 'suspend submit stop step start split sort skip show set send select '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
682 'search scroll save revoke resume restore restart resolve resize '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
683 'reset request repair rename remove register redo receive read push '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
684 'publish protect pop ping out optimize open new move mount merge '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
685 'measure lock limit join invoke install initialize import hide group '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
686 'grant get format foreach find export expand exit enter enable edit '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
687 'dismount disconnect disable deny debug cxnew copy convertto '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
688 'convertfrom convert connect confirm compress complete compare close '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
689 'clear checkpoint block backup assert approve aggregate add').split()
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
690
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
691 aliases_ = (
6651
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
692 'ac asnp cat cd cfs chdir clc clear clhy cli clp cls clv cnsn '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
693 'compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo epal '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
694 'epcsv epsn erase etsn exsn fc fhx fl foreach ft fw gal gbp gc gci gcm '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
695 'gcs gdr ghy gi gjb gl gm gmo gp gps gpv group gsn gsnp gsv gu gv gwmi '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
696 'h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
697 'ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
698 'oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
699 'rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc select '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
700 'set shcm si sl sleep sls sort sp spjb spps spsv start sujb sv swmi tee '
e8f3b5568b21 pygments: updated Pygments to 2.3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5713
diff changeset
701 'trcm type wget where wjb write').split()
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
702
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 commenthelp = (
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
704 'component description example externalhelp forwardhelpcategory '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
705 'forwardhelptargetname functionality inputs link '
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
706 'notes outputs parameter remotehelprunspace role synopsis').split()
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
707
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708 tokens = {
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
709 'root': [
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
710 # we need to count pairs of parentheses for correct highlight
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
711 # of '$(...)' blocks in strings
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
712 (r'\(', Punctuation, 'child'),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
713 (r'\s+', Text),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
714 (r'^(\s*#[#\s]*)(\.(?:%s))([^\n]*$)' % '|'.join(commenthelp),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
715 bygroups(Comment, String.Doc, Comment)),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
716 (r'#[^\n]*?$', Comment),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717 (r'(&lt;|<)#', Comment.Multiline, 'multline'),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
718 (r'@"\n', String.Heredoc, 'heredoc-double'),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
719 (r"@'\n.*?\n'@", String.Heredoc),
2426
da76c71624de Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1705
diff changeset
720 # escaped syntax
da76c71624de Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1705
diff changeset
721 (r'`[\'"$@-]', Punctuation),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
722 (r'"', String.Double, 'string'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
723 (r"'([^']|'')*'", String.Single),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
724 (r'(\$|@@|@)((global|script|private|env):)?\w+',
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
725 Name.Variable),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
726 (r'(%s)\b' % '|'.join(keywords), Keyword),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
727 (r'-(%s)\b' % '|'.join(operators), Operator),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
728 (r'(%s)-[a-z_]\w*\b' % '|'.join(verbs), Name.Builtin),
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
729 (r'(%s)\s' % '|'.join(aliases_), Name.Builtin),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
730 (r'\[[a-z_\[][\w. `,\[\]]*\]', Name.Constant), # .net [type]s
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
731 (r'-[a-z_]\w*', Name),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
732 (r'\w+', Name),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
733 (r'[.,;@{}\[\]$()=+*/\\&%!~?^`|<>-]|::', Punctuation),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
734 ],
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
735 'child': [
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
736 (r'\)', Punctuation, '#pop'),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
737 include('root'),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
738 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739 'multline': [
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
740 (r'[^#&.]+', Comment.Multiline),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
741 (r'#(>|&gt;)', Comment.Multiline, '#pop'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
742 (r'\.(%s)' % '|'.join(commenthelp), String.Doc),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743 (r'[#&.]', Comment.Multiline),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
744 ],
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
745 'string': [
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
746 (r"`[0abfnrtv'\"$`]", String.Escape),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
747 (r'[^$`"]+', String.Double),
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
748 (r'\$\(', Punctuation, 'child'),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
749 (r'""', String.Double),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 (r'[`$]', String.Double),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
751 (r'"', String.Double, '#pop'),
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
752 ],
4172
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
753 'heredoc-double': [
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
754 (r'\n"@', String.Heredoc, '#pop'),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
755 (r'\$\(', Punctuation, 'child'),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
756 (r'[^@\n]+"]', String.Heredoc),
4f20dba37ab6 Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
757 (r".", String.Heredoc),
1705
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
758 ]
b0fbc9300f2b Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759 }
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
760
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
761
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
762 class PowerShellSessionLexer(ShellSessionBaseLexer):
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
763 """
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
764 Lexer for simplistic Windows PowerShell sessions.
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
765
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
766 .. versionadded:: 2.1
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
767 """
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
768
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
769 name = 'PowerShell Session'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
770 aliases = ['ps1con']
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
771 filenames = []
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
772 mimetypes = []
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
773
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
774 _innerLexerCls = PowerShellLexer
7547
21b0534faebc Pygments: updated Pygments to 2.3.1
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
775 _ps1rgx = re.compile(r'^(PS [^>]+> )(.*\n?)')
4697
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
776 _ps2 = '>> '
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
777
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
778
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
779 class FishShellLexer(RegexLexer):
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
780 """
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
781 Lexer for Fish shell scripts.
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
782
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
783 .. versionadded:: 2.1
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
784 """
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
785
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
786 name = 'Fish'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
787 aliases = ['fish', 'fishshell']
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
788 filenames = ['*.fish', '*.load']
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
789 mimetypes = ['application/x-fish']
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
790
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
791 tokens = {
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
792 'root': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
793 include('basic'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
794 include('data'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
795 include('interp'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
796 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
797 'interp': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
798 (r'\$\(\(', Keyword, 'math'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
799 (r'\(', Keyword, 'paren'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
800 (r'\$#?(\w+|.)', Name.Variable),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
801 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
802 'basic': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
803 (r'\b(begin|end|if|else|while|break|for|in|return|function|block|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
804 r'case|continue|switch|not|and|or|set|echo|exit|pwd|true|false|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
805 r'cd|count|test)(\s*)\b',
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
806 bygroups(Keyword, Text)),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
807 (r'\b(alias|bg|bind|breakpoint|builtin|command|commandline|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
808 r'complete|contains|dirh|dirs|emit|eval|exec|fg|fish|fish_config|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
809 r'fish_indent|fish_pager|fish_prompt|fish_right_prompt|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
810 r'fish_update_completions|fishd|funced|funcsave|functions|help|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
811 r'history|isatty|jobs|math|mimedb|nextd|open|popd|prevd|psub|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
812 r'pushd|random|read|set_color|source|status|trap|type|ulimit|'
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
813 r'umask|vared|fc|getopts|hash|kill|printf|time|wait)\s*\b(?!\.)',
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
814 Name.Builtin),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
815 (r'#.*\n', Comment),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
816 (r'\\[\w\W]', String.Escape),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
817 (r'(\b\w+)(\s*)(=)', bygroups(Name.Variable, Text, Operator)),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
818 (r'[\[\]()=]', Operator),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
819 (r'<<-?\s*(\'?)\\?(\w+)[\w\W]+?\2', String),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
820 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
821 'data': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
822 (r'(?s)\$?"(\\\\|\\[0-7]+|\\.|[^"\\$])*"', String.Double),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
823 (r'"', String.Double, 'string'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
824 (r"(?s)\$'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
825 (r"(?s)'.*?'", String.Single),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
826 (r';', Punctuation),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
827 (r'&|\||\^|<|>', Operator),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
828 (r'\s+', Text),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
829 (r'\d+(?= |\Z)', Number),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
830 (r'[^=\s\[\]{}()$"\'`\\<&|;]+', Text),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
831 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
832 'string': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
833 (r'"', String.Double, '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
834 (r'(?s)(\\\\|\\[0-7]+|\\.|[^"\\$])+', String.Double),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
835 include('interp'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
836 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
837 'paren': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
838 (r'\)', Keyword, '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
839 include('root'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
840 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
841 'math': [
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
842 (r'\)\)', Keyword, '#pop'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
843 (r'[-+*/%^|&]|\*\*|\|\|', Operator),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
844 (r'\d+#\d+', Number),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
845 (r'\d+#(?! )', Number),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
846 (r'\d+', Number),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
847 include('root'),
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
848 ],
c2e9bf425554 Updated Pygments to 2.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4172
diff changeset
849 }

eric ide

mercurial