Current File : //proc/3/task/3/root/usr/lib64/python2.7/site-packages/dns/tokenizer.pyc
�
FHSc@s�dZddlZddlZddlZddlZddlZied6ed6ed6ed6ed6ed6ed 6Zied 6Z d
Z
dZdZd
Z
dZdZdZdejjfd��YZdefd��YZdefd��YZdS(sTokenize DNS master file formati����Nt s s
t;t(t)t"iiiiiiitUngetBufferFullcBseZdZRS(sRRaised when an attempt is made to unget a token when the unget
buffer is full.(t__name__t
__module__t__doc__(((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyR,stTokencBs�eZdZded�Zd�Zd�Zd�Zd�Zd�Z d�Z
d �Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�ZRS(s�A DNS master file format token.
@ivar ttype: The token type
@type ttype: int
@ivar value: The token value
@type value: string
@ivar has_escape: Does the token value contain escapes?
@type has_escape: bool
tcCs||_||_||_dS(sInitialize a token instance.
@param ttype: The token type
@type ttype: int
@param value: The token value
@type value: string
@param has_escape: Does the token value contain escapes?
@type has_escape: bool
N(tttypetvaluet
has_escape(tselfRRR
((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt__init__<s
cCs
|jtkS(N(RtEOF(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytis_eofJscCs
|jtkS(N(RtEOL(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytis_eolMscCs
|jtkS(N(Rt
WHITESPACE(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt
is_whitespacePscCs
|jtkS(N(Rt
IDENTIFIER(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt
is_identifierSscCs
|jtkS(N(Rt
QUOTED_STRING(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytis_quoted_stringVscCs
|jtkS(N(RtCOMMENT(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt
is_commentYscCs
|jtkS(N(Rt DELIMITER(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytis_delimiter\scCs|jtkp|jtkS(N(RRR(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt
is_eol_or_eof_scCs5t|t�stS|j|jko4|j|jkS(N(t
isinstanceR tFalseRR(Rtother((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt__eq__bscCs5t|t�stS|j|jkp4|j|jkS(N(RR tTrueRR(RR!((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt__ne__hscCsd|j|jfS(Ns%d "%s"(RR(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt__str__nscCsu|js
|Sd}t|j�}d}x:||krd|j|}|d7}|dkrW||krutjj�n|j|}|d7}|j�rW||kr�tjj�n|j|}|d7}||kr�tjj�n|j|}|d7}|j�o|j�s#tjj�ntt |�dt |�dt |��}qWn||7}q+Wt
|j|�S(NR
iis\idi
(R
tlenRtdnst exceptiont
UnexpectedEndtisdigittSyntaxErrortchrtintR R(Rt unescapedtltitctc2tc3((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytunescapeqs6
4cCsdS(Ni((R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt__len__�scCst|j|jf�S(N(titerRR(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt__iter__�scCs0|dkr|jS|dkr&|jSt�dS(Nii(RRt
IndexError(RR0((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt__getitem__�s
(RRRR RRRRRRRRRR"R$R%R4R5R7R9(((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyR 1s" t TokenizercBs�eZdZejdd�Zd�Zd�Zd�Z d�Z
eed�Zd�Z
d�Zd �Zd
�Zd�Zd�Zd
�Zdd�Zdd�Zdd�Zd�Zd�ZRS(s�A DNS master file format tokenizer.
A token is a (type, value) tuple, where I{type} is an int, and
I{value} is a string. The valid types are EOF, EOL, WHITESPACE,
IDENTIFIER, QUOTED_STRING, COMMENT, and DELIMITER.
@ivar file: The file to tokenize
@type file: file
@ivar ungotten_char: The most recently ungotten character, or None.
@type ungotten_char: string
@ivar ungotten_token: The most recently ungotten token, or None.
@type ungotten_token: (int, string) token tuple
@ivar multiline: The current multiline level. This value is increased
by one every time a '(' delimiter is read, and decreased by one every time
a ')' delimiter is read.
@type multiline: int
@ivar quoting: This variable is true if the tokenizer is currently
reading a quoted string.
@type quoting: bool
@ivar eof: This variable is true if the tokenizer has encountered EOF.
@type eof: bool
@ivar delimiters: The current delimiter dictionary.
@type delimiters: dict
@ivar line_number: The current line number
@type line_number: int
@ivar filename: A filename that will be returned by the L{where} method.
@type filename: string
cCs�t|t�r6tj|�}|dkrcd}qcn-|dkrc|tjkrZd}qcd}n||_d|_d|_ d|_
t|_t|_
t|_d|_||_dS(s�Initialize a tokenizer instance.
@param f: The file to tokenize. The default is sys.stdin.
This parameter may also be a string, in which case the tokenizer
will take its input from the contents of the string.
@type f: file or string
@param filename: the name of the filename that the L{where} method
will return.
@type filename: string
s<string>s<stdin>s<file>iiN(Rtstrt cStringIOtStringIOtNonetsyststdintfilet
ungotten_chartungotten_tokent multilineR tquotingteoft_DELIMITERSt
delimiterstline_numbertfilename(RtfRJ((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyR�s" cCs�|jdkrl|jr!d}q~|jjd�}|dkrKt|_q~|dkr~|jd7_q~n|j}d|_|S(s<Read a character from input.
@rtype: string
R
is
N(RBR>RFRAtreadR#RI(RR1((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt _get_char�s cCs|j|jfS(s�Return the current location in the input.
@rtype: (string, int) tuple. The first item is the filename of
the input, the second is the current line number.
(RJRI(R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytwhere�scCs%|jdk rt�n||_dS(sEUnget a character.
The unget buffer for characters is only one character large; it is
an error to try to unget a character when the unget buffer is not
empty.
@param c: the character to unget
@type c: string
@raises UngetBufferFull: there is already an ungotten char
N(RBR>R(RR1((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt_unget_char�s cCsod}xbtrj|j�}|dkr]|dkr]|dksI|jr]|j|�|Sn|d7}q WdS(s(Consume input until a non-whitespace character is encountered.
The non-whitespace character is then ungotten, and the number of
whitespace characters consumed is returned.
If the tokenizer is in multiline mode, then newlines are whitespace.
@rtype: int
iRs s
iN(R#RMRDRO(RtskippedR1((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytskip_whitespaces
c
Cs�|jdk rZ|j}d|_|j�r:|rW|SqZ|j�rS|rW|SqZ|Sn|j�}|r�|dkr�ttd�Sd}t}t}x�t r@|j
�}|dks�||jkr�|dkr�|jr�t
jj�n|dkr�|tkr�|dkr.|jd7_|j�q�q�|dkrw|jdksXt
jj�n|jd8_|j�q�q�|dkr�|js�t |_t|_t}q�q�t|_t|_|j�q�q�|dkr�ttd�S|d kr�x5|j
�}|dks|dkrPn||7}q�|rI|j|�tt|�S|dkr}|jrst
jjd
��ntt�S|jr�|j�d}q�q�ttd�Sq�|}t}n
|j|�Png|jr�|dkr�|j
�}|dkrt
jj�n|j�r�|j
�}|dkr;t
jj�n|j
�} |dkrbt
jj�n|j�ow| j�s�t
jj�ntt|�dt|�d
t| ��}q�q3|dkr3t
jjd��q3nR|dkr3||7}t }|j
�}|dks!|dkr3t
jj�q3n||7}q�W|dkr�|tkr�|jrwt
jjd
��nt}nt|||�S(sGet the next token.
@param want_leading: If True, return a WHITESPACE token if the
first character read is whitespace. The default is False.
@type want_leading: bool
@param want_comment: If True, return a COMMENT token if the
first token read is a comment. The default is False.
@type want_comment: bool
@rtype: Token object
@raises dns.exception.UnexpectedEnd: input ended prematurely
@raises dns.exception.SyntaxError: input was badly formed
iRR
RiRRs
Rsunbalanced parenthesess\idi
snewline in quoted stringN(RCR>RRRQR RRR R#RMRHRER'R(R)RRDR+t_QUOTING_DELIMITERSRGRRORRRR*R,R-(
Rtwant_leadingtwant_commentttokenRPRR
R1R2R3((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytgets�
4
cCs%|jdk rt�n||_dS(s@Unget a token.
The unget buffer for tokens is only one token large; it is
an error to try to unget a token when the unget buffer is not
empty.
@param token: the token to unget
@type token: Token object
@raises UngetBufferFull: there is already an ungotten token
N(RCR>R(RRU((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytunget�s cCs%|j�}|j�r!t�n|S(sLReturn the next item in an iteration.
@rtype: (int, string)
(RVRt
StopIteration(RRU((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytnext�s cCs|S(N((R((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyR7�scCsd|j�j�}|j�s3tjjd��n|jj�sWtjjd��nt|j�S(s|Read the next token and interpret it as an integer.
@raises dns.exception.SyntaxError:
@rtype: int
sexpecting an identifiersexpecting an integer( RVR4RR'R(R+RR*R-(RRU((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytget_int�scCsA|j�}|dks$|dkr=tjjd|��n|S(s�Read the next token and interpret it as an 8-bit unsigned
integer.
@raises dns.exception.SyntaxError:
@rtype: int
ii�s#%d is not an unsigned 8-bit integer(RZR'R(R+(RR((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt get_uint8�scCsA|j�}|dks$|dkr=tjjd|��n|S(s�Read the next token and interpret it as a 16-bit unsigned
integer.
@raises dns.exception.SyntaxError:
@rtype: int
ii��s$%d is not an unsigned 16-bit integer(RZR'R(R+(RR((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt
get_uint16�scCs�|j�j�}|j�s3tjjd��n|jj�sWtjjd��nt|j�}|dks~|dkr�tjjd|��n|S(s�Read the next token and interpret it as a 32-bit unsigned
integer.
@raises dns.exception.SyntaxError:
@rtype: int
sexpecting an identifiersexpecting an integerils$%d is not an unsigned 32-bit integer( RVR4RR'R(R+RR*tlong(RRUR((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt
get_uint32�scCsF|j�j�}|j�p'|j�s?tjjd��n|jS(s}Read the next token and interpret it as a string.
@raises dns.exception.SyntaxError:
@rtype: string
sexpecting a string(RVR4RRR'R(R+R(RtoriginRU((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt
get_string�scCs:|j�j�}|j�s3tjjd��n|jS(s�Read the next token and raise an exception if it is not an identifier.
@raises dns.exception.SyntaxError:
@rtype: string
sexpecting an identifier(RVR4RR'R(R+R(RR_RU((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytget_identifier�scCsC|j�}|j�s-tjjd��ntjj|j|�S(s�Read the next token and interpret it as a DNS name.
@raises dns.exception.SyntaxError:
@rtype: dns.name.Name objectsexpecting an identifier(RVRR'R(R+tnamet from_textR(RR_RU((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytget_namescCsD|j�}|j�s=tjjd|j|jf��n|jS(s�Read the next token and raise an exception if it isn't EOL or
EOF.
@raises dns.exception.SyntaxError:
@rtype: string
s expected EOL or EOF, got %d "%s"(RVRR'R(R+RR(RRU((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytget_eols%cCsF|j�j�}|j�s3tjjd��ntjj|j�S(Nsexpecting an identifier( RVR4RR'R(R+tttlRcR(RRU((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pytget_ttlsN(RRRR?R@R>RRMRNRORQR RVRWRYR7RZR[R\R^R`RaRdReRg(((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyR:�s& z
(RR<R?t
dns.exceptionR'tdns.nametdns.ttlR#RGRRRRRRRRRR(tDNSExceptionRtobjectR R:(((s3/usr/lib64/python2.7/site-packages/dns/tokenizer.pyt<module>s0
m