3 ��X�% � @ s d Z ddlZddlmZmZmZmZmZ ddlm Z m Z mZmZm Z mZmZmZmZmZ ddlmZ dddd d ddd dg ZG dd� de�ZG dd� de�ZG dd� de�ZG dd � d e�ZG dd � d e�ZG dd� de�ZG dd� de�ZG dd � d e�ZG dd� de�ZdS )z� pygments.lexers.lisp ~~~~~~~~~~~~~~~~~~~~ Lexers for Lispy languages. :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. � N)� RegexLexer�include�bygroups�words�default) �Text�Comment�Operator�Keyword�Name�String�Number�Punctuation�Literal�Error)�PythonLexer�SchemeLexer�CommonLispLexer�HyLexer�RacketLexer�NewLispLexer�EmacsLispLexer� ShenLexer� CPSALexer�XtlangLexerc � @ sp e Zd ZdZdZddgZddgZddgZ�dZ�dZ d�Z d�ejfd�ej d�fd�ed�fd�efd�efd�ejfd�ejfd�efd�e ejfd�ejfd�ejfd�efd�d�jd�d�� eD �� efd�e ejfd�e ejf�d d�j�dd�� e D �� ejf�de ejfe ejf�def�defgd�ej �df�dej �df�dej f�d ej fg�d e�df�de�df�defg�d �Z�dS ( r a� A Scheme lexer, parsing a stream and outputting the tokens needed to highlight scheme code. This lexer could be most probably easily subclassed to parse other LISP-Dialects like Common Lisp, Emacs Lisp or AutoLisp. This parser is checked with pastes from the LISP pastebin at http://paste.lisp.org/ to cover as much syntax as possible. It supports the full Scheme syntax as defined in R5RS. .. versionadded:: 0.6 ZScheme�schemeZscmz*.scmz*.ssz text/x-schemezapplication/x-scheme�lambda�define�if�else�cond�and�or�case�let�let*�letrec�begin�do�delay�set!�=>�quote� quasiquote�unquote�unquote-splicing� define-syntax� let-syntax� letrec-syntax�syntax-rules�*�+�-�/�<�<=�=�>�>=�abs�acos�angle�append�apply�asin�assoc�assq�assv�atan�boolean?�caaaar�caaadr�caaar�caadar�caaddr�caadr�caar�cadaar�cadadr�cadar�caddar�cadddr�caddr�cadr�call-with-current-continuation�call-with-input-file�call-with-output-file�call-with-values�call/cc�car�cdaaar�cdaadr�cdaar�cdadar�cdaddr�cdadr�cdar�cddaar�cddadr�cddar�cdddar�cddddr�cdddr�cddr�cdr�ceiling� char->integer�char-alphabetic?� char-ci<=?� char-ci<?� char-ci=?� char-ci>=?� char-ci>?� char-downcase�char-lower-case?� char-numeric?�char-ready?�char-upcase�char-upper-case?�char-whitespace?�char<=?�char<?�char=?�char>=?�char>?�char?�close-input-port�close-output-port�complex?�cons�cos�current-input-port�current-output-port�denominator�display�dynamic-wind�eof-object?�eq?�equal?�eqv?�eval�even?�exact->inexact�exact?�exp�expt�floor�for-each�force�gcd� imag-part�inexact->exact�inexact?�input-port?� integer->char�integer?�interaction-environment�lcm�length�list�list->string�list->vector�list-ref� list-tail�list?�load�log� magnitude� make-polar�make-rectangular�make-string�make-vector�map�max�member�memq�memv�min�modulo� negative?�newline�not�null-environment�null?�number->string�number?� numerator�odd?�open-input-file�open-output-file�output-port?�pair?� peek-char�port?� positive?� procedure?�quotient� rational?�rationalize�read� read-char� real-part�real?� remainder�reverse�round�scheme-report-environment�set-car!�set-cdr!�sin�sqrt�string�string->list�string->number�string->symbol� string-append�string-ci<=?�string-ci<?�string-ci=?�string-ci>=?�string-ci>?�string-copy�string-fill!� string-length� string-ref�string-set!� string<=?�string<?�string=?� string>=?�string>?�string?� substring�symbol->string�symbol?�tan�transcript-off� transcript-on�truncate�values�vector�vector->list�vector-fill!� vector-length� vector-ref�vector-set!�vector?�with-input-from-file�with-output-to-file�write� write-char�zero?z[\w!$%&*+,/:<=>?@^~|-]+z;.*$z#\|zmultiline-commentz#;\s*\(zcommented-formz#!r6rsz\s+z -?\d+\.\d+z-?\d+z"(\\\\|\\"|[^"])*"�'u'