1. Re: What's Holding Euphoria Back

-- David Cuny
>Obviously, there is no trivial fix for this. I had investigated putting
>together a pre-processor for structures some time back, but dropped it when
>it became apparent that because of their recursive nature, it would be
>impossible to resolve structures until run time.

     Regarding namespace, that's right.  But I've been playing with parsing
and translation, in hopes of creating a multiline macro preprocessor that
would allow people to create their own language constructs...structures, class
declarations, block comments, etc.  And, sure enough, I found a simple way of
translating pseudocode structure definitions into true Euphoria syntax:

struct car
    string make
    string model
    atom miles
    object owner
end struct

translates to:

constant make = 1, model = 2, miles = 3, owner = 4
type car( object v )
    if sequence( v ) then
        if length( v ) = 4 then
            if string( v[make] ) then
                if string( v[model] ) then
                    if atom( v[miles] ) then
                       return( TRUE )
                    end if  --miles
                end if  --model
             end if  --make
         end if  --structure size
     end if  --sequence
     return( FALSE )
end type

     The same pattern works for all complex structures I can think of,
assuming the types of the elements have been predefined (string in this case).
It's repetitive and ugly to type out by hand, but easy with a simple
translator.  And usage is normal, as they are Euphorian sequences.  Since they
translate to Euphorian type-declarations, they can be elements of each other,
and themselves.

struct squad
    car squadcar
    object troops
end struct

car Acar
Acar[make] = Ford
Acar[model] = Mustang

squad SquadA
SquadA[squadcar] = Acar


But, as you said, it's not really a trivial task.

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu