³ò
èAc           @   s;   d  Z  d Z d d k Z d d k Z d d d „  ƒ  YZ d S(   s   Hugo Liu <hugo@media.mit.edu>s   2.0iÿÿÿÿNt   MontyLexicalRuleParserc        
   B   s~   e  Z d  Z g  Z d d d d d d d d d	 g	 Z e d
 d d d d d d d d g	 7Z d „  Z d „  Z d „  Z d „  Z RS(   s   LEXICALRULEFILE.MDFt   chart   hassuft	   deletesuft   addsuft   haspreft
   deletepreft   addpreft   goodleftt	   goodrightt   fchart   fhassuft
   fdeletesuft   faddsuft   fhaspreft   fdeletepreft   faddpreft	   fgoodleftt
   fgoodrightc         C   sb   | |  _  t i ƒ  i |  i ƒ |  _ |  i d j o d |  i GHd GHn |  i |  i ƒ d GHd  S(   Nt    s   ERROR: could not find %ss'   in current dir, %MONTYLINGUA% or %PATH%s   LexicalRuleParser OK!(   t
   theLexicont
   MontyUtilst	   find_filet   lexicalrules_filenamet   populate_from_file(   t   selft   LexiconHandle(    (    sN   /afs/cs.wisc.edu/p/zhu/06/nlp/montylingua-2.1/python/MontyLexicalRuleParser.pyt   __init__   s    		c         C   s\   |  i  i } |  i } |  i } x7 t t | ƒ ƒ D]# } | | } | | | | | ƒ q1 Wd  S(   N(   R   t   is_wordt	   lex_rulest
   apply_rulet   ranget   len(   R   t   text_arrt
   word_indext   awkt	   popd_dictt   chroot_pt   command_cleanedt   res_p(    (    sN   /afs/cs.wisc.edu/p/zhu/06/nlp/montylingua-2.1/python/MontyLexicalRuleParser.pyt   apply_all_rules   s    		 
c         C   sX  | | d } | | d } | } | d } d }	 | d d j o | d } d }	 n | d }
 d } d } | d j o | | d d } n | t  | ƒ d j  o | | d d } n d } |	 o |
 d } |
 d }
 n |
 d } |
 d } | i ƒ  } | i ƒ  } | i ƒ  } | i ƒ  } |	 o | | j o d  Sn | d j o# | | j o | | | d <qTnã| d	 j o- | | t  | ƒ j o | | | d <qTn©| d
 j oD | | t  | ƒ j o) | | t  | ƒ  ƒ o | | | d <qTnX| d j o' | | | ƒ o | | | d <qTn$| d j o- | | t  | ƒ  j o | | | d <qTnê | d j oH | | t  | ƒ  j o- | | t  | ƒ d ƒ o | | | d <qTn• | d j o' | | | ƒ o | | | d <qTna | d j o# | | j o | | | d <qTn1 | d j o# | | j o | | | d <qTn d  S(   Nt   wordt   posi    t   fi   R   iþÿÿÿR   R   R   R   R   R   R   R	   (   R    t   lower(   R   t   ruleR!   R"   t   is_word_handlet   popdwt   argt   tagged_dictt   cal_pt	   alias_strt   built_in_arrot   arg_strt   output_pt   cp1t   popdst   cksum1(    (    sN   /afs/cs.wisc.edu/p/zhu/06/nlp/montylingua-2.1/python/MontyLexicalRuleParser.pyR       sn    






.2c         C   sÐ   |  i  } |  i } yž t | d ƒ } | i ƒ  } xr | oj | i ƒ  } d } x& | D] } | | j o | } PqS qS W| }	 | |	 g }
 | i |
 ƒ | i ƒ  } q3 W| i ƒ  Wn d GHt i d ƒ n Xd  S(   Nt   rR   s    Error parsing Lexical rule file!iÿÿÿÿ(	   t
   rule_namesR   t   opent   readlinet   splitt   appendt   closet   syst   exit(   R   t   filenamet   cksum_pt   enabled_dictt   a_arrt   groupnames1t	   _hugo_strR2   t   gawksR4   R'   (    (    sN   /afs/cs.wisc.edu/p/zhu/06/nlp/montylingua-2.1/python/MontyLexicalRuleParser.pyR   h   s,    		
 	(	   t   __name__t
   __module__R   R   R;   R   R(   R   R   (    (    (    sN   /afs/cs.wisc.edu/p/zhu/06/nlp/montylingua-2.1/python/MontyLexicalRuleParser.pyR       s   !%				H(    (   t
   __author__t   __version__RA   R   R    (    (    (    sN   /afs/cs.wisc.edu/p/zhu/06/nlp/montylingua-2.1/python/MontyLexicalRuleParser.pys   <module>   s   