aUCBLogo Demos and Tests / dictionarytest


setCaseIgnored false

be dictionarytest
;=[Step 1]= Let's first create three small dictionaries from English be
;French, German and Spanish. And let's load them with the translations of
;three words: "house", "hat", and "country".


   
EnFr=Table
   
[   house maison
      
hat chapeau
      
country pays
   
]
   
EnDe=Table
   
[   house Haus
      
hat Hut
      
country Land
   
]
   
EnSp=Table
   
[   house casa
      
hat sombrero
      
country pais
   
]
;=[Step 2]= Let's make a function that translates a word using a given
;dictionary which is passed as a parameter:

   
   
be translate dictionary word_
      
output dictionary.word_
   
end
   
;=[Step 3]= Let's check the translator by asking it be translate "house"
;using each of the dictionaries:

   
   
print translate EnFr "house ; ->maison
   
print translate EnDe "house ; ->Haus
   
print translate EnSp "house ; ->casa
   
;=[Step 4]= Let's create a function which takes two English-be-something
;dictionaries and creates a third dictionary (a cross-dictionary) which
;translates from the first something be the second something

   
   
be cross from_lang to_lang
      
local [new n nr index]
      
n=toList from_lang
      
nr=count n
      
new=Table nr
      
repeat nr
      
[   index=from_lang.(n.(1).1)   ;Oh well, still some parentheses!
         
new.index=to_lang.(n.(1).1)
         
n=bf n
      
]
      
output new
   
end
   
;=[Step 5]= Let's test the cross-translator and translate from German be
;Spanish, from Spanish to French and from French to German. To make
;Dainel happy, let's use the cross-translator's result as a parameter -
;i.e. we will not store it in a global variable.

   
   
print translate (cross EnDe EnSp"Hut ;->sombrero
   
print translate (cross EnSp EnFr"pais ;->pays
   
print translate (cross EnFr EnDe"maison ;->Haus
end