summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py
diff options
context:
space:
mode:
authorcyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
committercyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
commit6d7ba58f880be618ade07f8ea080fe8c4bf8a896 (patch)
treeb1c931051ffcebd2bd9d61d98d6233ffa289bbce /venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py
parent4f884c9abc32990b4061a1bb6997b4b37e58ea0b (diff)
venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py')
-rw-r--r--venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py326
1 files changed, 326 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py b/venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py
new file mode 100644
index 0000000..2c0d3b2
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/pygments/lexers/teraterm.py
@@ -0,0 +1,326 @@
+"""
+ pygments.lexers.teraterm
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Lexer for Tera Term macro files.
+
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+import re
+
+from pygments.lexer import RegexLexer, include, bygroups
+from pygments.token import Text, Comment, Operator, Name, String, \
+ Number, Keyword, Error
+
+__all__ = ['TeraTermLexer']
+
+
+class TeraTermLexer(RegexLexer):
+ """
+ For Tera Term macro source code.
+
+ .. versionadded:: 2.4
+ """
+ name = 'Tera Term macro'
+ url = 'https://ttssh2.osdn.jp/'
+ aliases = ['teratermmacro', 'teraterm', 'ttl']
+ filenames = ['*.ttl']
+ mimetypes = ['text/x-teratermmacro']
+
+ tokens = {
+ 'root': [
+ include('comments'),
+ include('labels'),
+ include('commands'),
+ include('builtin-variables'),
+ include('user-variables'),
+ include('operators'),
+ include('numeric-literals'),
+ include('string-literals'),
+ include('all-whitespace'),
+ (r'\S', Text),
+ ],
+ 'comments': [
+ (r';[^\r\n]*', Comment.Single),
+ (r'/\*', Comment.Multiline, 'in-comment'),
+ ],
+ 'in-comment': [
+ (r'\*/', Comment.Multiline, '#pop'),
+ (r'[^*/]+', Comment.Multiline),
+ (r'[*/]', Comment.Multiline)
+ ],
+ 'labels': [
+ (r'(?i)^(\s*)(:[a-z0-9_]+)', bygroups(Text.Whitespace, Name.Label)),
+ ],
+ 'commands': [
+ (
+ r'(?i)\b('
+ r'basename|'
+ r'beep|'
+ r'bplusrecv|'
+ r'bplussend|'
+ r'break|'
+ r'bringupbox|'
+ # 'call' is handled separately.
+ r'callmenu|'
+ r'changedir|'
+ r'checksum16|'
+ r'checksum16file|'
+ r'checksum32|'
+ r'checksum32file|'
+ r'checksum8|'
+ r'checksum8file|'
+ r'clearscreen|'
+ r'clipb2var|'
+ r'closesbox|'
+ r'closett|'
+ r'code2str|'
+ r'connect|'
+ r'continue|'
+ r'crc16|'
+ r'crc16file|'
+ r'crc32|'
+ r'crc32file|'
+ r'cygconnect|'
+ r'delpassword|'
+ r'dirname|'
+ r'dirnamebox|'
+ r'disconnect|'
+ r'dispstr|'
+ r'do|'
+ r'else|'
+ r'elseif|'
+ r'enablekeyb|'
+ r'end|'
+ r'endif|'
+ r'enduntil|'
+ r'endwhile|'
+ r'exec|'
+ r'execcmnd|'
+ r'exit|'
+ r'expandenv|'
+ r'fileclose|'
+ r'fileconcat|'
+ r'filecopy|'
+ r'filecreate|'
+ r'filedelete|'
+ r'filelock|'
+ r'filemarkptr|'
+ r'filenamebox|'
+ r'fileopen|'
+ r'fileread|'
+ r'filereadln|'
+ r'filerename|'
+ r'filesearch|'
+ r'fileseek|'
+ r'fileseekback|'
+ r'filestat|'
+ r'filestrseek|'
+ r'filestrseek2|'
+ r'filetruncate|'
+ r'fileunlock|'
+ r'filewrite|'
+ r'filewriteln|'
+ r'findclose|'
+ r'findfirst|'
+ r'findnext|'
+ r'flushrecv|'
+ r'foldercreate|'
+ r'folderdelete|'
+ r'foldersearch|'
+ r'for|'
+ r'getdate|'
+ r'getdir|'
+ r'getenv|'
+ r'getfileattr|'
+ r'gethostname|'
+ r'getipv4addr|'
+ r'getipv6addr|'
+ r'getmodemstatus|'
+ r'getpassword|'
+ r'getspecialfolder|'
+ r'gettime|'
+ r'gettitle|'
+ r'getttdir|'
+ r'getver|'
+ # 'goto' is handled separately.
+ r'if|'
+ r'ifdefined|'
+ r'include|'
+ r'inputbox|'
+ r'int2str|'
+ r'intdim|'
+ r'ispassword|'
+ r'kmtfinish|'
+ r'kmtget|'
+ r'kmtrecv|'
+ r'kmtsend|'
+ r'listbox|'
+ r'loadkeymap|'
+ r'logautoclosemode|'
+ r'logclose|'
+ r'loginfo|'
+ r'logopen|'
+ r'logpause|'
+ r'logrotate|'
+ r'logstart|'
+ r'logwrite|'
+ r'loop|'
+ r'makepath|'
+ r'messagebox|'
+ r'mpause|'
+ r'next|'
+ r'passwordbox|'
+ r'pause|'
+ r'quickvanrecv|'
+ r'quickvansend|'
+ r'random|'
+ r'recvln|'
+ r'regexoption|'
+ r'restoresetup|'
+ r'return|'
+ r'rotateleft|'
+ r'rotateright|'
+ r'scprecv|'
+ r'scpsend|'
+ r'send|'
+ r'sendbreak|'
+ r'sendbroadcast|'
+ r'sendfile|'
+ r'sendkcode|'
+ r'sendln|'
+ r'sendlnbroadcast|'
+ r'sendlnmulticast|'
+ r'sendmulticast|'
+ r'setbaud|'
+ r'setdate|'
+ r'setdebug|'
+ r'setdir|'
+ r'setdlgpos|'
+ r'setdtr|'
+ r'setecho|'
+ r'setenv|'
+ r'setexitcode|'
+ r'setfileattr|'
+ r'setflowctrl|'
+ r'setmulticastname|'
+ r'setpassword|'
+ r'setrts|'
+ r'setspeed|'
+ r'setsync|'
+ r'settime|'
+ r'settitle|'
+ r'show|'
+ r'showtt|'
+ r'sprintf|'
+ r'sprintf2|'
+ r'statusbox|'
+ r'str2code|'
+ r'str2int|'
+ r'strcompare|'
+ r'strconcat|'
+ r'strcopy|'
+ r'strdim|'
+ r'strinsert|'
+ r'strjoin|'
+ r'strlen|'
+ r'strmatch|'
+ r'strremove|'
+ r'strreplace|'
+ r'strscan|'
+ r'strspecial|'
+ r'strsplit|'
+ r'strtrim|'
+ r'testlink|'
+ r'then|'
+ r'tolower|'
+ r'toupper|'
+ r'unlink|'
+ r'until|'
+ r'uptime|'
+ r'var2clipb|'
+ r'wait|'
+ r'wait4all|'
+ r'waitevent|'
+ r'waitln|'
+ r'waitn|'
+ r'waitrecv|'
+ r'waitregex|'
+ r'while|'
+ r'xmodemrecv|'
+ r'xmodemsend|'
+ r'yesnobox|'
+ r'ymodemrecv|'
+ r'ymodemsend|'
+ r'zmodemrecv|'
+ r'zmodemsend'
+ r')\b',
+ Keyword,
+ ),
+ (r'(?i)(call|goto)([ \t]+)([a-z0-9_]+)',
+ bygroups(Keyword, Text.Whitespace, Name.Label)),
+ ],
+ 'builtin-variables': [
+ (
+ r'(?i)('
+ r'groupmatchstr1|'
+ r'groupmatchstr2|'
+ r'groupmatchstr3|'
+ r'groupmatchstr4|'
+ r'groupmatchstr5|'
+ r'groupmatchstr6|'
+ r'groupmatchstr7|'
+ r'groupmatchstr8|'
+ r'groupmatchstr9|'
+ r'inputstr|'
+ r'matchstr|'
+ r'mtimeout|'
+ r'param1|'
+ r'param2|'
+ r'param3|'
+ r'param4|'
+ r'param5|'
+ r'param6|'
+ r'param7|'
+ r'param8|'
+ r'param9|'
+ r'paramcnt|'
+ r'params|'
+ r'result|'
+ r'timeout'
+ r')\b',
+ Name.Builtin
+ ),
+ ],
+ 'user-variables': [
+ (r'(?i)[a-z_][a-z0-9_]*', Name.Variable),
+ ],
+ 'numeric-literals': [
+ (r'(-?)([0-9]+)', bygroups(Operator, Number.Integer)),
+ (r'(?i)\$[0-9a-f]+', Number.Hex),
+ ],
+ 'string-literals': [
+ (r'(?i)#(?:[0-9]+|\$[0-9a-f]+)', String.Char),
+ (r"'[^'\n]*'", String.Single),
+ (r'"[^"\n]*"', String.Double),
+ # Opening quotes without a closing quote on the same line are errors.
+ (r"('[^']*)(\n)", bygroups(Error, Text.Whitespace)),
+ (r'("[^"]*)(\n)', bygroups(Error, Text.Whitespace)),
+ ],
+ 'operators': [
+ (r'and|not|or|xor', Operator.Word),
+ (r'[!%&*+<=>^~\|\/-]+', Operator),
+ (r'[()]', String.Symbol),
+ ],
+ 'all-whitespace': [
+ (r'\s+', Text.Whitespace),
+ ],
+ }
+
+ # Turtle and Tera Term macro files share the same file extension
+ # but each has a recognizable and distinct syntax.
+ def analyse_text(text):
+ if re.search(TeraTermLexer.tokens['commands'][0][0], text):
+ return 0.01