1"""
2 pygments.lexers.trafficscript
3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5 Lexer for RiverBed's TrafficScript (RTS) language.
6
7 :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9"""
10
11from pygments.lexer import RegexLexer
12from pygments.token import String, Number, Name, Keyword, Operator, Text, Comment
13
14__all__ = ['RtsLexer']
15
16
17class RtsLexer(RegexLexer):
18 """
19 For Riverbed Stingray Traffic Manager
20 """
21 name = 'TrafficScript'
22 aliases = ['trafficscript', 'rts']
23 filenames = ['*.rts']
24 url = 'https://riverbed.com'
25 version_added = '2.1'
26
27 tokens = {
28 'root' : [
29 (r"'(\\\\|\\[^\\]|[^'\\])*'", String),
30 (r'"', String, 'escapable-string'),
31 (r'(0x[0-9a-fA-F]+|\d+)', Number),
32 (r'\d+\.\d+', Number.Float),
33 (r'\$[a-zA-Z](\w|_)*', Name.Variable),
34 (r'(if|else|for(each)?|in|while|do|break|sub|return|import)', Keyword),
35 (r'[a-zA-Z][\w.]*', Name.Function),
36 (r'[-+*/%=,;(){}<>^.!~|&\[\]\?\:]', Operator),
37 (r'(>=|<=|==|!=|'
38 r'&&|\|\||'
39 r'\+=|.=|-=|\*=|/=|%=|<<=|>>=|&=|\|=|\^=|'
40 r'>>|<<|'
41 r'\+\+|--|=>)', Operator),
42 (r'[ \t\r]+', Text),
43 (r'#[^\n]*', Comment),
44 ],
45 'escapable-string' : [
46 (r'\\[tsn]', String.Escape),
47 (r'[^"]', String),
48 (r'"', String, '#pop'),
49 ],
50
51 }