Hacked By AnonymousFox
�
��fB) c @ sE d Z d d l Z d d l Z d d l m Z Gd d � d � Z d S( uk
HyperParser
===========
This module defines the HyperParser class, which provides advanced parsing
abilities for the ParenMatch and other extensions.
The HyperParser uses PyParser. PyParser is intended mostly to give information
on the proper indentation of code. HyperParser gives some information on the
structure of code, used by extensions to help the user.
i N( u PyParsec B s� | Ee Z d Z d d � Z d d � Z d d � Z d d � Z d d d
d � Z d Z e
j e
j d
Z
e
j d
Z d d � Z d d � Z d S( u HyperParserc
s� | � _ | j � _ } t j | j | j � } d d � } | | j | � � } | j sx� | j D]� } t | | d � } t
| � d } d | }
| j | j | |
� d � | j
| j | � � } | d
k s� | d k re Pqe qe W| j | p� d � n_ | j d | � } | r(| d } n d } d | }
| j | j | |
� d � | j d � | j d
d � � _ |
� _ | j � � _ � f d d
� t t � j � � D� � _ � j | � d
S( u[ Initialize the HyperParser to analyze the surroundings of the given
index.
c S s t t | � � S( N( u intu float( u index( ( u8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu
index2line s u( HyperParser.__init__.<locals>.index2linei u .0u %d.endu
i u consoleu 1.0Ni c sB g | ]8 } | d k o; � j | d � j | d d k � q S( i i ( u
bracketing( u .0u i( u self( u8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu
<listcomp>C s u( HyperParser.__init__.<locals>.<listcomp>i����( u editwinu textu PyParseu Parseru indentwidthu tabwidthu indexu context_use_ps1u num_context_linesu maxu repru set_stru getu find_good_parse_startu _build_char_in_string_funcu Noneu set_lou
tag_prevrangeu stru rawtextu stopatindexu get_last_stmt_bracketingu
bracketingu rangeu lenu isopeneru set_index(
u selfu editwinu indexu textu parseru
index2lineu lnou contextu startatu startatindexu stopatindexu bodu r( ( u selfu8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu __init__ s:
u HyperParser.__init__c C s t | j � t | j j | | j � � } | d k rF t d � � n | | _ d | _ xP | j t | j � d k r� | j | j d d | j k r� | j d 7_ q[ W| j t | j � d k r| j | j d d | j k r| j | j d r| j d 7_ n d S( ui Set the index to which the functions relate. Note that it must be
in the same statement.
i u0 The index given is before the analyzed statementi N(
u lenu rawtextu textu getu stopatindexu
ValueErroru indexinrawtextu indexbracketu
bracketingu isopener( u selfu indexu indexinrawtext( ( u8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu set_indexH s + !!u HyperParser.set_indexc C s/ | j | j o. | j | j | j d d k S( u5 Is the index given to the HyperParser is in a string?i u "u '( u "u '( u isopeneru indexbracketu rawtextu
bracketing( u self( ( u8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu is_in_string[ s u HyperParser.is_in_stringc C s0 | j | j p/ | j | j | j d d k S( u: Is the index given to the HyperParser is in a normal code?i u #u "u '( u #u "u '( u isopeneru indexbracketu rawtextu
bracketing( u self( ( u8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu
is_in_codeb s u HyperParser.is_in_codeu ([{c
C s� | j | j d } | j } x{ | j | sc | j | j | d | k sc | j | d | k r� | d 8} | d k r} d St | | j | d � } q W| j d } x: | t | j � k r� | j | d | k r� | d 7} q� W| j j d | j t | j � | j | d f � } | t | j � k sQ| j | d t | j � k rg| r[d S| j } n; | j j d | j t | j � | j | d d f � } | | f S( u� If the index given to the HyperParser is surrounded by a bracket
defined in openers (or at least has one before it), return the
indices of the opening bracket and the closing bracket (or the
end of line, whichever comes first).
If it is not surrounded by brackets, or the end of line comes before
the closing bracket and mustclose is True, returns None.
i i u %s-%dcN(
u
bracketingu indexbracketu isopeneru rawtextu Noneu minu lenu textu indexu stopatindex( u selfu openersu mustcloseu bracketinglevelu beforeu afteru beforeindexu
afterindex( ( u8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu get_surrounding_bracketsh s0
+ )u$ HyperParser.get_surrounding_bracketsu
\u _c C s� | } x1 | | k r9 | | d | j k r9 | d 8} q W| | k r{ | | | j k sr t j | | | � � r{ | } n | | S( Ni ( u _id_charsu _id_first_charsu keywordu iskeyword( u selfu stru limitu posu i( ( u8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu _eat_identifier� s & u HyperParser._eat_identifierc
C su | j � s t d � � n | j } | j } | j } | | d } | j } | } d
} xx� | | k r� | | d | j k r� | d 8} q_ | r� | | k r� | | d d k r� | d 8} d
} q_ | | k r*| d k r*| | | d d d k r*| d 8} | | d } | | d d } q_ Pq_ | s8Pn | j | | | � } | rl| | } | } d } q\ | | k r`| | d } x2 | d k r�| | d d | k r�| d 8} q�W| | d | k r�Pn | | d } | d 8} | | d } | } | | d k rqa| | d k r\x. | d k rR| | d d k rR| d 8} q%W| } n Pq\ Pq\ | | | j � S( u� Return a string with the Python expression which ends at the given
index, which is empty if there is no real one.
u? get_expression should only be called if index is inside a code.i i u .u #i u ([u '"u rRbBuUTF(
u
is_in_codeu
ValueErroru rawtextu
bracketingu indexbracketu indexinrawtextu Trueu _whitespace_charsu _eat_identifieru False(
u selfu rawtextu
bracketingu
brck_indexu
brck_limitu posu last_identifier_posu
postdot_phaseu retu level( ( u8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu get_expression� sb #
'
# u HyperParser.get_expressionNF( u __name__u
__module__u __qualname__u __init__u set_indexu is_in_stringu
is_in_codeu Falseu get_surrounding_bracketsu _whitespace_charsu stringu
ascii_lettersu digitsu _id_charsu _id_first_charsu _eat_identifieru get_expression( u
__locals__( ( u8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu HyperParser s 7'
u HyperParser( u __doc__u stringu keywordu idlelibu PyParseu HyperParser( ( ( u8 /opt/alt/python33/lib64/python3.3/idlelib/HyperParser.pyu <module> s
Hacked By AnonymousFox1.0, Coded By AnonymousFox