|
C help needed
|
Mike
|
Feb 09, 2005 17:35 PST
|
I have been slowly working on a Euphoria-to-C translator project for
some time now. Since RDS (kind of) released source of a Euphoria
interpreter activity on this list seems to have died. If there is anyone
interested in helping with this project could they please email me
privately. Basically I need the help of a C programmer.
The catch is this: I claim most of the right to determine the direction
the new language goes. The design-by-committee style of OE made the
language specs too complicated for me which is why I stopped slavishly
following it. The good news is that I may be more willing (than Rob) to
consider good suggestions that are within my programming limitations.
The language I have in mind is similar to Euphoria except for:
Forward references. These are allowed but only for routines within a
source file. However, any exported symbols are visible to an includer no
matter what order the files are parsed, eg:
-- file a
include file b
-- file b
include file a
In this example file a can access all the exported symbols of file b -
right from the start of the file.
File b has reciprocal access.
Dynamic Includes. The parser is already capable of this. The statement
must be in a top-level 'if' block evaluable 1st pass, eg:
if PLATFORM = WIN32 then
include win32lib.ew
else
include dos32.e
end if
Code output. Only C code. It can be compiled or run directly with a
C-interpreter.
For loop persistence. If the for-loop host variable is predeclared then
the value will persist
outside the loop. eg:
integer a
for a = 1 to 10 do
end for
-- a = 10
Of course, attempting to write to 'a' inside the loop will flag an error
by the parser.
Comparison operator. If x = "anything" then -- all ok
Integers. Full 32 bits. Type info is carried by an accompanying tag
field.
Types. About 6 builtin ones and the ability to define external
structures that can be treated just like a normal type.
type(). Nope.
Classes. Nope, but will have structures.
Macros. Nope.
Assert. Yes.
Assignment on declaration. Allowed.
Constants. Auto incrementing already implemented in parser. The catch is
that the leading full expression must be evaluable on pass 1, eg:
constant a = 1, b, c -- b=2 c=3
Scopes. In ascending order of range: private, local, external, global.
Dot notation. For structure & sequence access
Mike
|
|
 |
|