The YADA Reference Manual
2.0-alpha
- Id
- yada.tcl,v 1.19 2004/02/25 14:42:10 micha Exp
YADA is Yet Another Data Analyser for the CDG parsing environment. Its purpose is to ease the task of parser evaluation by allowing the user to configure series of experiments where problem instances are computed and the resulting data is presented in a pleasent way. The data generated can be exported into an external spredsheat application or converted into raw data for gnuplot, or what ever one likes.
YADA offers a document oriented interface where documents of certain types are loadable in order to generate and display the data with them. During runtime an arbitrary number of documents is loadeable each of which can visualize different data or even the same data from a different perspectivity. Thus YADA is easily extensible by implementing new document types which the user then can instanciate. At the time of this writing the following document types are implemented:
- YadaRunner: this is the most frequently used document type for a straight forward experiment setup.
- YadaGlsStats: this document type allows the user to examin experiments with a specific focus on the GLS parsing flavour displaying additional statistics only meaningfull for GLS
- YadaDifference: this also is a runnable document type as the YadaRunner where two experiments are run alternatingly in one document. Results from both experiments might be compared immediately.
- YadaRanking: this document type allows the user to load the data from more than one experiment per document and therefor visualize complete experimental series.
In terms of the implementation there are more document types as can be seen in the YadaDocuments module documentation .
To make your way thru this reference document you might start at the modules section, i.e. YadaDocuments and the YadaScheduler . These try to divide the application into logical parts. Understanding the applications architecture might also be cleared by reading yada.tcl and YadaMain. Take a glimpse at the class hierarchy afterwards and this reference manual hopefully becomes understandeable.
YADA is implemented in Tcl/Tk, more precisely in Itcl/Itk, the object oriented extension to Tcl/Tk (comment: no more tcl without itcl;), also using the Iwidgets set of megawidges. In addition we use the TkTable widget by Jeffrey Hobbs, and the TDom extension by Jochen Loewer. YADA is known to run with
I know there are already more recent versions of that software but, you know, never touch a running system. You might try YADA with new versions of the components. Tell me if that was successfull.
By the way, YADA is developed on linux and is not intended to run on MS Windows although TclTk is available on MS Windows. Note that I will not try to code tcl platform-independent in order to support MS Windows. YADA will be kept in a shape that it runs on unices, no MS Windows.
As you might already have look at the YADA startup script yada.sh there are a few shell environment varialbes which you might be interested in:
- YADA_LIB : This is the location where the YADA application scripts are located. Obviously, a correct value of this variable is obligatory.
- YADA_IMAGES : This is the location where the images are put. If the variable is not set, it defaults to
$YADA_LIB/images
. Still not a valid location results in a programm abortion. - YADA_PATH : This variable points to the location, where the yada data is stored needed for your experiments, that is the cdgp binary, configuration files, logfiles and xml files. If this directory does not exist the first time you start YADA, it is created.
- YADA_ETC : This variable points to the location where your configuration are, that is where
experiments.tcl
, grammar.tcl
and machines.tcl are. If not set it defaults to $YADA_PATH/etc
. If the directory is not existing it will be created. - YADA_DATA : This is the path where the database of your experiments is put. Use the value of this variable in
experiments.tcl
to organize the data hierarchy properly from here on. If this variable is not set it defaults to $YADA_PATH/data
. A non existing directory location is tried to be created. - YADA_GRAMMARS : This is the location where your dedicated CDG grammar copies might be put to. If the variable is not set, it defaults to
$YADA_PATH/grammars
. If the location still does not exist, YADA will refuse to start. - YADA_TMP : Here YADA and possibly you, the user might put temporarily files. Could easily be of the value /tmp but defaults to
$YADA_PATH/tmp
if not set. - YADA_CDGP : This is the full path to a default cdgp binary.
- YADA_EDITOR : This is the command to start your favorit editor, that YADA should adress in case of.
See http://nats-wiki.informatik.uni-hamburg.de/twiki/bin/view/Papa/YadaTracking
Ok, what's to say about coding? Most of the time too much and oneself is leaving such a guide over the time. Here are my 2cent coding style guidelines I tried to follow til now in YADA:
- all classes are defined in a separate file, no two or more classes in one file.
- yada classes are named using the
Yada
prefix - if a class used in YADA is not named with the prefix
Yada
, then this has the simple reason that these clases are borowed from somewhere else or are useable outside of YADA aswell (example: FileSelector) - private class members, i.e. methods, procs and variables start with a _ (underscore)
- try to think about the logical entity a new class belongs to and add it to a module (using the grouping commands in doxygen)
Hm, I'll add more if I come accross something important enuf to be mentioned here.
Copyright (C) 1997-2004 The CDG Team <cdg@nats.informatik.uni-hamburg.de>
YADA is licensed under the GPL.
This application is free software; as a special exception the author gives
unlimited permission to copy and/or distribute it, with or without
modifications, as long as this notice is preserved.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
YADA 2.0-alpha (20 Oct 2004)