[Top][All Lists]
[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
>>>
>>
>