From: Arne Vajhøj on
On 14-03-2010 12:53, Stefan Ram wrote:
> Arne Vajh�j<arne(a)vajhoej.dk> writes:
>> Do you run your Java code through the C preprocessor?
>
> Sometimes I run Java code through a preprocessor.
>
> For example, I write the file �Add.java� in the
> directory �de/dclj/ram� as:
>
> $include /java.gpp
> $define VERSION slr(a)2009-08-29T17:35:33+02:00
> $define SINCE slr(a)2007-08-30T01:17:50+02:00
> HEADER
> /**
> REFERENCES */
>
> @de.dclj.ram.meta.quality.Cleaned(2)
> DECLARE(interface)< Domain>
> { public void add( final Domain value ); }
>
> The preprocessor generates from this:
>
> /* Copyright 2004-2010 Stefan Ram.
> This program is free software; you can redistribute it and/or modify
> it under the terms of the GNU General Public License as published by
> the Free Software Foundation; either version 2 of the License, or
> (at your option) any later version.
> This program is distributed in the hope that it will be useful,
> but WITHOUT ANY WARRANTY; without even the implied warranty of
> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> GNU General Public License for more details.
> You should have received a copy of the GNU General Public License
> along with this program; if not, write to the Free Software
> Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
>
> package de.dclj.ram;
>
> /**
>
> @version slr(a)2009-08-29T17:35:33+02:00
> @since slr(a)2007-08-30T01:17:50+02:00
> @see<a href="http://www.purl.org/stefan_ram/java/de/dclj/ram/Add.java">source code</a>
> @see<a href="http://www.purl.org/stefan_ram/html/ram.jar/de/dclj/ram/Add.html">documentation</a>
> @see "<a href='http://www.purl.org/stefan_ram/pub/ram-jar'>Library homepage</a> (Must be opened in a<i>new window</i>, outside of frames, to avoid a 403 status code.)" */
>
> @de.dclj.ram.meta.quality.Cleaned(2)
> @de.dclj.ram.meta.description.Copyright( "Copright 2004-2009 Stefan Ram" )
> @de.dclj.ram.meta.description.TypePath( "de.dclj.ram.Add" )
> @de.dclj.ram.meta.description.Cleared( "slr(a)2009-08-29T17:35:33+02:00" )
> public interface Add /* de.dclj.ram.Add */< Domain>
> { public void add( final Domain value ); }
>
> Thus, the preprocessor inserts some boilerplate and
> derives the name of the type declared from the file
> name.

Similar concepts has been seen before, but note that you are
halfway at creating a new language.

Arne