Speagram Home | tutorial | use me | live interface | developer's corner | links | contact


Our project documentation is available as speagram.pdf and speagram.ps. It is our ambition and one of our project priorities to maintain a scientific documentation describing the mathematical conceptual framework behind the Speagram software system. Our two main references are:

The core theoretical idea is a system of rules for rewriting terms with polymorphic types. A powerful bottom-up parser translates plain text input into terms and rewrite rules. An interpreter reduces any term to its simplest form by applying appropriate rewrite rules. Terms can be transformed in any computable way because Speagram is in fact a pure functional programming language with static polymorphic typing and eager evaluation.

You can parse, manipulate and analyze structured data. You can specify any context-free grammar (or even some non context-free ones), parse text input, transform it to XML to be further processed by another program, or use Speagram itself to do anything with the parsed result — anything that a functional programming language can do. Moreover, symbolic rewriting, search and even first-order logic reasoning are built into Speagram to better process and understand your data.

Our disambiguation is strong because any computable function can be used as a binary preference relation to compare any two of the whole set of possible parsing results. In practice, Speagram's parser can be made sensitive to several levels of priority and incorporate advanced type cast rules to offer such disambiguation as to relieve the user of the burden of writing brackets if only it is theoretically possible. In other words, Speagram can be used to specify grammars so finely that no surplus brackets from the user are needed.

Shorthand notation support is available because Speagram's parser is extensible on the fly. The end user — after obtaining a final specification of a grammar equipped with a parser — can inroduce his own shortcuts in the data files to be parsed and this will work without the need to re-specify the original grammar. This is especially important when you use Speagram together with a backend program for processing the resulting XML, as you can enrich the interface without touching the XML backend at all.

Automatic memoization and multithreading are inherent features of Speagram's rewriting engine and the programmer doesn't have to be concerned with these. The programmer only needs to focus on defining the ways the data should be transformed, and it is Speagram's task to utilize multiple processors or to memoize intermediate results at the right time.

With the help of our interactive tutorial and our live interface you can quickly learn to write in Speagram and even save and execute your code on our server. You can also use Speagram on your own machine or from your web application.

Valid XHTML 1.1