beginnings of a gcc interface for the language machine

Peri Hankey mpah@thegreen.co.uk
Wed Aug 17 10:28:00 GMT 2005


I hope subscribers to this list will be interested in a generalised 
language toolkit that I have published under Gnu GPL. The toolkit is 
written in the D language using the gdc D language frontend to gcc, and 
it includes the beginnings of a GENERIC interface with gcc4, as well as 
an interface to libtcc, the tiny C compilation library. The toolkit 
itself is at

http://languagemachine.sourceforge.net

This is a complete rewrite of software that I developed and used in real 
projects over a long period that began in 1975. The software consists of:

   * a shared library which implements the grammatical engine
   * a minimal main program
   * several different flavours of a metalanguage compiler
   * an application that generates the web pages from wiki-style text
   * a D language processor with a D language generator backend
   * examples including forward polish, reverse polish and infix 
calculator examples
   * an infix calculator example that compiles C code for immediate 
execution using libtcc
   * experiments with a gcc interface

The language machine is intended to be useful across a wide range of 
applications, from quick'n'dirty text mungers upwards - anything that 
has a linguistic or grammatical component. The LMN metalanguage compiles 
to rules wrapped as shebang scripts, to rules wrapped in the C and D 
languages, and to rules compiled as (slightly odd) C and D language 
procedures, and it's quite easy to call external procedures in the C and 
D languages.  A nice feature is that the source text format is 
compatible with wikimedia markup conventions, so some of the web pages 
(including the metalanguage definition) are generated directly from the 
LMN source text.

The beginnings of an interface to gcc4 can be found at

http://languagemachine.sourceforge.net/gcc_interface.html

The infix calculator that directly generates and executes C code using 
libtcc is at

http://languagemachine.sourceforge.net/tcc_calc.html

The neat thing about the language machine is that it lets you play 
directly with the fundamentals of language. The engine can generate a 
diagram that explains exactly how rules are applied: it turns out that 
an engine that directly and efficiently implements the most general kind 
of recognition grammar is very much like a macro processor that lets you 
define your own syntax as part of the macro definition.  It does this in 
a way that lets you concentrate on recognising and transforming patterns 
that happen to contain nonterminal symbols. Going at it this way, you 
can do everything from lexical analysis to code generation.

In technical terms, the language machine directly implements analytic or 
recognition grammars with absolutely no restriction on the kind of 
rewriting rules that you can usefully use - each side of a rule can 
contain any number of symbols, and either side can usefully be empty.  
There is an explanation of how this approach fits into accepted ideas 
about language at

http://languagemachine.sourceforge.net/grammar.html

I hope some of you will share my excitement at the possiblities that can 
arise when this beast has a live interface to the GCC code generators, 
and that some of you can help make it happen.

Peri Hankey

-- 
http://languagemachine.sourceforge.net - The language machine



More information about the Gcc mailing list