Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
ecl.py145 linesDownload Raw Back to lexers
1"""2    pygments.lexers.ecl3    ~~~~~~~~~~~~~~~~~~~4 5    Lexers for the ECL language.6 7    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.8    :license: BSD, see LICENSE for details.9"""10 11import re12 13from pygments.lexer import RegexLexer, include, bygroups, words14from pygments.token import Comment, Operator, Keyword, Name, String, \15    Number, Punctuation, Whitespace16 17__all__ = ['ECLLexer']18 19 20class ECLLexer(RegexLexer):21    """22    Lexer for the declarative big-data ECL language.23    """24 25    name = 'ECL'26    url = 'https://hpccsystems.com/training/documentation/ecl-language-reference/html'27    aliases = ['ecl']28    filenames = ['*.ecl']29    mimetypes = ['application/x-ecl']30    version_added = '1.5'31 32    flags = re.IGNORECASE | re.MULTILINE33 34    tokens = {35        'root': [36            include('whitespace'),37            include('statements'),38        ],39        'whitespace': [40            (r'\s+', Whitespace),41            (r'\/\/.*', Comment.Single),42            (r'/(\\\n)?\*(.|\n)*?\*(\\\n)?/', Comment.Multiline),43        ],44        'statements': [45            include('types'),46            include('keywords'),47            include('functions'),48            include('hash'),49            (r'"', String, 'string'),50            (r'\'', String, 'string'),51            (r'(\d+\.\d*|\.\d+|\d+)e[+-]?\d+[lu]*', Number.Float),52            (r'(\d+\.\d*|\.\d+|\d+f)f?', Number.Float),53            (r'0x[0-9a-f]+[lu]*', Number.Hex),54            (r'0[0-7]+[lu]*', Number.Oct),55            (r'\d+[lu]*', Number.Integer),56            (r'[~!%^&*+=|?:<>/-]+', Operator),57            (r'[{}()\[\],.;]', Punctuation),58            (r'[a-z_]\w*', Name),59        ],60        'hash': [61            (r'^#.*$', Comment.Preproc),62        ],63        'types': [64            (r'(RECORD|END)\D', Keyword.Declaration),65            (r'((?:ASCII|BIG_ENDIAN|BOOLEAN|DATA|DECIMAL|EBCDIC|INTEGER|PATTERN|'66             r'QSTRING|REAL|RECORD|RULE|SET OF|STRING|TOKEN|UDECIMAL|UNICODE|'67             r'UNSIGNED|VARSTRING|VARUNICODE)\d*)(\s+)',68             bygroups(Keyword.Type, Whitespace)),69        ],70        'keywords': [71            (words((72                'APPLY', 'ASSERT', 'BUILD', 'BUILDINDEX', 'EVALUATE', 'FAIL',73                'KEYDIFF', 'KEYPATCH', 'LOADXML', 'NOTHOR', 'NOTIFY', 'OUTPUT',74                'PARALLEL', 'SEQUENTIAL', 'SOAPCALL', 'CHECKPOINT', 'DEPRECATED',75                'FAILCODE', 'FAILMESSAGE', 'FAILURE', 'GLOBAL', 'INDEPENDENT',76                'ONWARNING', 'PERSIST', 'PRIORITY', 'RECOVERY', 'STORED', 'SUCCESS',77                'WAIT', 'WHEN'), suffix=r'\b'),78             Keyword.Reserved),79            # These are classed differently, check later80            (words((81                'ALL', 'AND', 'ANY', 'AS', 'ATMOST', 'BEFORE', 'BEGINC++', 'BEST',82                'BETWEEN', 'CASE', 'CONST', 'COUNTER', 'CSV', 'DESCEND', 'ENCRYPT',83                'ENDC++', 'ENDMACRO', 'EXCEPT', 'EXCLUSIVE', 'EXPIRE', 'EXPORT',84                'EXTEND', 'FALSE', 'FEW', 'FIRST', 'FLAT', 'FULL', 'FUNCTION',85                'GROUP', 'HEADER', 'HEADING', 'HOLE', 'IFBLOCK', 'IMPORT', 'IN',86                'JOINED', 'KEEP', 'KEYED', 'LAST', 'LEFT', 'LIMIT', 'LOAD', 'LOCAL',87                'LOCALE', 'LOOKUP', 'MACRO', 'MANY', 'MAXCOUNT', 'MAXLENGTH',88                'MIN SKEW', 'MODULE', 'INTERFACE', 'NAMED', 'NOCASE', 'NOROOT',89                'NOSCAN', 'NOSORT', 'NOT', 'OF', 'ONLY', 'OPT', 'OR', 'OUTER',90                'OVERWRITE', 'PACKED', 'PARTITION', 'PENALTY', 'PHYSICALLENGTH',91                'PIPE', 'QUOTE', 'RELATIONSHIP', 'REPEAT', 'RETURN', 'RIGHT',92                'SCAN', 'SELF', 'SEPARATOR', 'SERVICE', 'SHARED', 'SKEW', 'SKIP',93                'SQL', 'STORE', 'TERMINATOR', 'THOR', 'THRESHOLD', 'TOKEN',94                'TRANSFORM', 'TRIM', 'TRUE', 'TYPE', 'UNICODEORDER', 'UNSORTED',95                'VALIDATE', 'VIRTUAL', 'WHOLE', 'WILD', 'WITHIN', 'XML', 'XPATH',96                '__COMPRESSED__'), suffix=r'\b'),97             Keyword.Reserved),98        ],99        'functions': [100            (words((101                'ABS', 'ACOS', 'ALLNODES', 'ASCII', 'ASIN', 'ASSTRING', 'ATAN',102                'ATAN2', 'AVE', 'CASE', 'CHOOSE', 'CHOOSEN', 'CHOOSESETS',103                'CLUSTERSIZE', 'COMBINE', 'CORRELATION', 'COS', 'COSH', 'COUNT',104                'COVARIANCE', 'CRON', 'DATASET', 'DEDUP', 'DEFINE', 'DENORMALIZE',105                'DISTRIBUTE', 'DISTRIBUTED', 'DISTRIBUTION', 'EBCDIC', 'ENTH',106                'ERROR', 'EVALUATE', 'EVENT', 'EVENTEXTRA', 'EVENTNAME', 'EXISTS',107                'EXP', 'FAILCODE', 'FAILMESSAGE', 'FETCH', 'FROMUNICODE',108                'GETISVALID', 'GLOBAL', 'GRAPH', 'GROUP', 'HASH', 'HASH32',109                'HASH64', 'HASHCRC', 'HASHMD5', 'HAVING', 'IF', 'INDEX',110                'INTFORMAT', 'ISVALID', 'ITERATE', 'JOIN', 'KEYUNICODE', 'LENGTH',111                'LIBRARY', 'LIMIT', 'LN', 'LOCAL', 'LOG', 'LOOP', 'MAP', 'MATCHED',112                'MATCHLENGTH', 'MATCHPOSITION', 'MATCHTEXT', 'MATCHUNICODE', 'MAX',113                'MERGE', 'MERGEJOIN', 'MIN', 'NOLOCAL', 'NONEMPTY', 'NORMALIZE',114                'PARSE', 'PIPE', 'POWER', 'PRELOAD', 'PROCESS', 'PROJECT', 'PULL',115                'RANDOM', 'RANGE', 'RANK', 'RANKED', 'REALFORMAT', 'RECORDOF',116                'REGEXFIND', 'REGEXREPLACE', 'REGROUP', 'REJECTED', 'ROLLUP',117                'ROUND', 'ROUNDUP', 'ROW', 'ROWDIFF', 'SAMPLE', 'SET', 'SIN',118                'SINH', 'SIZEOF', 'SOAPCALL', 'SORT', 'SORTED', 'SQRT', 'STEPPED',119                'STORED', 'SUM', 'TABLE', 'TAN', 'TANH', 'THISNODE', 'TOPN',120                'TOUNICODE', 'TRANSFER', 'TRIM', 'TRUNCATE', 'TYPEOF', 'UNGROUP',121                'UNICODEORDER', 'VARIANCE', 'WHICH', 'WORKUNIT', 'XMLDECODE',122                'XMLENCODE', 'XMLTEXT', 'XMLUNICODE'), suffix=r'\b'),123             Name.Function),124        ],125        'string': [126            (r'"', String, '#pop'),127            (r'\'', String, '#pop'),128            (r'[^"\']+', String),129        ],130    }131 132    def analyse_text(text):133        """This is very difficult to guess relative to other business languages.134        -> in conjunction with BEGIN/END seems relatively rare though."""135        result = 0136 137        if '->' in text:138            result += 0.01139        if 'BEGIN' in text:140            result += 0.01141        if 'END' in text:142            result += 0.01143 144        return result145 
codekingpro/portable-devtools · Team Ai