From: Mathieu Bouchard Date: 2001-02-26T03:27:33+09:00 Subject: [ruby-talk:11543] Re: RFC: RubyVM (long) On Sun, 25 Feb 2001, Robert Feldt wrote: > On Mon, 19 Feb 2001, Mathieu Bouchard wrote: > > Could you send me that? > It's been a busy week but I'll try to pack it up and send it in the coming > days. No problem, I took a week to reply to your previous large mail. > Wel,, don't expect too much; I simply add the productions of one grammar > to the ones of another. No checking that the merge is possible or that > they "connect" (through a nonterminal or whatever). Do you know a > "right"/better/more useful way to merge grammars? No. I'm not too experienced with parsers. But this is not too urgent: I'm not even sure we need a "Ruby--" parser at all. It could simply be a subset of the syntax tree node types of the full Ruby and nothing else. textRuby -> [parser] -> nodeRuby nodeRuby -> [compiler] -> nodeRuby-- since Ruby-- trees could be produced from Ruby trees, we don't need a "textRuby--". If for some reason we want to add a text version of "Ruby--" we then could look into inheritable parser rulesets. > Minor comment on ArrayMixin: > (I haven't checked it thoroughly so maybe you already do this) Wouldn't it > be better if put_many and get_many wasn't part of the Interface but was > defined in ArrayMixin in terms of put/get. Then if people want better > performance they can override these default version by defining their own > and faster ones? #get_many can be removed. I kept it there for performance concerns (one call, many values). But then, #get can be removed instead. But I kept it there for performance concerns (does not create an array). I didn't get much feedback on this yet. There is another possible basic read operation I thought about last week: #get_many2(anArray) -> nil takes a (real) Array as a parameter, in which every element is a Fixnum in (0...length) (precondition). Replaces each such element by its corresponding value in self. (Basically, this is a slightly twisted form of #indices in which no array is created by the callee) #put_many cannot be removed: it is the only way you can change the size of the array. #put, on the other hand, can be removed. This is an area in which I haven't decided anything yet though. What is your opinion? > > Well it's not a hindrance at all for me. I just use the & declarator to > > pick up the special parameter, and then perform a .call on it where i > > could do yield. > You're right; that should be sufficient. Except maybe for the arity issues (for which I don't remember all the details) but at least an approximative solution is a good start. =) > I'll post it. Aleksi mentioned maybe this should go into a cvs some > place. Whats the eval criteria for being allowed to sit on the ruby > cvs? How do you get "listed"? just ask knu (Akinori Musha) By the way... the grammar stuff in IRB seems to be incomplete. We'll have to work from parse.y and/or the documentation's grammar file. matju