§
    �zIfÜ{  ã                   óP   — d Z ddlZddlmZ ddlmZ  G d„ dej        ¦  «        ZdS )z
Unit tests for nltk.tgrep.
é    N)Útgrep)ÚParentedTreec                   óÀ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z dS ) ÚTestSequenceFunctionsz5
    Class containing unit tests for nltk.tgrep.
    c                 ó^   — t          j        d¦  «        }|                      |g d¢¦  «         dS )z.
        Simple test of tokenization.
        ú%A .. (B !< C . D) | ![<< (E , F) $ G])ÚAú..ú(ÚBú!ú<ÚCú.ÚDú)ú|r   ú[ú<<r   ÚEú,ÚFr   ú$ÚGú]N)r   Útgrep_tokenizeÚassertEqual)ÚselfÚtokenss     úM/var/www/piapp/venv/lib/python3.11/site-packages/nltk/test/unit/test_tgrep.pyÚtest_tokenize_simplez*TestSequenceFunctions.test_tokenize_simple   sI   € õ Ô%Ð&MÑNÔNˆØ×ÒØðð ð ñ	
ô 	
ð 	
ð 	
ð 	
ó    c                 óz   — |                       t          j        d¦  «        t          j        d¦  «        ¦  «         dS )zM
        Test that tokenization handles bytes and strs the same way.
        s%   A .. (B !< C . D) | ![<< (E , F) $ G]r   N©r   r   r   ©r   s    r    Útest_tokenize_encodingz,TestSequenceFunctions.test_tokenize_encoding<   sD   € ð 	×ÒÝÔ Ð!IÑJÔJÝÔ Ð!HÑIÔIñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 ó^  — |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d	¦  «        g d
¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d ¢¦  «         |                       t          j        d!¦  «        g d"¢¦  «         |                       t          j        d#¦  «        g d$¢¦  «         |                       t          j        d%¦  «        g d&¢¦  «         |                       t          j        d'¦  «        g d(¢¦  «         |                       t          j        d)¦  «        g d*¢¦  «         |                       t          j        d+¦  «        g d,¢¦  «         |                       t          j        d-¦  «        g d.¢¦  «         |                       t          j        d/¦  «        g d0¢¦  «         |                       t          j        d1¦  «        g d2¢¦  «         |                       t          j        d3¦  «        g d4¢¦  «         |                       t          j        d5¦  «        g d6¢¦  «         |                       t          j        d7¦  «        g d8¢¦  «         |                       t          j        d9¦  «        g d:¢¦  «         |                       t          j        d;¦  «        g d<¢¦  «         |                       t          j        d=¦  «        g d>¢¦  «         |                       t          j        d?¦  «        g d@¢¦  «         |                       t          j        dA¦  «        g dB¢¦  «         |                       t          j        dC¦  «        g dD¢¦  «         |                       t          j        dE¦  «        g dF¢¦  «         |                       t          j        dG¦  «        g dH¢¦  «         |                       t          j        dI¦  «        g dJ¢¦  «         |                       t          j        dK¦  «        g dL¢¦  «         |                       t          j        dM¦  «        g dN¢¦  «         |                       t          j        dO¦  «        g dP¢¦  «         |                       t          j        dQ¦  «        g dR¢¦  «         |                       t          j        dS¦  «        g dT¢¦  «         |                       t          j        dU¦  «        g dV¢¦  «         |                       t          j        dW¦  «        g dX¢¦  «         |                       t          j        dY¦  «        g dZ¢¦  «         |                       t          j        d[¦  «        g d\¢¦  «         |                       t          j        d]¦  «        g d^¢¦  «         |                       t          j        d_¦  «        g d`¢¦  «         |                       t          j        da¦  «        g db¢¦  «         |                       t          j        dc¦  «        g dd¢¦  «         |                       t          j        de¦  «        g df¢¦  «         |                       t          j        dg¦  «        g dh¢¦  «         |                       t          j        di¦  «        g dj¢¦  «         |                       t          j        dk¦  «        g dl¢¦  «         |                       t          j        dm¦  «        g dn¢¦  «         |                       t          j        do¦  «        g dp¢¦  «         |                       t          j        dq¦  «        g dr¢¦  «         |                       t          j        ds¦  «        g dt¢¦  «         |                       t          j        du¦  «        g dv¢¦  «         |                       t          j        dw¦  «        g dx¢¦  «         |                       t          j        dy¦  «        g dz¢¦  «         |                       t          j        d{¦  «        g d|¢¦  «         d}S )~z8
        Test tokenization of basic link types.
        zA<B)r	   r   r   zA>B)r	   ú>r   zA<3B)r	   ú<3r   zA>3B)r	   ú>3r   zA<,B)r	   ú<,r   zA>,B)r	   ú>,r   zA<-3B)r	   ú<-3r   zA>-3B)r	   ú>-3r   zA<-B)r	   ú<-r   zA>-B)r	   ú>-r   zA<'B)r	   ú<'r   zA>'B)r	   ú>'r   zA<:B)r	   ú<:r   zA>:B)r	   ú>:r   zA<<B)r	   r   r   zA>>B)r	   ú>>r   zA<<,B)r	   ú<<,r   zA>>,B)r	   ú>>,r   zA<<'B)r	   ú<<'r   zA>>'B)r	   ú>>'r   zA<<:B)r	   ú<<:r   zA>>:B)r	   ú>>:r   zA.B)r	   r   r   zA,B)r	   r   r   zA..B)r	   r
   r   zA,,B)r	   ú,,r   zA$B)r	   r   r   zA$.B)r	   ú$.r   zA$,B)r	   ú$,r   zA$..B)r	   ú$..r   zA$,,B)r	   ú$,,r   zA!<B)r	   r   r   r   zA!>B)r	   r   r(   r   zA!<3B)r	   r   r)   r   zA!>3B)r	   r   r*   r   zA!<,B)r	   r   r+   r   zA!>,B)r	   r   r,   r   zA!<-3B)r	   r   r-   r   zA!>-3B)r	   r   r.   r   zA!<-B)r	   r   r/   r   zA!>-B)r	   r   r0   r   zA!<'B)r	   r   r1   r   zA!>'B)r	   r   r2   r   zA!<:B)r	   r   r3   r   zA!>:B)r	   r   r4   r   zA!<<B)r	   r   r   r   zA!>>B)r	   r   r5   r   zA!<<,B)r	   r   r6   r   zA!>>,B)r	   r   r7   r   zA!<<'B)r	   r   r8   r   zA!>>'B)r	   r   r9   r   zA!<<:B)r	   r   r:   r   zA!>>:B)r	   r   r;   r   zA!.B)r	   r   r   r   zA!,B)r	   r   r   r   zA!..B)r	   r   r
   r   zA!,,B)r	   r   r<   r   zA!$B)r	   r   r   r   zA!$.B)r	   r   r=   r   zA!$,B)r	   r   r>   r   zA!$..B)r	   r   r?   r   zA!$,,B)r	   r   r@   r   Nr$   r%   s    r    Útest_tokenize_link_typesz.TestSequenceFunctions.test_tokenize_link_typesE   s«	  € ð 	×Ò�Ô-¨eÑ4Ô4°o°o°oÑFÔFÐFØ×Ò�Ô-¨eÑ4Ô4°o°o°oÑFÔFÐFØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨gÑ6Ô6Ð8IÐ8IÐ8IÑJÔJÐJØ×Ò�Ô-¨gÑ6Ô6Ð8IÐ8IÐ8IÑJÔJÐJØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨gÑ6Ô6Ð8IÐ8IÐ8IÑJÔJÐJØ×Ò�Ô-¨gÑ6Ô6Ð8IÐ8IÐ8IÑJÔJÐJØ×Ò�Ô-¨gÑ6Ô6Ð8IÐ8IÐ8IÑJÔJÐJØ×Ò�Ô-¨gÑ6Ô6Ð8IÐ8IÐ8IÑJÔJÐJØ×Ò�Ô-¨gÑ6Ô6Ð8IÐ8IÐ8IÑJÔJÐJØ×Ò�Ô-¨gÑ6Ô6Ð8IÐ8IÐ8IÑJÔJÐJØ×Ò�Ô-¨eÑ4Ô4°o°o°oÑFÔFÐFØ×Ò�Ô-¨eÑ4Ô4°o°o°oÑFÔFÐFØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨eÑ4Ô4°o°o°oÑFÔFÐFØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨fÑ5Ô5Ð7GÐ7GÐ7GÑHÔHÐHØ×Ò�Ô-¨gÑ6Ô6Ð8IÐ8IÐ8IÑJÔJÐJØ×Ò�Ô-¨gÑ6Ô6Ð8IÐ8IÐ8IÑJÔJÐJØ×Ò�Ô-¨fÑ5Ô5Ð7KÐ7KÐ7KÑLÔLÐLØ×Ò�Ô-¨fÑ5Ô5Ð7KÐ7KÐ7KÑLÔLÐLØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨hÑ7Ô7Ð9OÐ9OÐ9OÑPÔPÐPØ×Ò�Ô-¨hÑ7Ô7Ð9OÐ9OÐ9OÑPÔPÐPØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨hÑ7Ô7Ð9OÐ9OÐ9OÑPÔPÐPØ×Ò�Ô-¨hÑ7Ô7Ð9OÐ9OÐ9OÑPÔPÐPØ×Ò�Ô-¨hÑ7Ô7Ð9OÐ9OÐ9OÑPÔPÐPØ×Ò�Ô-¨hÑ7Ô7Ð9OÐ9OÐ9OÑPÔPÐPØ×Ò�Ô-¨hÑ7Ô7Ð9OÐ9OÐ9OÑPÔPÐPØ×Ò�Ô-¨hÑ7Ô7Ð9OÐ9OÐ9OÑPÔPÐPØ×Ò�Ô-¨fÑ5Ô5Ð7KÐ7KÐ7KÑLÔLÐLØ×Ò�Ô-¨fÑ5Ô5Ð7KÐ7KÐ7KÑLÔLÐLØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨fÑ5Ô5Ð7KÐ7KÐ7KÑLÔLÐLØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨hÑ7Ô7Ð9OÐ9OÐ9OÑPÔPÐPØ×Ò�Ô-¨hÑ7Ô7Ð9OÐ9OÐ9OÑPÔPÐPÐPÐPr"   c                 ó   — |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        dg¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d	¢¦  «         |                       t          j        d
¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         dS )zJ
        Test tokenization of the TGrep2 manual example patterns.
        úNP < PP)ÚNPr   ÚPPú/^NP/úNP << PP . VP)rD   r   rE   r   ÚVPúNP << PP | . VP)rD   r   rE   r   r   rH   úNP !<< PP [> NP | >> VP])rD   r   r   rE   r   r(   rD   r   r5   rH   r   úNP << (PP . VP))rD   r   r   rE   r   rH   r   úNP <' (PP <, (IN < on)))rD   r1   r   rE   r+   r   ÚINr   Úonr   r   úS < (A < B) < C)	ÚSr   r   r	   r   r   r   r   r   úS < ((A < B) < C))rP   r   r   r   r	   r   r   r   r   r   r   úS < (A < B < C))	rP   r   r   r	   r   r   r   r   r   zA<B&.C)r	   r   r   ú&r   r   Nr$   r%   s    r    Útest_tokenize_examplesz,TestSequenceFunctions.test_tokenize_examplesˆ   s  € ð 	×Ò�Ô-¨iÑ8Ô8Ð:KÐ:KÐ:KÑLÔLÐLØ×Ò�Ô-¨gÑ6Ô6¸¸	ÑBÔBÐBØ×ÒÝÔ  Ñ1Ô1Ð3PÐ3PÐ3Pñ	
ô 	
ð 	
ð 	×ÒÝÔ Ð!2Ñ3Ô3Ð5WÐ5WÐ5Wñ	
ô 	
ð 	
ð 	×ÒÝÔ Ð!;Ñ<Ô<ØIÐIÐIñ	
ô 	
ð 	
ð 	×ÒÝÔ Ð!2Ñ3Ô3Ø3Ð3Ð3ñ	
ô 	
ð 	
ð 	×ÒÝÔ Ð!:Ñ;Ô;ØIÐIÐIñ	
ô 	
ð 	
ð 	×ÒÝÔ Ð!2Ñ3Ô3Ø9Ð9Ð9ñ	
ô 	
ð 	
ð 	×ÒÝÔ Ð!4Ñ5Ô5ØCÐCÐCñ	
ô 	
ð 	
ð 	×ÒÝÔ Ð!2Ñ3Ô3Ø9Ð9Ð9ñ	
ô 	
ð 	
ð 	×Ò�Ô-¨hÑ7Ô7Ð9WÐ9WÐ9WÑXÔXÐXÐXÐXr"   c                 óZ   — |                       t          j        d¦  «        g d¢¦  «         dS )z/
        Test tokenization of quoting.
        z"A<<:B"<<:"A $.. B"<"A>3B"<C)z"A<<:B"r:   z	"A $.. B"r   z"A>3B"r   r   Nr$   r%   s    r    Útest_tokenize_quotingz+TestSequenceFunctions.test_tokenize_quoting®   s>   € ð 	×ÒÝÔ Ð!?Ñ@Ô@ØDÐDÐDñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 óž  — |                       t          j        d¦  «        dg¦  «         |                       t          j        d¦  «        dg¦  «         |                       t          j        d¦  «        dg¦  «         |                       t          j        d¦  «        dg¦  «         |                       t          j        d¦  «        ddg¦  «         |                       t          j        d¦  «        g d	¢¦  «         |                       t          j        d
¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         dS )z2
        Test tokenization of node names.
        ÚRobertz	/^[Bb]ob/Ú*Ú__zN()úN(r   zN(0,))r[   Ú0r   r   zN(0,0))r[   r\   r   r\   r   zN(0,0,))r[   r\   r   r\   r   r   Nr$   r%   s    r    Útest_tokenize_nodenamesz-TestSequenceFunctions.test_tokenize_nodenames·   s>  € ð 	×Ò�Ô-¨hÑ7Ô7¸(¸ÑDÔDÐDØ×Ò�Ô-¨kÑ:Ô:¸[¸MÑJÔJÐJØ×Ò�Ô-¨cÑ2Ô2°S°EÑ:Ô:Ð:Ø×Ò�Ô-¨dÑ3Ô3°d°VÑ<Ô<Ð<à×Ò�Ô-¨eÑ4Ô4°t¸S°kÑBÔBÐBØ×Ò�Ô-¨gÑ6Ô6Ð8MÐ8MÐ8MÑNÔNÐNØ×Ò�Ô-¨hÑ7Ô7Ð9SÐ9SÐ9SÑTÔTÐTØ×ÒÝÔ  Ñ+Ô+Ð-LÐ-LÐ-Lñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 óZ   — |                       t          j        d¦  «        g d¢¦  «         dS )z9
        Test tokenization of macro definitions.
        z4@ NP /^NP/;
@ NN /^NN/;
@NP [!< NP | < @NN] !$.. @NN)ú@rD   rF   ú;r_   ÚNNz/^NN/r`   z@NPr   r   r   rD   r   r   ú@NNr   r   r?   rb   Nr$   r%   s    r    Útest_tokenize_macrosz*TestSequenceFunctions.test_tokenize_macrosÇ   sH   € ð 	×ÒÝÔ ØHñô ðð ð ñ		
ô 	
ð 	
ð 	
ð 	
r"   c                 ó¢  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        |d         |d         gg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         dS )z`
        Test a simple use of tgrep for finding nodes matching a given
        pattern.
        úA(S (NP (DT the) (JJ big) (NN dog)) (VP bit) (NP (DT a) (NN cat)))ra   ©r   é   ©rg   é   úNN|JJ)©r   ri   rf   rh   N©r   Ú
fromstringr   Úlistr   Útgrep_positionsÚtgrep_nodes©r   Útrees     r    Útest_node_simplez&TestSequenceFunctions.test_node_simpleç   sÞ   € õ
 Ô&ØRñ
ô 
ˆð 	×Ò��eÔ3°D¸4¸&ÑAÔAÑBÔBÀfÈfÐEUÐDVÑWÔWÐWØ×ÒÝ•Ô" 4¨$¨Ñ0Ô0Ñ1Ô1°T¸$´ZÀÀdÄÐ4LÐ3Mñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& w°°Ñ7Ô7Ñ8Ô8Ð;SÐ;SÐ;SÐ:Tñ	
ô 	
ð 	
ð 	
ð 	
r"   c           	      óŽ  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        t          t	          j        d|g¦  «        ¦  «        ¦  «         |                      t          t	          j        d|g¦  «        ¦  «        t          t	          j        d|g¦  «        ¦  «        ¦  «         dS )z9Test that the tgrep print operator ' is properly ignored.ú(S (n x) (N x))ÚNz'Nz/[Nn]/z'/[Nn]/N©r   rm   r   rn   r   ro   rq   s     r    Útest_node_printingz(TestSequenceFunctions.test_node_printing÷   s·   € åÔ&Ð'8Ñ9Ô9ˆØ×ÒÝ•Ô& s¨T¨FÑ3Ô3Ñ4Ô4Ý•Ô& t¨d¨VÑ4Ô4Ñ5Ô5ñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& x°$°Ñ8Ô8Ñ9Ô9Ý•Ô& y°4°&Ñ9Ô9Ñ:Ô:ñ	
ô 	
ð 	
ð 	
ð 	
r"   c           	      ó>  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        t          t	          j        d|g¦  «        ¦  «        ¦  «         |                      t          t	          j        d|g¦  «        ¦  «        t          t	          j        d|g¦  «        ¦  «        ¦  «         |                      t          t	          j        d|g¦  «        ¦  «        t          t	          j        d|g¦  «        ¦  «        ¦  «         dS )z]
        Test that tgrep search strings handles bytes and strs the same
        way.
        re   s   NNra   s   NN|JJrj   Nrl   rq   s     r    Útest_node_encodingz(TestSequenceFunctions.test_node_encoding  s  € õ
 Ô&ØRñ
ô 
ˆð 	×ÒÝ•Ô& u¨t¨fÑ5Ô5Ñ6Ô6Ý•Ô& u¨t¨fÑ5Ô5Ñ6Ô6ñ	
ô 	
ð 	
ð 	×ÒÝ•Ô" 5¨4¨&Ñ1Ô1Ñ2Ô2Ý•Ô" 4¨$¨Ñ0Ô0Ñ1Ô1ñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& x°$°Ñ8Ô8Ñ9Ô9Ý•Ô& w°°Ñ7Ô7Ñ8Ô8ñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 ó  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         dS )zI
        Test selecting nodes using case insensitive node names.
        ru   ú"N"©ri   zi@"N"©r   Nrw   rq   s     r    Útest_node_nocasez&TestSequenceFunctions.test_node_nocase  s   € õ Ô&Ð'8Ñ9Ô9ˆØ×Ò��eÔ3°E¸D¸6ÑBÔBÑCÔCÀtÀfÀXÑNÔNÐNØ×Ò��eÔ3°G¸d¸VÑDÔDÑEÔEÈÈtÈÀ~ÑVÔVÐVÐVÐVr"   c                 óö  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        d	gg¦  «         d
S )z?
        Test selecting nodes using quoted node names.
        z(N ("N" x) (N" x) ("\" x))r|   © z"\"N\""r~   z"N\""r}   z"\"\\\""©rg   Nrw   rq   s     r    Útest_node_quotedz&TestSequenceFunctions.test_node_quoted   sà   € õ Ô&Ð'DÑEÔEˆØ×Ò��eÔ3°E¸D¸6ÑBÔBÑCÔCÀrÀdÀVÑLÔLÐLØ×Ò��eÔ3°KÀ$ÀÑHÔHÑIÔIÈTÈFÈ8ÑTÔTÐTØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°NÀTÀFÑKÔKÑLÔLÐPTÈvÈhÑWÔWÐWÐWÐWr"   c                 ó¢   — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         dS )ú/
        Test regex matching on nodes.
        ú$(S (NP-SBJ x) (NP x) (NNP x) (VP x))rF   r~   r}   Nrw   rq   s     r    Útest_node_regexz%TestSequenceFunctions.test_node_regex*  sP   € õ Ô&Ð'MÑNÔNˆð 	×Ò��eÔ3°G¸d¸VÑDÔDÑEÔEÈÈtÈÀ~ÑVÔVÐVÐVÐVr"   c                 ó  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         dS )r…   z(S (SBJ x) (SBJ1 x) (NP-SBJ x))z/^SBJ/r~   r}   z/SBJ/)r~   r}   r‚   Nrw   rq   s     r    Útest_node_regex_2z'TestSequenceFunctions.test_node_regex_23  s“   € õ Ô&Ð'HÑIÔIˆØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÐPTÈÈÑWÔWÐWð 	×ÒÝ•Ô& w°°Ñ7Ô7Ñ8Ô8Ð;MÐ;MÐ;MÐ:Nñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 óÖ  ‡‡— t          j        d¦  «        Šˆfd„t          t          ‰                     ¦   «         ¦  «        ¦  «        D ¦   «         Šˆfd„‰                     ¦   «         D ¦   «         }|D ]u}d|› �}t          t          j        |‰g¦  «        ¦  «        }|  	                    t          |d         ¦  «        d¦  «         |  	                    |d         d         |¦  «         ŒvdS )zE
        Test matching on nodes based on NLTK tree position.
        r†   c                 ó:   •— h | ]}‰                      |¦  «        ’ŒS r�   )Úleaf_treeposition)Ú.0Úxrr   s     €r    ú	<setcomp>z@TestSequenceFunctions.test_node_tree_position.<locals>.<setcomp>E  s'   ø€ ÐWÐWÐW¸˜$×0Ò0°Ñ3Ô3ÐWÐWÐWr"   c                 ó   •— g | ]}|‰v¯|‘Œ	S r�   r�   )r�   rŽ   Úleaf_positionss     €r    ú
<listcomp>zATestSequenceFunctions.test_node_tree_position.<locals>.<listcomp>F  s#   ø€ ÐUÐUÐU ¸QÀnÐ=TÐ=T˜!Ð=TÐ=TÐ=Tr"   rv   r   ri   N)
r   rm   ÚrangeÚlenÚleavesÚtreepositionsrn   r   ro   r   )r   Útree_positionsÚpositionÚnode_idro   r‘   rr   s        @@r    Útest_node_tree_positionz-TestSequenceFunctions.test_node_tree_position?  só   øø€ õ Ô&Ð'MÑNÔNˆàWÐWÐWÐW½UÅ3ÀtÇ{Â{Á}Ä}ÑCUÔCUÑ=VÔ=VÐWÑWÔWˆØUÐUÐUÐU T×%7Ò%7Ñ%9Ô%9ÐUÑUÔUˆØ&ð 	>ð 	>ˆHØ$˜(�n�nˆGÝ"¥5Ô#8¸À4À&Ñ#IÔ#IÑJÔJˆOØ×Ò�S °Ô!3Ñ4Ô4°aÑ8Ô8Ð8Ø×Ò˜_¨QÔ/°Ô2°HÑ=Ô=Ð=Ð=ð		>ð 	>r"   c           	      ó  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          t	          j        d|gd¦  «        ¦  «        g g¦  «         dS )zS
        Test node name matching with the search_leaves flag set to False.
        ú(S (A (T x)) (B (N x)))rŽ   ©r   r   r   ©ri   r   r   FNrw   rq   s     r    Útest_node_noleavesz(TestSequenceFunctions.test_node_noleavesM  sŠ   € õ Ô&Ð'@ÑAÔAˆØ×ÒÝ•Ô& s¨T¨FÑ3Ô3Ñ4Ô4¸	À9Ð7MÐ6Nñ	
ô 	
ð 	
ð 	×Ò��eÔ3°C¸$¸ÀÑGÔGÑHÔHÈ2È$ÑOÔOÐOÐOÐOr"   c                 óþ
  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d	|g¦  «        ¦  «        d
gg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dd
gg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         t          j        d ¦  «        }|                      t          t	          j        d!|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d"|g¦  «        ¦  «        g d#¢g¦  «         t          j        d$¦  «        }|                      t          t	          j        d%|g¦  «        ¦  «        g d&¢g¦  «         |                      t          t	          j        d'|g¦  «        ¦  «        g d(¢g¦  «         d)S )*zC
        Test matching nodes based on dominance relations.
        rœ   z* < Tr~   z	* < T > Sz* !< T)r�   ©r   r   r�   r}   ©ri   r   rž   z
* !< T > Sr}   z* > Ar¡   z* > Br¢   z* !> B)r�   r~   r¡   r�   r}   rž   z* !> B >> S)r~   r¡   r}   z* >> S)r~   r¡   r}   r¢   z* >>, Sz* >>' Sz* << Tr�   z* <<' Tz* <<1 Nz* !<< T)r¡   r�   r}   r¢   rž   z(S (A (T x)) (B (T x) (N x )))z* <: Tz* !<: T)r�   r¡   r�   r}   r¢   rž   )ri   ri   )ri   ri   r   z* !<: T > Sz(S (T (A x) (B x)) (T (C x)))z* >: Tz* !>: T)r�   r~   r¡   r�   rk   ©r   ri   r   r}   rž   z=(S (A (B (C (D (E (T x)))))) (A (B (C (D (E (T x))) (N x)))))z* <<: T)r~   r¡   r�   ©r   r   r   r   ©r   r   r   r   r   ©ri   r   r   r   )ri   r   r   r   r   z* >>: A)r¡   r�   r¤   r¥   )r   r   r   r   r   r   r¢   rž   Nrw   rq   s     r    Útests_rel_dominancez)TestSequenceFunctions.tests_rel_dominanceW  sp  € õ Ô&Ð'@ÑAÔAˆØ×Ò��eÔ3°G¸d¸VÑDÔDÑEÔEÈÈÀxÑPÔPÐPØ×Ò��eÔ3°KÀ$ÀÑHÔHÑIÔIÈTÈFÈ8ÑTÔTÐTØ×ÒÝ•Ô& x°$°Ñ8Ô8Ñ9Ô9Ø=Ð=Ð=Ð>ñ	
ô 	
ð 	
ð 	×Ò��eÔ3°LÀ4À&ÑIÔIÑJÔJÈdÈVÈHÑUÔUÐUØ×Ò��eÔ3°G¸d¸VÑDÔDÑEÔEÈÈÀzÑRÔRÐRØ×Ò��eÔ3°G¸d¸VÑDÔDÑEÔEÈÈÀzÑRÔRÐRØ×ÒÝ•Ô& x°$°Ñ8Ô8Ñ9Ô9Ø;Ð;Ð;Ð<ñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& }°t°fÑ=Ô=Ñ>Ô>ÐAUÐAUÐAUÐ@Vñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& x°$°Ñ8Ô8Ñ9Ô9Ø)Ð)Ð)Ð*ñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& y°4°&Ñ9Ô9Ñ:Ô:¸dÀF¸^Ð<Lñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& y°4°&Ñ9Ô9Ñ:Ô:¸dÀF¸^Ð<Lñ	
ô 	
ð 	
ð 	×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ"ÈdÈÈÑUÔUÐUØ×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRØ×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRØ×ÒÝ•Ô& y°4°&Ñ9Ô9Ñ:Ô:Ø9Ð9Ð9Ð:ñ	
ô 	
ð 	
õ Ô&Ð'GÑHÔHˆØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°G¸d¸VÑDÔDÑEÔEÈÈtÈÀ~ÑVÔVÐVØ×ÒÝ•Ô& y°4°&Ñ9Ô9Ñ:Ô:ØPÐPÐPÐQñ	
ô 	
ð 	
ð 	×Ò��eÔ3°MÀDÀ6ÑJÔJÑKÔKÈtÈfÈXÑVÔVÐVÝÔ&Ð'FÑGÔGˆØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ&ÈÈ
ÑSÔSÐSØ×ÒÝ•Ô& y°4°&Ñ9Ô9Ñ:Ô:ØNÐNÐNÐOñ	
ô 	
ð 	
õ Ô&ØNñ
ô 
ˆð 	×ÒÝ•Ô& y°4°&Ñ9Ô9Ñ:Ô:ðð ð ð
ñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& y°4°&Ñ9Ô9Ñ:Ô:ðð ð ð
ñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 ó¢   — t          j        d¦  «        }|                      t          j        t
          t          j        d|g¦  «        ¦  «         dS )zC
        Test error handling of undefined tgrep operators.
        rœ   z* >>> SN)r   rm   ÚassertRaisesr   ÚTgrepExceptionrn   ro   rq   s     r    Útest_bad_operatorz'TestSequenceFunctions.test_bad_operator®  sP   € õ Ô&Ð'@ÑAÔAˆØ×ÒÝÔ ¥$­Ô(=¸iÈ$ÈÑ(PÔ(Pñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 ó  — t          j        d¦  «        }d}|                      t          t	          j        ||g¦  «        ¦  «        ddgg¦  «         d}|                      t          t	          j        ||g¦  «        ¦  «        ddgg¦  «         dS )z`
        Test that comments are correctly filtered out of tgrep search
        strings.
        z(S (NN x) (NP x) (NN x))z=
        @ NP /^NP/;
        @ NN /^NN/;
        @NN
        r~   r‚   zg
        # macros
        @ NP /^NP/;
        @ NN /^NN/;

        # search string
        @NN
        Nrw   )r   rr   Úsearch1Úsearch2s       r    Útest_commentsz#TestSequenceFunctions.test_comments·  s“   € õ
 Ô&Ð'AÑBÔBˆðˆð
 	×Ò��eÔ3°G¸d¸VÑDÔDÑEÔEÈÈtÈÀ~ÑVÔVÐVðˆð 	×Ò��eÔ3°G¸d¸VÑDÔDÑEÔEÈÈtÈÀ~ÑVÔVÐVÐVÐVr"   c                 ój  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         d	S )
z7
        Test matching sister nodes in a tree.
        ú(S (A x) (B x) (C x))z* $. Br~   z* $.. Bz* $, Br‚   z* $,, Bz* $ BNrw   rq   s     r    Útest_rel_sister_nodesz+TestSequenceFunctions.test_rel_sister_nodesÍ  s  € õ Ô&Ð'>Ñ?Ô?ˆØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRØ×Ò��eÔ3°G¸d¸VÑDÔDÑEÔEÈÈtÈÀ~ÑVÔVÐVÐVÐVr"   c                 óv  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d	|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d
|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         dS )zP
        Test matching nodes based on their index in their parent node.
        r±   z* >, Sr~   z* >1 Sz* >2 Sr}   z* >3 Sr‚   z* >' Sz* >-1 Sz* >-2 Sz* >-3 SzE(S (D (A x) (B x) (C x)) (E (B x) (C x) (A x)) (F (C x) (A x) (B x)))z* <, Az* <1 Az* <2 Az* <3 Az* <' Az* <-1 Az* <-2 Az* <-3 ANrw   rq   s     r    Útests_rel_indexed_childrenz0TestSequenceFunctions.tests_rel_indexed_childrenØ  sB  € õ Ô&Ð'>Ñ?Ô?ˆØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRØ×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRØ×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRÝÔ&ØVñ
ô 
ˆð 	×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°H¸t¸fÑEÔEÑFÔFÈ$ÈÈÑQÔQÐQØ×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRØ×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRØ×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRÐRÐRr"   c                 óÎ  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         |                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         |                      t          t	          j        d	|g¦  «        ¦  «        g d
¢g¦  «         |                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         |                      t          t	          j        d|g¦  «        ¦  «        g d¢g¦  «         dS )zD
        Test matching nodes based on precedence relations.
        zV(S (NP (NP (PP x)) (NP (AP x))) (VP (AP (X (PP x)) (Y (AP x)))) (NP (RC (NP (AP x)))))z* . X)r~   rk   r£   z* . Yrž   r¦   z* .. X)r~   r¡   r�   rk   r£   z* .. Y)r~   r¡   r�   rk   r£   rž   r¦   z* , X©ri   r   ri   ©ri   r   ri   r   z* , Y)r‚   ©rg   r   ©rg   r   r   ©rg   r   r   r   z* ,, X)r¶   r·   r‚   r¸   r¹   rº   z* ,, YNrw   rq   s     r    Útest_rel_precedencez)TestSequenceFunctions.test_rel_precedenceñ  s!  € õ Ô&ð&ñ
ô 
ˆð
 	×ÒÝ•Ô& w°°Ñ7Ô7Ñ8Ô8Ð;TÐ;TÐ;TÐ:Uñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& w°°Ñ7Ô7Ñ8Ô8¸IÀ|Ð;TÐ:Uñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& x°$°Ñ8Ô8Ñ9Ô9Ø9Ð9Ð9Ð:ñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& x°$°Ñ8Ô8Ñ9Ô9ØRÐRÐRÐSñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& w°°Ñ7Ô7Ñ8Ô8¸IÀ|Ð;TÐ:Uñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& w°°Ñ7Ô7Ñ8Ô8Ø4Ð4Ð4Ð5ñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& x°$°Ñ8Ô8Ñ9Ô9ØMÐMÐMÐNñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& x°$°Ñ8Ô8Ñ9Ô9Ø4Ð4Ð4Ð5ñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 óL  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         t          j        d	¦  «        }|                      t          t	          j        d
|g¦  «        ¦  «        ddgg¦  «         t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         dS )zA
        Test the Basic Examples from the TGrep2 manual.
        z(S (NP (AP x)) (NP (PP x)))rC   r}   z$(S (NP x) (VP x) (NP (PP x)) (VP x))rG   r‚   z6(S (NP (AP x)) (NP (PP x)) (NP (DET x) (NN x)) (VP x))rI   zX(S (NP (NP (PP x)) (NP (AP x))) (VP (AP (NP (PP x)) (NP (AP x)))) (NP (RC (NP (AP x)))))rJ   rk   r¶   z:(S (NP (AP (PP x) (VP x))) (NP (AP (PP x) (NP x))) (NP x))rK   r~   ze(S (NP (DET a) (NN cat) (PP (IN on) (NP x))) (NP (DET a) (NN cat) (PP (IN on) (NP x)) (PP x)) (NP x))rL   z;(S (S (C x) (A (B x))) (S (C x) (A x)) (S (D x) (A (B x))))rO   z/(S (S (A (B x) (C x))) (S (S (C x) (A (B x)))))rQ   rR   Nrw   rq   s     r    Útest_examplesz#TestSequenceFunctions.test_examples  sÆ  € õ Ô&Ð'DÑEÔEˆà×Ò��eÔ3°IÀ¸vÑFÔFÑGÔGÈ4È&ÈÑRÔRÐRåÔ&Ð'MÑNÔNˆð 	×Ò��eÔ3°OÀdÀVÑLÔLÑMÔMÐQUÐPVÈxÑXÔXÐXåÔ&ØGñ
ô 
ˆð
 	×ÒÝ•Ô&Ð'8¸4¸&ÑAÔAÑBÔBÀdÈDÀ\ÀNñ	
ô 	
ð 	
õ Ô&ð&ñ
ô 
ˆð 	×ÒÝ•Ô&Ð'AÀDÀ6ÑJÔJÑKÔKØ�iÐ Ð!ñ	
ô 	
ð 	
õ
 Ô&ØKñ
ô 
ˆð 	×ÒÝ•Ô&Ð'8¸4¸&ÑAÔAÑBÔBÀdÀVÀHñ	
ô 	
ð 	
õ Ô&ðñ
ô 
ˆð 	×ÒÝ•Ô&Ð'@À4À&ÑIÔIÑJÔJÈdÈVÈHñ	
ô 	
ð 	
õ Ô&ØLñ
ô 
ˆð
 	×ÒÝ•Ô&Ð'8¸4¸&ÑAÔAÑBÔBÀdÀVÀHñ	
ô 	
ð 	
õ Ô&Ø=ñ
ô 
ˆð
 	×ÒÝ•Ô&Ð':¸T¸FÑCÔCÑDÔDÈÀvÀhñ	
ô 	
ð 	
ð
 	×ÒÝ•Ô&Ð'8¸4¸&ÑAÔAÑBÔBÀdÀVÀHñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 ó  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          j        t          t	          j        d|g¦  «        ¦  «         dS )z8
        Test defining and using tgrep2 macros.
        zi(VP (VB sold) (NP (DET the) (NN heiress)) (NP (NN deed) (PREP to) (NP (DET the) (NN school) (NN house))))z+@ NP /^NP/;
@ NN /^NN/;
@NP !< @NP !$.. @NNr}   )rg   rg   z,@ NP /^NP/;
@ NN /^NN/;
@CNP !< @NP !$.. @NNN)r   rm   r   rn   r   ro   r©   rª   rq   s     r    Útest_use_macrosz%TestSequenceFunctions.test_use_macrosg  s©   € õ Ô&ð6ñ
ô 
ˆð
 	×ÒÝÝÔ%ØCÀdÀVñô ñô ð
 �Fˆ^Ðñ	
ô 	
ð 	
ð 	×ÒÝÔ ÝÝÔ!Ø@À4À&ñô ñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 ó®   — |                       t          j        d¦  «        g d¢¦  «         |                       t          j        d¦  «        g d¢¦  «         dS )z#Test tokenization of labeled nodes.ú!S < @SBJ < (@VP < (@VB $.. @OBJ)))rP   r   ú@SBJr   r   ú@VPr   r   ú@VBr?   ú@OBJr   r   z%S < @SBJ=s < (@VP=v < (@VB $.. @OBJ)))rP   r   rÂ   ú=Úsr   r   rÃ   rÆ   Úvr   r   rÄ   r?   rÅ   r   r   Nr$   r%   s    r    Útest_tokenize_node_labelsz/TestSequenceFunctions.test_tokenize_node_labels�  sz   € à×ÒÝÔ Ð!DÑEÔEðð ð ñ	
ô 	
ð 	
ð$ 	×ÒÝÔ Ð!HÑIÔIðð ð ñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 óZ   — |                       t          j        d¦  «        g d¢¦  «         dS )z(Test tokenization of segmented patterns.z0S < @SBJ=s < (@VP=v < (@VB $.. @OBJ)) : =s .. =v)rP   r   rÂ   rÆ   rÇ   r   r   rÃ   rÆ   rÈ   r   r   rÄ   r?   rÅ   r   r   ú:z=sr
   z=vNr$   r%   s    r    Ú test_tokenize_segmented_patternsz6TestSequenceFunctions.test_tokenize_segmented_patterns¬  sB   € à×ÒÝÔ Ð!SÑTÔTðð ð ñ	
ô 	
ð 	
ð 	
ð 	
r"   c           	      óÊ  — d}t          j        d¦  «        }t          j        d¦  «        }|                     d¦  «        d         dz   }d}|                      t	          t          j        ||g¦  «        ¦  «        d         ¦  «         |                      t	          t          j        ||g¦  «        ¦  «        d         ¦  «         |                      t	          t          j        ||g¦  «        ¦  «        d         ¦  «         |                      t	          t          j        ||g¦  «        ¦  «        t	          t          j        ||g¦  «        ¦  «        ¦  «         |                      t	          t          j        ||g¦  «        ¦  «        d         ¦  «         |                      t	          t          j        ||g¦  «        ¦  «        d         ¦  «         |                      t	          t          j        ||g¦  «        ¦  «        d         ¦  «         |                      t	          t          j        ||g¦  «        ¦  «        t	          t          j        ||g¦  «        ¦  «        ¦  «         dS )	zN
        Test labeled nodes.

        Test case from Emily M. Bender.
        zã
            # macros
            @ SBJ /SBJ/;
            @ VP /VP/;
            @ VB /VB/;
            @ VPoB /V[PB]/;
            @ OBJ /OBJ/;

            # 1 svo
            S < @SBJ=s < (@VP=v < (@VB $.. @OBJ)) : =s .. =vz2(S (NP-SBJ I) (VP (VB eat) (NP-OBJ (NNS apples))))z2(S (VP (VB eat) (NP-OBJ (NNS apples))) (NP-SBJ I))z

r   rÁ   z-S < (/.*SBJ/ $.. (/VP/ < (/VB/ $.. /.*OBJ/)))N)	r   rm   ÚsplitÚ
assertTruern   r   ro   r   ÚassertFalse)r   ÚsearchÚsent1Úsent2Úsearch_firsthalfÚsearch_rewrites         r    Útest_labeled_nodesz(TestSequenceFunctions.test_labeled_nodesÉ  s  € ð	@ˆõ Ô'Ø@ñ
ô 
ˆõ Ô'Ø@ñ
ô 
ˆð "Ÿ<š<¨Ñ/Ô/°Ô2Ð5XÑXÐØHˆà�Š��UÔ2Ð3CÀeÀWÑMÔMÑNÔNÈqÔQÑRÔRÐRØ�Š��UÔ2°6¸E¸7ÑCÔCÑDÔDÀQÔGÑHÔHÐHØ�Š��UÔ2°>ÀEÀ7ÑKÔKÑLÔLÈQÔOÑPÔPÐPØ×ÒÝ•Ô& v°¨wÑ7Ô7Ñ8Ô8Ý•Ô& ~¸°wÑ?Ô?Ñ@Ô@ñ	
ô 	
ð 	
ð 	�Š��UÔ2Ð3CÀeÀWÑMÔMÑNÔNÈqÔQÑRÔRÐRØ×Ò��eÔ3°F¸U¸GÑDÔDÑEÔEÀaÔHÑIÔIÐIØ×Ò��eÔ3°NÀUÀGÑLÔLÑMÔMÈaÔPÑQÔQÐQØ×ÒÝ•Ô& v°¨wÑ7Ô7Ñ8Ô8Ý•Ô& ~¸°wÑ?Ô?Ñ@Ô@ñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 ó  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        dgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         dS )zm
        Test that multiple (3 or more) conjunctions of node relations are
        handled properly.
        z'((A (B b) (C c)) (A (B b) (C c) (D d)))z(A < B < C < D)r}   z(A < B < C)r~   Nrw   )r   Úsents     r    Útest_multiple_conjsz)TestSequenceFunctions.test_multiple_conjsñ  s–   € õ
 Ô&Ð'PÑQÔQˆð 	×ÒÝ•Ô&Ð'8¸4¸&ÑAÔAÑBÔBÀdÀVÀHñ	
ô 	
ð 	
ð 	×ÒÝ•Ô& }°t°fÑ=Ô=Ñ>Ô>À$ÈÀÀñ	
ô 	
ð 	
ð 	
ð 	
r"   c                 óŠ  — t          j        d¦  «        }|                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         |                      t          t	          j        d|g¦  «        ¦  «        ddgg¦  «         dS )zp
        Test that semicolons at the end of a tgrep2 search string won't
        cause a parse failure.
        re   ra   rf   rh   zNN;zNN;;Nrw   rq   s     r    Útest_trailing_semicolonz-TestSequenceFunctions.test_trailing_semicolon   sË   € õ
 Ô&ØRñ
ô 
ˆð 	×Ò��eÔ3°D¸4¸&ÑAÔAÑBÔBÀfÈfÐEUÐDVÑWÔWÐWØ×Ò��eÔ3°E¸D¸6ÑBÔBÑCÔCÀvÈvÐFVÐEWÑXÔXÐXØ×ÒÝ•Ô& v°¨vÑ6Ô6Ñ7Ô7¸6À6Ð:JÐ9Kñ	
ô 	
ð 	
ð 	
ð 	
r"   N)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   r&   rA   rT   rV   r]   rc   rs   rx   rz   r   rƒ   r‡   r‰   rš   rŸ   r§   r«   r¯   r²   r´   r»   r½   r¿   rÉ   rÌ   rÖ   rÙ   rÛ   r�   r"   r    r   r      sþ  € € € € € ðð ð
ð 
ð 
ðB
ð 
ð 
ðAQð AQð AQðF$Yð $Yð $YðL
ð 
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð@
ð 
ð 
ð 

ð 

ð 

ð
ð 
ð 
ð*Wð Wð WðXð Xð XðWð Wð Wð

ð 

ð 

ð>ð >ð >ðPð Pð PðU
ð U
ð U
ðn
ð 
ð 
ðWð Wð Wð,	Wð 	Wð 	WðSð Sð Sð2%
ð %
ð %
ðNM
ð M
ð M
ð^
ð 
ð 
ð4)
ð )
ð )
ðV
ð 
ð 
ð:&
ð &
ð &
ðP
ð 
ð 
ð
ð 
ð 
ð 
ð 
r"   r   )rß   ÚunittestÚnltkr   Ú	nltk.treer   ÚTestCaser   r�   r"   r    ú<module>rä      s   ððð ð
 €€€à Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "ðw
ð w
ð w
ð w
ð w
˜HÔ-ñ w
ô w
ð w
ð w
ð w
r"   