NyktOP Project Homepage
Welcome to the NyktOP Homepage!
Goals
Short: NyktOP is a source code generator package. It is based on
(runtime) support libraries/modules for different languages.
NyktOP shall simplify prototyping (with tcl, perl, smalltalk or C++) and
support structured programming. It's advantages are: standardized (ascii)
File-I/O (via SLANG) and easy modelling of
datastructures.
The first version had simple reasons:
-
In newer projects the internal Code generator of MOOSE
had to be used. But since MOOSE was in a very rapdidly
changing state, we had to build a generator for RODEO/II, that
produced similar C++ code and that was that independent, that we
wouldn't get problems while MOOSE was changing.
-
MOOSE was never meant to support
static
(C++ verb) or class (smalltalk verb) attributes. However in
certain situations such attributes are very handy.
-
.SLANG Files - and
MOOSE currently only supports that file
format - versioning and revision control via
RCS is just impossible, b/c object order usually
differs between each two write-outs.
-
.SLANG files (see 3) in fact
cannot be edited manually, b/c references are written with
key-values calculated from memory addresses of referenced
objects. (for this reason our main input source for the (old)
generator are ascii .pre-files; for the new perl-based
generator we use .input files)
Tools
To achieve our goal we supply different tools:
-
A generic editor (tk-based) to enable simple design of data
structures
-
A template-expander (C-based) to be used as a codegenerator
for different languages (I've recently seen a very similar
approach named gslgen)
-
A perl-based code generator to replace the expander is being
created.
Supported languages
First we support all languages that are also supported by
MOOSE (not only since there is an export-function
to but also since we try generate very similar output):
-
C++ (together with the mcl of
AG Zimmermann)
(from .pre)
-
Smalltalk (for Digitalk/Objectshare
VisualWorks*) (from .pre and from .input)
Furthermore we support some other generation:
-
Export to MOOSE (from .pre)
-
Class hierarchy as Postscript*, MIF
((Frame)Maker* Interchange Format),
RTF (Rich Text Format) (from .pre)
-
Class std documentation in HTML (from .pre)
-
TCL/TK generator (also with std GUI,
tk8-based) (from .input)
-
Perl generator (from .input)
-
Yet untested gawk-generator
Problems
A slight problem is the fact, that currently the different
generator parts (and also their templates) operate upon
different dataset syntax...
(the younger perl-, smalltalk- and tcl-generators try
to use a completely other .input syntax than the
.pre syntax of the older C++ generator)
On the other hand for the elder .pre format used w/
C++-generators we have a bigger template base. For example the
C++ code-generator allowed to build a complete application with
functions and additional methods, while perl, Smalltalk and tcl
codegenerators do just generate data-structures, their I/O and
std access methods.
Besides the elder templates are more sophisticated; we had e.g.
certain templates for several flags and for arrays and different
non-class types, that are not yet supported in newer generators
Since there are now converters between the different formats (at
least from .pre to .input and from .input to .pre) this should be
not that urgent any more.
Biggest problem however is the fact, that
NyktOP is still a single-user/ single-developer system:
as long as no-one but the creator uses it, there will be no
progress. This problem covers especially the template-expander,
which acts as the main c++ code generator and which is a really
dirty & buggy old C hack. Another - perhaps even worse - example
is the missing documentation. Due to the fact, that every function
is used only by its writer, there was no need yet to produce any
documentation.
Existing Projects using NyktOP
NyktOP code generators have already been used in different
own projects.
- stat (.pre for C++)
- A simple statistical evaluation system to calculate netlength of
designed chips in order to check, if they follow certain stochastic
distributions (gauss, exp; check via chi-square)
(job, finished)
- RODEO/II (.pre for C++)
- Reuse Of Design Objects: a system to support eCAD by supporting reuse
of elder design parts. Possibility to use customized comparison functions
to search for the best matching desgin-case in a database.
(Project thesis, finished)
- sdlparser (.pre for C++)
- Converter from SDL into SLANG
(Part of master thesis, finished)
- nykditor (tcl/tk)
- simple editor to input structured designs. customable via
different configs (current configs: EER, Statecharts)
(Statecharts part of master thesis, finished) (EER: just a joke,
incompatible replacement for MOOSE)
...
Portability
All used tools are known to work on HP/UX 9.x, 10.0 and Linux
(SuSE 5.2, SuSE 6.1), however there is no aid for installation.
If U try to install, plz send an EMail to the
author.
Author
- SnailMail:
-
Bernd Noll,
Theodor-Heuss-Str. 17,
D-67663 Kaiserslautern,
Germany;
- Phone:
-
+49 / -631 / 311 2005
- EMail
-
mailto:noll@student.uni-kl.de
mailto:noll@informatik.uni-kl.de
- WWW
-
http://www.student.uni-kl.de/~noll/
http://wwwagz.informatik.uni-kl.de/staff/noll/
- IRC
-
`0` @ #PerryRhodan (IRCnet)
Download
-
Get the tcl/tk and editor related modules
(nyktop-tcl.tar.gz, 100k)
(Related is a c-module to speed up slang-i/o:
tcl-slang.tar.gz, 5k)
-
Get the perl related runtime modules
(nyktop-perl.tar.gz, 20k)
-
Get the perl based generator
(generator.tar.gz, 50k)
-
Get the old template-expander based CC generator
(old.tar.gz, 220k. Trying to get
and use this archive is probably a bad idea, since it's a collection
of terrible hacks)
-
A copy of the current Disclaimer is
also directly accessible, for those ppl, who fear, that they make any
contract w/ anyone by just downloading the soft.
-
For the sake of completeness, U can also download an archive of
all html pages of the NyktOP homepage.
This is suggested, since there is still no documentation for NyktOP.
There are installation scripts supported for tcl and perl related
modules and also for the newer perl based generator; use via
'bash INSTALL.bash (destinationdirectory:=/usr/local)'.
The elder template-expander based generator has no installation support.
History
Due to the fact, that the archives currently don't have any version
numbering (no release-number neither in name nor intern), it is
suggested to have a look at the History
page, which should name the most important changes.
The name of the game
Nyktos ophtalmoi - lampades leipon. Eyes of the night, lights
for the left.
This is a very pathetic name for just a small little collection of
prototyping tools, but the name was born, when we heard the news,
that CBM* had dropped Amiga*.
References
-
MOOSE
- is an internal project of AG Zimmermann.
More information on it can be found below homepage of
AG
Zimmermann.
-
Perl
- is a nice semi-interpreted language,
mainly used for scripting and conversion.
It's main site is Perl.com.
-
TCL
- is another interpreter language; it is
usually used in connection with TK (TCL/TK) for smaller GUI
oriented applications.
It's main site is Scriptics.com.
-
AWK
- is an elder scripting language merely for
filtering scripts. There are newer versions of this language:
mawk, nawk and gawk. We do only refer to gawk (GNU-awk), that
can be found at the HP of the Free
software foundation.
Summary of Links
-
Local documents
-
current mirrors:
-
External links
* We use different registered or trademarked expressions in this file,
without explicitely showing the properties.
Best viewed with probably any Browser;
if U want to see a beautiful page with java(script), frames and lots of
pix, go somewhere else.