summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/pygments/lexers/verifpal.py
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.11/site-packages/pygments/lexers/verifpal.py')
-rw-r--r--venv/lib/python3.11/site-packages/pygments/lexers/verifpal.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/pygments/lexers/verifpal.py b/venv/lib/python3.11/site-packages/pygments/lexers/verifpal.py
new file mode 100644
index 0000000..6953dd7
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/pygments/lexers/verifpal.py
@@ -0,0 +1,66 @@
+"""
+ pygments.lexers.verifpal
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Lexers for Verifpal languages.
+
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from pygments.lexer import RegexLexer, words, bygroups, default
+from pygments.token import Comment, Keyword, Name, String, Punctuation, \
+ Whitespace
+
+__all__ = ['VerifpalLexer']
+
+
+class VerifpalLexer(RegexLexer):
+ """
+ For Verifpal code.
+
+ .. versionadded:: 2.16
+ """
+
+ name = 'Verifpal'
+ aliases = ['verifpal']
+ filenames = ['*.vp']
+ mimetypes = ['text/x-verifpal']
+ url = 'https://verifpal.com'
+
+ tokens = {
+ 'root': [
+ (r'//.*$', Comment.Single),
+ (r'(principal)( +)(\w+)( *)(\[)(.*)$', bygroups(Name.Builtin, Whitespace, String, Whitespace, Punctuation, Whitespace)),
+ (r'(attacker)( *)(\[)( *)(passive|active)( *)(\])( *)$', bygroups(Name.Builtin, Whitespace, Punctuation, Whitespace, String, Whitespace, Punctuation, Whitespace)),
+ (r'(knows)( +)(private|public)( +)', bygroups(Name.Builtin, Whitespace, Keyword.Constant, Whitespace), 'shared'),
+ (r'(queries)( +)(\[)', bygroups(Name.Builtin, Whitespace, Punctuation), 'queries'),
+ (r'(\w+)( +)(->|→)( *)(\w+)( *)(\:)', bygroups(String, Whitespace, Punctuation, Whitespace, String, Whitespace, Punctuation), 'shared'),
+ (words(('generates', 'leaks'), suffix=r'\b'), Name.Builtin, 'shared'),
+ (words(( 'phase', 'precondition',), suffix=r'\b'), Name.Builtin),
+ (r'[\[\(\)\]\?:=→^,]', Punctuation),
+ (r'->', Punctuation),
+ (words(('password',), suffix=r'\b'), Keyword.Constant),
+ (words(('AEAD_DEC', 'AEAD_ENC', 'ASSERT', 'BLIND', 'CONCAT',
+ 'DEC', 'ENC', 'G', 'HASH', 'HKDF', 'MAC', 'PKE_DEC',
+ 'PKE_ENC', 'PW_HASH', 'RINGSIGN', 'RINGSIGNVERIF',
+ 'SHAMIR_JOIN', 'SHAMIR_SPLIT', 'SIGN', 'SIGNVERIF',
+ 'SPLIT', 'UNBLIND', '_', 'nil'), suffix=r'\b'),
+ Name.Function),
+ (r'\s+', Whitespace),
+ (r'\w+', Name.Variable),
+ ],
+ 'shared': [
+ (r'[\^\[\],]', Punctuation),
+ (r' +', Whitespace),
+ (r'\w+', Name.Variable),
+ default('#pop')
+ ],
+ 'queries': [
+ (r'\s+', Name.Variable),
+ (words(('confidentiality?', 'authentication?', 'freshness?',
+ 'unlinkability?', 'equivalence?'), suffix='( )'),
+ bygroups(Keyword.Pseudo, Whitespace), 'shared'),
+ default('#pop')
+ ]
+ }