3 ��X�y � @ s( d Z ddlZddlmZmZmZmZmZmZ ddl m Z mZmZm Z mZmZmZmZmZ ddlmZ dddd d ddd dg Zejd�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd � d e�ZG dd� de�ZG dd � d e�ZG dd� de�ZG dd� de�Z G dd � d e�Z!G dd� de�Z"dS )z� pygments.lexers.haskell ~~~~~~~~~~~~~~~~~~~~~~~ Lexers for Haskell and related languages. :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. � N)�Lexer� RegexLexer�bygroups� do_insertions�default�include) �Text�Comment�Operator�Keyword�Name�String�Number�Punctuation�Generic)� unistring�HaskellLexer� IdrisLexer� AgdaLexer�CryptolLexer�LiterateHaskellLexer�LiterateIdrisLexer�LiterateAgdaLexer�LiterateCryptolLexer� KokaLexerz.*? c @ s. e Zd ZdZdZddgZdgZdgZej ej B ZdzZd{Z d4efd5ejfd6ejd7fd8ejd9fd:ejd;fd<ejfd=d>je� ejfd?ejfd@ej dA ejfdBej dC efdDej dA ejfdEej dA ejfdFejfdGejfdHejfdIejfdJejfdKefdLe j!fdMe j!fdNe j"fdOe j#fdPe j$fdQejdRfdSedTfdUejfdVej%fdWe&fgd4efdSedTfdXe&dYfdZefd[ej d\ ej d] e'ej(eeee�dYfd[ej d^ e'ej(eeee&�d_fd[ej d` e'ej(ee&�d_fdaej(dYfgd4efd[ej d` e'ej(ee&�d_fdbej dc ej(dYfgd4efdbej dd ejfdeej df ejfd5ejfd6ejd7fdge&fdKefdhe&d|fdXe&difg djejfd6ejdkfdlejdYfdmejfgdnejdYfdoej)dpfdQejdYfgdqefdoej)dpfdSedYfgdrej)dYfdsej dt ej)dYfd>je �ej)dYfduej)dYfdvej)dYfdPej)dYfdwej)dYfgdx�Z*dyS )}r zk A Haskell lexer based on the lexemes defined in the Haskell 98 Report. .. versionadded:: 0.8 ZHaskellZhaskellZhsz*.hsztext/x-haskell�case�class�datar �deriving�do�else�family�if�in� infix[lr]?�instance�let�newtype�of�then�type�where�_�NUL�SOH�[SE]TX�EOT�ENQ�ACK�BEL�BS�HT�LF�VT�FF�CR�S[OI]�DLE�DC[1-4]�NAK�SYN�ETB�CAN�EM�SUB�ESC�[FGRU]S�SP�DELz\s+z!--(?![!#$%&*+./<=>?@^|_~:\\]).*?$z\{-�commentz \bimport\b�importz \bmodule\b�modulez \berror\bz\b(%s)(?!\')\b�|z'[^\\]'z^[_z][\w\']*z'?[_z][\w']*z('')?[z(')[z (')\[[^\]]*\]z(')\([^)]*\)z\\(?![:!#$%&*+.\\/<=>?@^|~-]+)z+(<-|::|->|=>|=)(?![:!#$%&*+.\\/<=>?@^|~-]+)z:[:!#$%&*+.\\/<=>?@^|~-]*z[:!#$%&*+.\\/<=>?@^|~-]+z\d+[eE][+-]?\d+z\d+\.\d+([eE][+-]?\d+)?z0[oO][0-7]+z0[xX][\da-fA-F]+z\d+�'� character�"�stringz\[\]z\(\)z[][(),;`{}]z\)z#popzqualified\bz([z][\w.]*)(\s+)(as)(\s+)([z][\w.]*)z][\w.]*)(\s+)(hiding)(\s+)(\()�funclistz][\w.]*)(\s+)(\()z[\w.]+�[z][\w.]*z]\w*z(_[\w\']+|[z ][\w\']*)�,z\(z#pop:2z[^-{}]+z#pushz-\}z[-{}]z[^\\']'z\\�escapez[^\\"]+z[abfnrtv"\'&\\]z\^[][z@^_]zo[0-7]+zx[\da-fA-F]+z\s+\\)�rootrH rI rO rG rL rN rR N)r r r r r r r r! r"