Next Previous Contents

## 9. Odds'n'Ends

This section contains an eclectic collection of topics. As a compromise between our intention to release Styx quickly but to provide you with a more or less complete documentation, much had to be left out and others could only be touched shortly. Some of the topics might evolve into a complete chapter in later versions of this document.

## 9.1 Disadvantages with regard to lex/yacc

- Mostly disadvantages of the scanner: Some irregular lexical syntaxes as used in languages cannot be scanned. Take Rpg, Fortran or Cobol with their columnar lexical syntax as examples.
- The parser only supports a one-symbol look-ahead, while more modern yacc versions come with lalr(2) or even lalr(k). Since lalr(1) is known to handle the deterministic languages, this is not a real issue, since we can always reformulate the grammar to cope with oddities.
- Languages that come with an ill-layered context-free and context-dependent grammar (many do), cannot be parsed without extra tricks. Take the "typedef" declaration of C together with the application of the type name in type denotations as example. Likely examples are languages with definable operator precedences as Algol98 or Prolog for instance. Styx provides a few hooks to cope with stuff like this, since version 2.0.1 the usage of "dynamic" tokens to solve the first mentioned problem.

## 9.2 Intensive grammar abstractions

A typical example of the problem occurs already when parsing expressions. As a result we want to get something like 'expr ::= varid | lit | funid(expr,...)', but we have prefix, infix, postfix, distfix order and whatever syntactical sugar in the surface grammar. Further, the 'funid' tokens come in as keywords and not as regular names.

- Node rotation
- keyword --> symbol replacements

A Method to solve the problem would be to have some 'interface time' reduction rules. The impact of such rules with regard to the abstraction congruence and to unparsing remains to be investigated.

## 9.3 Pretty printing

- Allows to "translate" to a super-grammar of the parsed word.
- Incompletely developed especially with regard to token separation and comment placement.
- Conceptionally wrong because of the indent format specification method that causes Styx sources not be pretty printable themselves. This misconception will be ironed out in one of the next releases.
- Successfully used anyway by the author to convert a language with a lisp like surface grammar (and a hand-written parser) to something proper with infix operators, function names before the parentheses, if constructs and other. Only a little handwork was needed to place the comments right and to adjust the layout in certain situations due to my taste.
- Should be developed so, that it can be used as a source code normalizer in a regular way.

## 9.4 '.ant' vs. '.int' C-Interface

- '.ant' provides a very space efficient representation of the derivation tree to the expense that keywords and comments are as well lost as source file references.
- It is a plug-in replacement.
- This format originated as a workaround for some disabilities in older versions of Microsoft's memory allocation library.

## 9.5 Reentrancy and thread-safeness

- Basically, reentrancy works fine.
- Thread-safeness should work, but is not tested very well.

## 9.6 Meaning of the name "Styx"

The word "Styx", which is the name of the here-described software has two interpretations intended by us. The first, plain and simple is an abbreviation or more precise a ENGLISH("Verballhornung") of the word "syntax" which is obviously closely related to what Styx is for. The second, more opaque and perhaps scaring interpretation originates from the coincidence with the name of a place in Greek mythology. It is the name of a very poisonous river that separates the mythological underworld, the hades, from the world on the surface of earth. Well knowing that analogies painfully stress the imagination, we do not go further into it, but leave it to the meditation of the ENGLISH("geneigtem") reader.

## 9.7 Installation, Availability and License

- Standard installation procedure (configure, make, make install). Use 'configure --help' to get options.
- Styx is available at http://www.speculate.de/Styx.
- The Styx package is released both under GPL and LGPL, while each of the licenses apply to different parts.

## 9.8 Authors and Credits

- LD & HM
- Styx intentionally is an original freeware product, .... Thanks goes to the freeware community to create the environment that finally allows us to present our work to a more wider audience. We hope using Styx will make as much fun as it made us writing it.
- Styx was written by the authors in their spare time as a tool to create another application while working as freelancers for the administration of the "Freie und Hansestadt Hamburg", their home town.

## 9.9 Copyright and Trademarks

Styx is copyright (c) 19xx-2002,2003 by Lars Doelle and Heike Manns. Dos and Windows is a trademark of Microsoft. Unix is a trademark of the Santa Cruise Corporation. All other mentioned trademarks are trademarks of their respective owners.

Next Previous Contents