KindCons: Kind Constructor

Read Me


Install * Usage * Licence * Contact * Uninstall * Tips * FAQ

What are kind grammars and why yet another compiler compiler? Short description what are kind grammars and some hints where you can find theoretical background is in separate file.

The reason why to use this tool is that it generates parsers with easy-to-understand source files - i.e. it is possible to reconstruct the original structure of the grammar and also to understand and therefore also be able to modify the sources.

Install

  1. Create a directory where do you want the application to reside.
  2. Copy there the archive KC020emx.zip
  3. Change the directory to the created one.
  4. Extract the files to this directory (e.g. using
    unzip KC020emx.zip *
    )
  5. Copy the KindCons.exe file to any directory on your path.
  6. Build the demos (optional - expects `make' and 'gcc' on the path):
    1. Change directory to the `examples\*' directory. (Where `*' stands for the different sample directories: AriExp, Minipas, and PascalPP.)
    2. Run your make tool (make, nmake, etc.)

Usage

KindCons [-q] [-T] <langfile> [<target_directory>] [-l<lstfile>]
where:
ParameterDescription
-qsupresses printing of banner
-ssupresses printing of banner
-Tenables generation of target file debug support.
<langfile> language description file name
<target_directory>target directory for the generated files; if they already exist, they would be overwritten
-l<lstfile>enables generation of a listing file and specifies its name (and optional path); it is useful for `debugging' of new language description files.

Licence

Usage of this application is payment free, but the users are kindly asked to note the use of this tool in the documentation of the created applications whenever the kind constructor is used to create them and to inform the author of kind constructor about its succesful use.

Disassembling and other reverse engineereng is prohibited: if you need to do some changes in the application, ask the author.

Author is not responsible of any damage made by the application and by their use.

Contact

Michal Zemlicka
KSI MFF UK
Malostranske nam. 25
118 00 Praha 1
Czech Republic
e-mails: Michal.Zemlicka@mff.cuni.cz or (if the first fails) Michal.Zemlicka@post.cz
Home page:
http://www.ms.mff.cuni.cz/~zemlicka/KindCons

The contact can also be used for sending some wonderful ideas how to improve the application. If you find some errors in the application send me an info about it - but distinguish please between errors in grammars that are written by you and between errors really caused by the application.

Uninstall

Just remove the directory where the application were installed and (if the KindCons.exe file was copied to some other directory) also this copy.

Tips

FAQ

Q: Why I should set the limits for terminals, nonterminals, etc.?
A: The language description files (and most of the sources) are shared with another application: run-time extensible compiler that is still under development.

Q: Why do you ask for info about the use?
A: I need to show my boss that I do not spend my time with playing. As other scientists I need to publish and be cited ...

Q: Why the application is not open-source?
A: I want to keep the control about the application at least until the twin-app will be finished. And also, of course, I want to use this application - current trends in author rights seem to me very dangerous and I do not want to pay for the use of my own work in the future. If I decide to leave computers, I probably give the sources to the public.

Q: Will the semantic actions be better supported.
A: I hope so. But it needs some time and lots of work.

Q: Is the product error-free?
A: I am afraid that there are some. Therefore it is released as beta to let others to help me in their detection.

Q: How can I "debug" my own language descriptions?
A: Try KindTran of the same version number as it produces more detailed info about the processed language definition. Also KindCons have some debugging support: enable generation of listing file that can show you where the learning process stopped.

Q: How can I guess the proper limits for terminals, nonterminals, edges, etc.?
A: Limits for number of terminals, nonterminals, semantic actions, output terminals, productions, keywords and instructions can be obtained easily: just count their definition lines. Limit of edges and views try to set to 10x(#terminals + #nonterminals), limit for node set to 25x(#terminals + #nonterminals), and limit for symbol nodes set a bit higher that is their number - it depends on their number and length.