chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] Fwd: Newbie question - Converting SKILL/Scheme to C.


From: Nicholas \"Indy\" Ray
Subject: Re: [Chicken-users] Fwd: Newbie question - Converting SKILL/Scheme to C.
Date: Tue, 1 Sep 2009 23:04:37 -0700

So, Don't confuse the fact that Chicken compiles to C with being able
to translate to C. The result of the Chicken compiler is doubtful to
be maintainable by hand. If you run csc -t on a source file that
actually compiles, you will see what sort of C Chicken generates.

If you're still trying to get the SKILL program to compile in Chicken
a fact brought up on the wikipedia page you linked will be
problematic:

http://en.wikipedia.org/wiki/Cadence_SKILL#Syntax

SKILL seems to allow C style function calling and infex notation for
some operators. Chicken Scheme (And most Schemes only) use prefix
notation.

So, function calls written as:

Func(A B)

will have to be rewritten as:

(Func A B)

And operators written as

X + Y

will have to be rewritten as

(+ X Y)

Additionally, for comments /* */ is not supported, Scheme comments
start with a ; and go on till end of line.

There are many other problems with the syntax of the small code
snippets you linked, I suggest getting aquainted with standard Scheme

Indy

On Tue, Sep 1, 2009 at 8:11 PM, Yaron Kretchmer<address@hidden> wrote:
> Hi Ray.
> My apologies.  Let me explain some more.
>
> I have a program written in a language called SKILL, which is a
> variant of Scheme. SKILL is used in semiconductor design to describe
> the layout of transistors, and is described briefly in
> http://en.wikipedia.org/wiki/Cadence_SKILL
>
> I am interested in translating this SKILL program to C, and thought I
> could use Chicken to accomplish that. I've installed and ran Chicken
> on the various SKILL programs I have, and some of the trivial programs
> compiled OK, whereas some of the more complex examples failed. This
> might be related to the Syntax differences between SKILL and Scheme,
> or is related to my incorrect usage of Chicken.
>
>
> Is the above within the confines of this group? If it is, I'll send
> the code that was causing me problems, and would appreciate any help,
>
> Best regards
> Yaron
>
>
> On Tue, Sep 1, 2009 at 6:45 PM, Nicholas "Indy" Ray<address@hidden> wrote:
>> Sorry, But I don't think the HTML was the major problem with the email.
>>
>> First of all it's not clear what you are trying to do.
>>
>> Second of all without any code to see what's generating you're errors
>> it's hard to diagnose.
>>
>> Also things like
>>
>> "(() if (opptapObj->tap == "None" then return (nil) else return (t)))"
>>
>> and
>>
>> "/* comment
>> and more comment
>> end of comment */"
>>
>> and
>>
>> "prefix = substring(dev 1 2)"
>>
>> Looks nothing like Scheme code, much more like C code. Are you sure
>> the code is Scheme at all??
>> Additionally this isn't exactally a good mailing list for converting
>> code from SKILL to C as this is a Chicken Scheme mailing list, and
>> unless Chicken is some how involved, neither C or Skill seems to
>> apply.
>>
>> Indy
>>
>> On Tue, Sep 1, 2009 at 6:10 PM, Yaron Kretchmer<address@hidden> wrote:
>>> Here's a resend with no HTML :P
>>> ------------------------------- begin
>>> resend-------------------------------------
>>>
>>> Hi All.
>>> Just joined the group, so forgive my newbie questions :)
>>>
>>> I have some legacy code written in SKILL (a variant of Scheme) which
>>> I'm trying to convert to C.
>>>
>>> I tried compiling the code , and got several different error message,
>>> and was wondering whether somebody could suggest a solution  for each
>>> :
>>>
>>> =======================begin 
>>> problems==========================================
>>> Problem 1 - substring
>>> *) The code uses the "substring" function which the compiler seems to
>>> have a problem with. So lines like
>>> prefix = substring(dev 1 2)
>>> create compiler error message like
>>> Syntax error: illegal atomic form
>>>
>>>        ()
>>>
>>>        Expansion history:
>>> ...
>>>        <syntax>                (dev 1 2)       <--
>>>
>>> problem 2 - multi-line comments
>>> *) The compiler doesn't recognize multi-line comments
>>> /* comment
>>> and more comment
>>> end of comment */
>>>
>>> problem 3 - Unknown object methods
>>> *) The code refers to object methods/properties  through the use of
>>> the "->" operator. The compiler doesn't like.
>>>  prog( ()
>>>    if( opptapObj->tap == "None" then return(nil) else return(t))
>>>  ) ;prog
>>>
>>>  generates error
>>> Syntax error: illegal atomic form
>>>
>>>        ()
>>>
>>>        Expansion history:
>>>
>>>        ...
>>>        <syntax>                (() if (opptapObj->tap == "None" then
>>> return (nil) else return (t)))    <--
>>> ==================End 
>>> problems===============================================
>>>
>>> Thanks a lot!
>>> Yaron
>>>
>>>
>>> _______________________________________________
>>> Chicken-users mailing list
>>> address@hidden
>>> http://lists.nongnu.org/mailman/listinfo/chicken-users
>>>
>>
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]