diff options
author | Georg Brandl <georg@python.org> | 2014-09-19 21:14:43 +0200 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2014-09-19 21:14:43 +0200 |
commit | 78a45160ef63837dbaa18f5a49e1bd342354705a (patch) | |
tree | af9e90aa4c12c951fb1a9405c7f735a7f8fbd9ae /pygments/lexers/business.py | |
parent | d1a7453489a4c29d3613e738ecec83bee816d3f2 (diff) | |
download | pygments-78a45160ef63837dbaa18f5a49e1bd342354705a.tar.gz |
reorganization of other.py, part 2
Diffstat (limited to 'pygments/lexers/business.py')
-rw-r--r-- | pygments/lexers/business.py | 112 |
1 files changed, 111 insertions, 1 deletions
diff --git a/pygments/lexers/business.py b/pygments/lexers/business.py index 01a15eaa..b02a8beb 100644 --- a/pygments/lexers/business.py +++ b/pygments/lexers/business.py @@ -17,7 +17,8 @@ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ from pygments.lexers._openedgebuiltins import OPENEDGEKEYWORDS -__all__ = ['CobolLexer', 'CobolFreeformatLexer', 'ABAPLexer', 'OpenEdgeLexer'] +__all__ = ['CobolLexer', 'CobolFreeformatLexer', 'ABAPLexer', 'OpenEdgeLexer', + 'GoodDataCLLexer', 'MaqlLexer'] class CobolLexer(RegexLexer): @@ -477,3 +478,112 @@ class OpenEdgeLexer(RegexLexer): (r'}', Comment.Preproc, '#pop'), ], } + + +class GoodDataCLLexer(RegexLexer): + """ + Lexer for `GoodData-CL <http://github.com/gooddata/GoodData-CL/raw/master/cli/src/main/resources/com/gooddata/processor/COMMANDS.txt>`_ + script files. + + .. versionadded:: 1.4 + """ + + name = 'GoodData-CL' + aliases = ['gooddata-cl'] + filenames = ['*.gdc'] + mimetypes = ['text/x-gooddata-cl'] + + flags = re.IGNORECASE + tokens = { + 'root': [ + # Comments + (r'#.*', Comment.Single), + # Function call + (r'[a-z]\w*', Name.Function), + # Argument list + (r'\(', Punctuation, 'args-list'), + # Punctuation + (r';', Punctuation), + # Space is not significant + (r'\s+', Text) + ], + 'args-list': [ + (r'\)', Punctuation, '#pop'), + (r',', Punctuation), + (r'[a-z]\w*', Name.Variable), + (r'=', Operator), + (r'"', String, 'string-literal'), + (r'[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]{1,3})?', Number), + # Space is not significant + (r'\s', Text) + ], + 'string-literal': [ + (r'\\[tnrfbae"\\]', String.Escape), + (r'"', String, '#pop'), + (r'[^\\"]+', String) + ] + } + + +class MaqlLexer(RegexLexer): + """ + Lexer for `GoodData MAQL + <https://secure.gooddata.com/docs/html/advanced.metric.tutorial.html>`_ + scripts. + + .. versionadded:: 1.4 + """ + + name = 'MAQL' + aliases = ['maql'] + filenames = ['*.maql'] + mimetypes = ['text/x-gooddata-maql', 'application/x-gooddata-maql'] + + flags = re.IGNORECASE + tokens = { + 'root': [ + # IDENTITY + (r'IDENTIFIER\b', Name.Builtin), + # IDENTIFIER + (r'\{[^}]+\}', Name.Variable), + # NUMBER + (r'[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]{1,3})?', Number), + # STRING + (r'"', String, 'string-literal'), + # RELATION + (r'\<\>|\!\=', Operator), + (r'\=|\>\=|\>|\<\=|\<', Operator), + # := + (r'\:\=', Operator), + # OBJECT + (r'\[[^]]+\]', Name.Variable.Class), + # keywords + (words(( + 'DIMENSION', 'DIMENSIONS', 'BOTTOM', 'METRIC', 'COUNT', 'OTHER', + 'FACT', 'WITH', 'TOP', 'OR', 'ATTRIBUTE', 'CREATE', 'PARENT', + 'FALSE', 'ROW', 'ROWS', 'FROM', 'ALL', 'AS', 'PF', 'COLUMN', + 'COLUMNS', 'DEFINE', 'REPORT', 'LIMIT', 'TABLE', 'LIKE', 'AND', + 'BY', 'BETWEEN', 'EXCEPT', 'SELECT', 'MATCH', 'WHERE', 'TRUE', + 'FOR', 'IN', 'WITHOUT', 'FILTER', 'ALIAS', 'ORDER', 'FACT', + 'WHEN', 'NOT', 'ON', 'KEYS', 'KEY', 'FULLSET', 'PRIMARY', + 'LABELS', 'LABEL', 'VISUAL', 'TITLE', 'DESCRIPTION', 'FOLDER', + 'ALTER', 'DROP', 'ADD', 'DATASET', 'DATATYPE', 'INT', 'BIGINT', + 'DOUBLE', 'DATE', 'VARCHAR', 'DECIMAL', 'SYNCHRONIZE', 'TYPE', + 'DEFAULT', 'ORDER', 'ASC', 'DESC', 'HYPERLINK', 'INCLUDE', + 'TEMPLATE', 'MODIFY'), suffix=r'\b'), + Keyword), + # FUNCNAME + (r'[a-z]\w*\b', Name.Function), + # Comments + (r'#.*', Comment.Single), + # Punctuation + (r'[,;\(\)]', Punctuation), + # Space is not significant + (r'\s+', Text) + ], + 'string-literal': [ + (r'\\[tnrfbae"\\]', String.Escape), + (r'"', String, '#pop'), + (r'[^\\"]+', String) + ], + } |