[Gambas-user] Custom Eval (was Re: The new Border class)

Charlie Reinl Karl.Reinl at ...2345...
Sat Feb 7 22:41:25 CET 2015


Am Montag, den 05.01.2015, 22:16 +0100 schrieb Fabien Bodard:
> 2015-01-05 22:02 GMT+01:00 Benoît Minisini <gambas at ...1...>:
> > Le 05/01/2015 21:46, Fabien Bodard a écrit :
> >>> What do you mean?
> >>>
> >>> --
> >>> Benoît Minisini
> >>
> >> I think about a tool that will be able to interpret inline formulas
> >> like in a spreedsheet.
> >>
> >> i have done something like that for playing myself but i'm not a
> >> specialist of interpreters like you.
> >>
> >> for example :
> >>
> >> =Myvar1 + 3 *(3*myvar2)
> >> =MYFUNCTION(myvar1; myvar2) + MyVar3
> >>
> >> the function can be initialised for example like
> >>
> >> Interpret.Function.Add("MYFunction", nbreArgs, typeRetVal)
> >>
> >> And will call Public Sub Interpret_MyFunction(Arg1 as variant, arg2 as
> >> variant,...) as variant
> >>
> >> A Special Event will query the vars values : Public Sub
> >> Interpret_GetVar(sVarName as string) as Variant
> >>
> >> All the stuff of the interpreter will be to manage conditionnal
> >> requirement and calculate values  or concatenate strings. So this tool
> >> will be usefull for user level programmation.
> >> Like in spreadsheet or in reports formulas. It can be extended near to
> >> unlimited. Some functions can be hardcoded like mathematical ones.
> >> Others are depend of the context so must be implemented for each
> >> widget or component. It's not the fastest way to make compute but the
> >> most flexible.
> >>
> >> I hope my english is not inapprehensible
> >>
> >
> > If I understand well, you need some sort of custom Eval().
> >
> > More precisely, I think what you need is a Gambas hook inside the reader
> > part of Eval() (the first part of its internal compiler) where you tell
> > how to translate any symbol into a Gambas function or a call to a method
> > into one of your classes, everything else being forbidden.
> >
> > That way, you keep the Gambas syntax, except that all function names are
> > redefined, and every interpreter class is forbidden except the one you
> > allow explicitly.
> 
> Yes it can be the idea. But can it be compatible with 'STANDARD'
> formulas style too ? were separtors are ';'...
> 
> But your idea will be a great step too and i think you have understand
> the back of my mind.
> 
> 
> 
> >
> > Just an idea...
> >
> > --
> > Benoît Minisini

Salut Benoît,

searching something for my problem, I found this mail. What I need is
something you describe as "Gambas hook inside the reader part of
Eval()".
In my Collection passed to eval, I have "Sum_of_Value_page_1" to
"Sum_of_Value_page_35"  and the "Page_Nr". Now for picking the right
value I need the eval("Sum_of_Value_page_" & CStr(Page_Nr), myCol).
Done like that, I get "Sum_of_Value_page_1" to "Sum_of_Value_page_35" as
return. That is nice, but I want the result of that, stored in myCol.

Thought I could resolve that with a public function called by eval
failed also.
"Public Function Sum(sFiledName as string) as Variant" isn't called.

So I need that what you call "Gambas hook inside the reader part of
Eval()".... Or something that works like I know from Clipper, called
Code-Blocks. Search I-net for "clipper code blocks"




-- 
Amicalement
Charlie





More information about the User mailing list