2010-08-18 187 views
1

我正在使用紅寶石的斯坦福分析器,並且想要搜索具有特定標籤名稱的樹的所有節點。 這是遞歸的方法我已經編碼到目前爲止在樹中遞歸搜索

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 

我想方法去返回標籤爲標籤

+0

它目前做什麼? – Borealid 2010-08-19 00:00:28

+0

不行嗎? – rogerdpack 2010-08-19 00:00:38

+0

我在irb上試過了...它只是退出了,沒有錯誤信息 – charudatta 2010-08-19 00:02:25

回答

0

樹節點列表,我不熟悉StanfordParser但我想你需要將遍歷的下降部分從內部條件中取出並始終執行。

此外,他們真的實施toString方法嗎?真的嗎?這不是.to_s?我的意思是,我喜歡Java的,之前我發現紅寶石... :-)

+0

他們沒有實現一個toString,這個方法是在一個Tree實例上調用的,它實際上是一個Java實例,可以通過Ruby的java橋樑在ruby中使用。 – charudatta 2010-08-19 00:19:54

+0

呵呵,我確實有一個合理的解釋,看起來很有趣。 .. – DigitalRoss 2010-08-19 00:32:44

0

我原來的代碼是正確的,但紅寶石是有一些問題與

if tree.lable.toString == lablename then 

聲明,證明tree.value工作原理所以現在我檢查

if tree.value == lablename then 

它的工作原理。