[M3devel] C-like syntax for Modula-3 [was Re: "target specific pragmas"?]
Darko
darko at darko.org
Tue Feb 19 11:04:09 CET 2008
I agree that there should be a pre-processor between M3 syntax and C
syntax, but this should also be integrated into the build system so
that it is transparent. I think the '.mc' extension is already taken
though, which is a bummer.
I think we should also be aiming to use this tool to automatically
convert C header files (with limitations) to M3.
The more I think about it the more I wonder if C programers will
swallow it: for example VAR params?
Further comments are embedded...
On 18/02/2008, at 3:26 PM, Jay wrote:
> I've been trying to stay out of this...
I would have though your input was most appropriate since your a
member of the target audience.
> If a comment at the top of the file can make the Modula-3 syntax
> more like C then..
Not really what we're aiming for. We're looking for a separate C like
syntax in separate files.
> replace = with ==
yes
> replace := with =
yes
> make assignment an expression
no, that changes the abstract syntax, which is something we're trying
to avoid.
> lowercase the keywords
yes
> try to make braces work (with some alteration for C)
yes
> use type name instead of name : type
yes
> separate function parameters with commas and require each to state
> its type
yes
> for that matter, subset C and require all declarations be separate
> like that?
Do you think C programmers would object?
> put back ++, --, -=, +=, etc.
yes
> superset C and let . be used in place of ->
yes
> new coding style is four space indent with opening braces on their
> own line :)
I don't do that even in C
> Hm. I think if anyone really wants to do this, instead of nit
> picking about Modula-3 syntax here and there, go about it in a
> slightly different way?
We're really not looking to change M3 in any way, just provide an
alternate syntax.
> Pick apart what defines Modula-3 through much discussion.
> Optional safety -- probably but that for these purposes
> optional garbage collection -- maybe that too
> "object orientation" that is a subset of C++
> try to use C++ syntax?
> generics (generic modules)
> independently and relatively easily parsable interface definitions
> (!)
> these are both important, but I think "independent" is more
> important
> and "relatively easily" could be omitted for the goals of this
> exercise
> compiles to native code
> sizeof(integer) == sizeof(address) (minor detail)
> built in sets and good enumerations
> arrays; I don't like them starting at non-zero, but enums for their
> index are interesting
>
> Take the existing definition of C and alter it to have these
> characteristics very very much like Modula-3 but with very very very
> much Modula-3 syntax
More information about the M3devel
mailing list