2010-08-18 5 views
1

루비의 Stanford Parser와 협력 중이며 특정 레이블 이름을 가진 트리의 모든 노드를 검색하려고합니다. 이 지금까지 트리에서 반복적으로 검색하기

def searchTreeWithLabel(tree,lablename,listOfNodes) 
    if tree.instance_of?(StanfordParser::Tree) 
    if tree.lable.toString == lablename then 
     listOfNodes << tree 
    else 
     tree.children.each { |c| searchTreeWithLabel(c, lablename, listOfNodes)} 
    end 
    end 
    listOfNodes 
end 

내가 방법은 내가 StanfordParser 익숙하지 않다 라벨 이름

+0

그리고 현재 무엇을합니까? – Borealid

+0

작동하지 않습니까? – rogerdpack

+0

나는 irb에서 그것을 시도했다 ... 그리고 그것은 단지 오류 메시지가 종료되지 않는다 – charudatta

답변

0

로 레이블이 트리 노드의 목록을 반환하려면하지만 난 당신이 필요 상상 내가 코딩 한 재귀 방법 조건부 내부에서 traversal의 하강 부분을 가져 와서 항상 수행하십시오.

또한 그들은 실제로 toString 메서드를 구현 했습니까? 진심으로? .to_s이 아닌가요? 내가 루비를 발견하기 전에 내가 :-) ... 자바를 즐길

+0

그들은 toString을 구현하지 않았다. 메소드는 Ruby java bridge를 통해 Ruby에서 실제로 사용할 수있는 Java 인스턴스 인 Tree 인스턴스에서 호출된다. – charudatta

+0

Heh는 합리적인 설명이 있다는 것을 알았다. .. – DigitalRoss

0

내 원래의 코드가 정확하지만 루비는

if tree.lable.toString == lablename then 

문에 약간의 문제가 있었다, 의미, tree.value가 같은 작동 밝혀 글쎄, 지금은 내가 확인 해요

if tree.value == lablename then 

그리고 작동합니다.