diff options
author | Matthew Fernandez <matthew.fernandez@nicta.com.au> | 2015-03-26 11:21:00 +1100 |
---|---|---|
committer | Matthew Fernandez <matthew.fernandez@nicta.com.au> | 2015-03-26 11:21:00 +1100 |
commit | 915089a6ba9c9e4f65c0eeada21d69598eb7af51 (patch) | |
tree | f006072a24a47177784e0ac4cb3a304ff649038c /pygments/lexers/esoteric.py | |
parent | 0d7e4c7183fc3a53dfeadb800285debf83eb84b0 (diff) | |
download | pygments-915089a6ba9c9e4f65c0eeada21d69598eb7af51.tar.gz |
Add a lexer for the CAmkES language.
This changeset adds a lexer to support the input language for the CAmkES
component platform (https://sel4.systems/CAmkES/). It is a basic stateless
lexer that merely supports keywords and types without tracking context.
Diffstat (limited to 'pygments/lexers/esoteric.py')
-rw-r--r-- | pygments/lexers/esoteric.py | 62 |
1 files changed, 60 insertions, 2 deletions
diff --git a/pygments/lexers/esoteric.py b/pygments/lexers/esoteric.py index f61b292d..e8e002ba 100644 --- a/pygments/lexers/esoteric.py +++ b/pygments/lexers/esoteric.py @@ -9,11 +9,11 @@ :license: BSD, see LICENSE for details. """ -from pygments.lexer import RegexLexer, include +from pygments.lexer import RegexLexer, include, words from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ Number, Punctuation, Error -__all__ = ['BrainfuckLexer', 'BefungeLexer', 'RedcodeLexer'] +__all__ = ['BrainfuckLexer', 'BefungeLexer', 'CAmkESLexer', 'RedcodeLexer'] class BrainfuckLexer(RegexLexer): @@ -78,6 +78,64 @@ class BefungeLexer(RegexLexer): } +class CAmkESLexer(RegexLexer): + """ + Basic lexer for the input language for the + `CAmkES <https://sel4.systems/CAmkES/>`_ component platform. + """ + name = 'CAmkES' + aliases = ['camkes', 'idl4'] + filenames = ['*.camkes', '*.idl4'] + + tokens = { + 'root':[ + # C pre-processor directive + (r'^\s*#.*\n', Comment.Preproc), + + # Whitespace, comments + (r'\s+', Text), + (r'/\*(.|\n)*?\*/', Comment), + (r'//.*\n', Comment), + + (r'[\[\(\){},\.;=\]]', Punctuation), + + (words(('assembly', 'attribute', 'component', 'composition', + 'configuration', 'connection', 'connector', 'consumes', + 'control', 'dataport', 'Dataport', 'emits', 'event', + 'Event', 'from', 'group', 'hardware', 'has', 'interface', + 'Interface', 'maybe', 'procedure', 'Procedure', 'provides', + 'template', 'to', 'uses'), suffix=r'\b'), Keyword), + + (words(('bool', 'boolean', 'Buf', 'char', 'character', 'double', + 'float', 'in', 'inout', 'int', 'int16_6', 'int32_t', + 'int64_t', 'int8_t', 'integer', 'mutex', 'out', 'real', + 'refin', 'semaphore', 'signed', 'string', 'uint16_t', + 'uint32_t', 'uint64_t', 'uint8_t', 'uintptr_t', 'unsigned', + 'void'), suffix=r'\b'), Keyword.Type), + + # Recognised attributes + (r'[a-zA-Z_]\w*_(priority|domain|buffer)', Keyword.Reserved), + (words(('dma_pool', 'from_access', 'to_access'), suffix=r'\b'), + Keyword.Reserved), + + # CAmkES-level include + (r'import\s+(<[^>]*>|"[^"]*");', Comment.Preproc), + + # C-level include + (r'include\s+(<[^>]*>|"[^"]*");', Comment.Preproc), + + # Literals + (r'0[xX][\da-fA-F]+', Number.Hex), + (r'-?[\d]+', Number), + (r'-?[\d]+\.[\d]+', Number.Float), + (r'"[^"]*"', String), + + # Identifiers + (r'[a-zA-Z_]\w*', Name), + ], + } + + class RedcodeLexer(RegexLexer): """ A simple Redcode lexer based on ICWS'94. |