[Vm-dev] Translation weirdness

Igor Stasenko siguctua at gmail.com
Fri Mar 15 14:53:41 UTC 2013


On 15 March 2013 14:34, Bert Freudenberg <bert at freudenbergs.de> wrote:
>
>
> On 2013-03-15, at 13:50, Igor Stasenko <siguctua at gmail.com> wrote:
>
>>
>> On 15 March 2013 13:43, Bert Freudenberg <bert at freudenbergs.de> wrote:
>>>
>>>
>>> On 2013-03-14, at 21:18, Igor Stasenko <siguctua at gmail.com> wrote:
>>>
>>>>
>>>> On 14 March 2013 19:27, Bert Freudenberg <bert at freudenbergs.de> wrote:
>>>>>
>>>>> Slang:  foo isIntegerOop
>>>>> C:      interpreterProxy->isIntegerObject(foo)
>>>>>
>>>>> Slang:  interpreterProxy isIntegerObject: foo
>>>>> C:      (foo & 1)
>>>>>
>>>>> SmartSyntaxInterpreterPlugin: y u no smart?
>>>>>
>>>> i'd say completely opposite.
>>>
>>>
>>> You mean, "foo isIntegerOop" should generate "(foo & 1)", and "interpreterProxy isIntegerObject: foo" should generate "interpreterProxy->isIntegerObject(foo)", yes?
>>>
>>
>> no i meant, both should generate
>>
>> foo isIntegerOop => isIntegerOop(foo)
>> interpreterProxy isIntegerObject: foo  => interpreterProxy->isIntegerObject(foo)
>>
>> and internally isIntegerOop() can be just a macro where it does (foo&1)..
>
> Okay, so not "completely opposite" :)

no it is.. you said that smart syntax plugin is not so smart by not replacing
foo isIntegerOop with (foo & 1)

and i said , that in contrary, it is basic generator is not smart by
replacing foo isIntegerOop with (foo & 1).

:)

>
> - Bert -
>
>> what important to me is that C sources should as close as possible
>> reflect an original expression written in slang.
>>
>> if developer wrote 'foo & 1' in slang code, then, and only then it
>> should generate C code which uses same.
>>
>>> That would at least make sense, agreed.
>>>
>>> I'd have expected both constructs to result in the same generated code, so they could be used interchangeably.
>>>
>>> - Bert -
>>>
>>>> when you looking at C source it is important to not lose track of what
>>>> was written in slang.
>>>> and in this regard, expression
>>>>
>>>> interpreterProxy->isIntegerObject(foo)
>>>>
>>>> is preferable because you know exactly what's going on, in contrast to:
>>>>
>>>>    (foo & 1)
>>>>
>>>> where you can wonder, whether same expression is written in slang.. or
>>>> it is translation artefact.
>>>> We should avoid ambiguous stuff.. especially since you can always use macros
>>>> so it won't affect any speed whatsoever.
>>>>
>>>>> - Bert -
>>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko.
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko.
>
>
>



-- 
Best regards,
Igor Stasenko.


More information about the Vm-dev mailing list