18 Jan 2003 chalst   » (Master)

I've recently been thinking about getting languages to talk to each other, mostly in the context of the LISP family, and have been struck by how difficult it is to give clear, language independent, information in a program text about what language you are writing in, and what coding conventions you are using. I've thought of a simple device to correct this, a "dialect" directive, that could easily be integrated into any programming language. Here are a few examples to illustrate what I am talking about:
For C:
#dialect C gnu-cpp linux-style

For python:
dialect python lexical-scope indent-4-spaces

For the LISP family:
(dialect scheme
case-sensitive-ids scheme48-package multiline-comments)

For Java:
/** ...
* @dialect java sun-codeconv gcj-code

I think having a reasonably coherent, cross-language, machine readable set of conventions for indicating the dialect of a source text is useful, particularly for allowing syntax-directed editors to reliably determine how to format program text, and to figure what identifiers are introduced and how they are used.

An issue is: should dialect directives extend the language? My opinion is they should, since they could be used to influence the semantics of the program, but they should be permitted to occur in comments, so ensuring backwards compatibility.

Another issue concerns UNIX #! directives; see SRFI 22: Running Scheme Scripts on Unix for some discussion of important issues here.

I'd like to write an advogato article about this, probably in a couple of weeks time, but I have to hammer down a few ideas first. In the meantime I am interested in any comments or references to similar ideas.

Withdrew my certification of robocoder as apprentice due to his (cynical|confused) certification of mglazer as master.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!