Incremental GSC parsing (exact copy of the tutorials shared as a separate project) / __pycache__ / tree.cpython-35.pyc
2094 views
�t�W% � @ s d Z Gd d � d � Z d S)zt
GSC Software: Tree class
Author: Nick Becker
Department of Cognitive Science, Johns Hopkins University
Summer 2015
c @ sv e Z d Z d Z d d � Z d d � Z d d � Z d d � Z d
d � Z d d
� Z d d � Z
d d � Z d S)�TreezN
The last tree class you will ever need. Currently under development.
c C sK | j | � | _ g | _ | j | j d � g | _ | j | j � d S)a�
Create an internal representation of a tree by passing in a text version of it.
Formatting rules apply: trees must be passed to this method in the form
A (B A (D E))
In other words, parentheses enclose a node's children, and sister nodes are
separated by whitespace. Parentheses were chosen over brackets to avoid any
confusion when entering HNF trees, which contain many bracketed symbols.
Any symbols can be used in node labels EXCEPT parentheses, commas, and
percent signs (%).
Calling this method automatically sets the recursive-style filler-role bindings
for each node, as well as the span-style filler-role bindings for each node.
�rN)�treeStringToList�treeList�recursiveFRbindings�setRecursiveRoles�spanFRbindings�setSpanRoles)�selfZ
treeString� r
�6/projects/18c77389-a5c3-49de-946a-7593b53d3fb2/tree.py�__init__ s
z
Tree.__init__c C s� | j d d � j � } d } x� | t | � k r| | } t | � d k r| d d k so | d d k r� | d d � | | <| j | | d � | d 7} | | } | d d k s� | d d k r| d d
� | | <| j | d | d � | d 8} | d 7} q! Wd } x� | t | � d k r�| | } | | d } | d k rv| d k rv| d k rv| d k s�| d k r�| d k r�| d k r�| j | d d � | d 7} | d 7} qW| S)az
Check formatting of the input string; if it is valid, prepare it for internal
operations.
TO DO: check input string, most likely using regular expressions
- number of '(' should match number of ')'
- - len(findall(...))
- first character should be something other than ( or )
- no stray characters after final )
�,� � � �(�)N�����r r r )�replace�split�len�insert)r �inputStringZniceList�iZ
currentSymbolZ
nextSymbolr
r
r r - s2
0$
zTree.treeStringToListc C s t | � d k r� | d d k r5 t d � | } n~ | d d k rv t t | d � d � | d d � } | } n= | d d k r� | d d � } n | j j | d | f � | j | d d � | � n� d } x� | rzd } x� t t | j � d � D]t } t | j | d � t | j | d d � k r� | j | } | j | d | j | <| | j | d <d } q� Wq� Wd S) zE
Recursive function to populate recursiveFRbindings.
r r r
r Nr TF)r �str�intr �appendr �range)r Z treeNodes�levelZnewLevel�needSwappedr �tempr
r
r r Z s&