[#16113] Strange idea... exporting from a scope — "Hal E. Fulton" <hal9000@...>
Hello...
Hi,
matz@zetabits.com (Yukihiro Matsumoto) writes:
Hi,
matz@zetabits.com (Yukihiro Matsumoto) writes:
On Thu, 7 Jun 2001, Dave Thomas wrote:
[#16140] (?i:) in regexp — ts <decoux@...>
>>>>> "Y" == Yukihiro Matsumoto <matz@zetabits.com> writes:
[#16144] Re: Strange idea... exporting from a scope — hfulton@...
> |> I'm too lazy to type in "exprt" and variable name. so I'm
Hi,
[#16155] Re: Block arguments vs method arguments — hfulton@...
> | { | local, :up | }
[#16172] The Block Problem -A suggestion — Chris Moline <ugly-daemon@...>
Hi, I was thinking about our discussion and came up with an idea that might
[#16229] Re: String#scan strange behavior — ts <decoux@...>
>>>>> "W" == Wayne Blair <wayne.blair@relian.com> writes:
[#16245] line numbers in multiline regular expressions. — jonas <jonas.bulow@...>
Hi,
[#16259] Timezone in Time::{local,gm} — Stoned Elipot <Stoned.Elipot@...>
Hello,
[#16271] Re: odd obj.send behaviour — ts <decoux@...>
>>>>> "P" == Patrik Sundberg <ps@radiac.mine.nu> writes:
[#16283] ruby and fox — Albert Wagner <alwagner@...>
Just curious if anyone else in ruby-talk is attempting to use the fox GUI. I
[#16317] Re: ruby regex — ts <decoux@...>
>>>>> "D" == David Thiel <dthiel@nexprise.com> writes:
[#16325] Tcl string map lookalike — Wilbert Berendsen <wbsoft@...4all.nl>
Hi,
[#16364] Re: Garbage Collection? — Michael Davis <mdavis@...>
Windows 2000 and linux (RedHat 6.2). I have run these tests on both OSs.
[#16380] Method objects fail equivalence — mirian@... (Mirian Crzig Lennox)
I was surprised to observe the following:
Hi,
[#16400] Symbolic Computation III — Mathieu Bouchard <matju@...>
> ----- Original Message -----
>----- Original Message -----
On Tue, 12 Jun 2001, Wayne Blair wrote:
[#16415] Ruby - Objective C - GNUstep — Laurent Julliard <Laurent.Julliard@...>
So here is my story:
[#16433] Re: Inital Q's on Ruby grammar — ts <decoux@...>
>>>>> "R" == Robert Feldt <feldt@ce.chalmers.se> writes:
[#16462] Opinion sought: parsing non-regular languages — Robert Feldt <feldt@...>
(This is a bit long...)
Robert Feldt <feldt@ce.chalmers.se> writes:
On Thu, 14 Jun 2001, Dave Thomas wrote:
[#16489] Verify correct lexing of delimited strings — Robert Feldt <feldt@...>
Hi all,
[#16502] Playing with Ruby Syntax (was: Initial thoughts about Ruby From a Smalltalk Programmer) — jweirich@...
Michael> Hi Everyone, I have to say I'm utterly fascinated by Ruby
jweirich@one.net writes:
[#16503] walking the ruby_frame list — victor <victor@...>
Hi,
Hi,
On Sat, Jun 16, 2001 at 10:56:30PM +0900, Yukihiro Matsumoto wrote:
[#16505] Smalltalk vs. Ruby — Steve Tuckner <SAT@...>
I have never used Smalltalk so I have no knowledge of its use on a day by
[#16528] why only nil and false are regarded as false? — Steven Haryanto <steven@...>
I would appreciate some explanation on why Ruby behaves like
[#16540] Trapping method defs — Robert Feldt <feldt@...>
Hi all,
[#16556] Method overloading - How? — Uwe Lammers <Uwe.Lammers@...>
Hi,
[#16565] Configuration file parsing — "Anders Johannsen" <anders@...>
I'm currently writing an application in Ruby, which needs a
[#16567] [TOY] reversed regexp — ts <decoux@...>
[#16583] Two (or more) dimensional arrays? — "Kirk Lowery" <klowery@...>
After reading my way through various documentation, I didn't find any
[#16591] RCR: Enumerable: every() and none() — Hugh Sasse Staff Elec Eng <hgs@...>
I've been off the list for a while but I'm dipping back in to suggest:
[#16599] RE: RCR: Enumerable: every() and none() — "Benjamin J. Tilly" <ben_tilly@...>
>===== Original Message From Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> =====
[#16604] Creating arrays — Chris Moline <ugly-daemon@...>
Hi, I was wondering why do we have to do this
[#16634] mascot — redwolf <arm3@...>
The Ruby Crowned Kinglet is perfect!!!
[#16640] Re: Commenting code — Alvaro Segura <asegura@...>
James Kanze wrote:
[#16646] Serial Communications — Wai-Sun Chia <waisun.chia@...>
Hello Rubyists,
[#16657] bag difference — Hugh Sasse Staff Elec Eng <hgs@...>
Is there an elegant way to do a bag diffeence between 2 arrays, rather
[#16661] Problem running irb with Ruby 1.6.4 under FreeBSD 4.0 — Bob Alexander <balexander@...>
I've installed Ruby 1.6.4 on a FreeBSD 4.0 machine, and get the
Yukihiro Matsumoto wrote:
Hi,
In article <993579597.067351.15583.nullmailer@ev.netlab.zetabits.com>,
[#16662] installation option — Hung-Hsien Chang <hubert@...>
Hi!
[#16669] how to call super from singleton method? — viisi@... (Andi Riedl)
hi!
[#16681] RE: embedding C++ — Wyss Clemens <WYS@...>
Have you tried using SWIG?
[#16686] opening db files made by apache dbmmanage — Fritz Heinrichmeyer <fritz.heinrichmeyer@...>
[#16714] DBI 0.0.5 problem — "Krzysztof P. Jasiutowicz" <kpj@...>
Krzysztof P. Jasiutowicz wrote:
[#16715] File.flock blocks forever — Michael Witrant <mike@...>
Hello,
[#16723] setsockopt options — Joseph McDonald <joe@...>
Hi,
Hi,
[#16726] Simulating call-by-reference in Ruby — senderista@... (Tobin Baker)
I'm currently working on Ruby bindings for ORBit and thought that it
[#16737] socket bug — Joseph McDonald <joe@...>
Joseph McDonald <joe@vpop.net> writes:
[#16763] uniq and "equivalence" — Hugh Sasse Staff Elec Eng <hgs@...>
Array.uniq seems to rely on deleting multiple references to the same object.
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
On Fri, 22 Jun 2001, ts wrote:
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#16788] pretty printing with enscript? — Albert Wagner <alwagner@...>
By chance, has anyone done a pretty printing file for ruby in enscript?
[#16792] wrapping structures — Martin Chase <stillflame@...>
hey ruby hackers,
[#16799] Problems compiling FOX for Ruby (FXRuby) on NetBSD — Michael Neumann <neumann@...>
Hi,
[#16801] rb_define_class() vs Class.new() — Kero van Gelder <kero@...4050.upc-d.chello.nl>
Hi,
>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:
> K> From C, rb_define_class() defines a named class, however, on the Ruby
>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:
> >>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:
>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:
> irb> B = a
>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:
[#16810] [BUG?] Kernel::load wrap parameter — Patrik Sundberg <ps@...>
(CC any replies to me please - not subscribed and have crappy newsserver)
[#16841] RE: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...>
Next week I'll try to rebuild Ruby with Unicode strings. But it would be
Hi,
That's good enough. But I'm afraid this could ( not would ) cause string
Hi,
I'll help as soon as You call. I like C++ much more than Assembler :)))
Hi,
I've taken a look at m17n.
[#16861] Re: Problems compiling FOX for Ruby (FXRuby) on NetBSD — "Lyle Johnson" <ljohnson@...>
> I didn't get FXRuby (Ruby interface for FOX GUI Toolkit) available from
[#16868] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>
As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've
On Tue, 26 Jun 2001, Aleksei Guzev wrote:
[#16869] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>
As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've
[#16881] — "Aleksei Guzev" <aleksei.guzev@...>
Hi,
On Wed, 27 Jun 2001, Yukihiro Matsumoto wrote:
Hi,
On Thu, 28 Jun 2001, Yukihiro Matsumoto wrote:
Hi,
ts <decoux@moulon.inra.fr> writes:
Hi,
[#16885] Re: Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>
>>>>> "Mathieu" == Mathieu Bouchard <matju@sympatico.ca> writes:
[#16888] finalizers, destructors and whatnot — "David Leal" <david@...>
Hi all,
[#16973] Extension building — Tony Smith <tony@...>
I'm just getting started with Ruby and my first comment is "at last!". I've
[#16976] Introspection and 'where's the source'? — Johann Hibschman <johann@...>
Hi,
[#16982] RCR for the String class — Joseph McDonald <joe@...>
[#16991] eruby (or equiv) for windows? — "Derek Hamilton" <derek@...>
I am new to ruby so forgive me if this question has already been =
[#17002] FOX subclassing FXTextField and messages — Ralf Canis <rc@...>
Hello,
[#17004] the evolution of Ruby itself — Tobias Reif <tobiasreif@...>
Hi all;
Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
[#17008] Re: Poll results — Srecko.Howard@... (Srecko Howard)
Hi all
[#17020] Re: RCR for the String class — Steve Tuckner <SAT@...>
> While I'm complaining, I prefer Java's IO class hierarchy to Ruby's, too.
[#17027] sigprocmask — Joseph McDonald <joe@...>
[#17037] keeping an Exception object alive — David Alan Black <dblack@...>
Hello --
Hi,
Hello --
Hi,
Hello --
Hi,
Hello --
>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:
Hello --
>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:
On Mon, 2 Jul 2001, ts wrote:
[#17059] "cvs commit" from within ruby — Clemens Wyss <wys@...>
I am trying to commit a file from within a ruby script (automation
[#17069] Is the ruby GC compacting ? — Lothar Scholz <llothar@...>
Or can i safely assume that a reference to a Ruby object is always the
[#17080] (cvs?) configure / make problems — Kero van Gelder <kero@...4050.upc-d.chello.nl>
Hi!
> > fails
[#17091] ensure block not being executed — Joseph McDonald <joe@...>
I'm afraid You stop not the script but You stop the interpreter with ^C.
"Aleksei Guzev" <aleksei.guzev@bigfoot.com> writes:
Then what is MessageQueue? (I haven't foud it at my Ruby sources )
[#17102] Ruby on a PDA — Tobias Reif <tobiasreif@...>
Hi all;
[#17110] Re: Ruby on a PDA — Kent Dahl <kentda@...>
Tobias Reif wrote:
[ruby-talk:16462] Opinion sought: parsing non-regular languages
(This is a bit long...)
Hi all,
I'm contemplating different ways for how to extend rockit to handle
non-regular features in the languages to be tokenized/lexed/scanned and
parsed. This is needed to tokenize things that cannot be expressed with
regular expressions. An example (referred to as E1 below) from the Ruby
grammar is parentheses-delimited nested strings such as
%q(a (nested) string)
which cannot be expressed in a RE since there is no way to count and
balance the parentheses. Other examples of non-regular languages are
E2, Hollerith strings in Fortran: nHa1,a2,...,an where leading number
specifies the number of numbers to follow after the H.
I'd appreciate your input on possible solutions to the problem (or
alternative solutions you might have):
S1. Do nothing and let people handle this by writing their own lexer
You can plug your own lexers into rockit today so this is the current
approach. However, I really think there is added value in having a
formalism and support for using it. The main reason for using hand-written
lexers are speed but there are actually lexer generators that generate
code that is better or very close to the performance of hand-coded
lexers. And if you really crave control why aren't you hand-coding your
regexps today, eh? And why are you interested in using a parser
generator? (Well maybe you aren't; sorry for this mail... ;-))
S2. "Hooks" for hand-coded tokenizers
Allow an easy way for people to plug in their custom tokenizers into
the existing regular expression (RE) based lexing framework.
An example for E1 above would be
Grammar Ruby
Tokenizers
def delimited_string(single)
s, cp = @string, @current_position
return nil unless s[cp,1] == "%" and s[cp+2,0] =~ /(\(|\[|{|<)/
return nil unless s[cp+1,1] == (single ? 'q' : 'Q')
lp = $1
rp = {"(" => ")", "[" => "]", "{" => "}", "<" => ">"}[lp]
# ... continue here to find the position of the balancing rp
# Return lexeme and position of next unmatched char
return s[(cp+3)...balancing_rp_pos], balancing_rp_pos+1
end
Tokens
Blank = /\s+/ :skip:
...
DelimQString = delimited_qstring(true)
DelimIString = delimited_qstring(false)
Productions
Program -> ...
...
Literal -> String
| ...
String -> DelimQString
| DelimIString
| ...
Pro: Power of a full programming language.
People already know Ruby so no need to learn new language.
No need to implement more advanced lexer generator.
Con: Language-dependent => cannot generate C version for speed etc
I like this one though I think its a bit ugly. But its simple and
powerful.
S3. Do nothing and let people handle this post parsing
For E2 this would mean using a regexp like /\d+H(\d+(,\d+)*)?/
and then checking after the parse if the string is really valid.
Pro: Simple
Con: Why continue with parse-related activities after parsing finished?
Cannot handle all non-regular features for example not E1 above?
S4. Extend regexp that can be used in rockit grammars so that non-regular
things can be expressed
Add ways to count the number of chars from a char class that has been
matched so far.
Something like, for E1,
/%q(.)(?while count(\1) != count(balancing(\1)))\1/
where count(c) is the number of c chars seen during this match,
balancing is
def balancing(paren)
{"(" => ")", "[" => "]", "{" => "}", "<" => ">"}[paren]
end
and the (?while condition) construct means "consume characters while
the condition is true".
For E2 this would be
/(\d+)H(\d+(,\d+)(?times $1.to_i-1))/
where the re(?times cnt) construct means "match the re regexp cnt
times".
Pro: Blends nicely into the existing regexp framework?
Con: What if more constructs than while, times and count is needed? Are
they powerful enough?
Unclear how to implement on top of existing framework. Probably
need to roll our own regexp engine with new stuff added => takes time.
S5. ANTLR-style lexing
In ANTLR you use the same way to describe the lexing as you do the
parsing, ie. you have the power of CFG and lookahead etc
Balancing strings can be lexed with something like
Balanced : '(' (Balanced | /[^)]/)* ')'
Pro: Only needs to learn one formalism. Generation procedures similar =>
less code to maintain.
Con: New stuff to look into and learn => takes time
Maybe its a valid question to ask why I'm developing rockit at all;
maybe I should have focused on RAntlr (!) in the spirit of RBison...
The obvious reason is that I don't know Antlr and LL-parsing but
know some things about regexps and LR-parsing. And the Antlr code is
large. But maybe its all about NIH... ;-)
S6. Combining lexing and parsing with merging AST building
We can use something similar to S5 to solve E1 by combining lexing and
parsing (ie. specifying delimited strings in the productions instead of as
tokens). If we add a way to specify that lexemes of matched elements
should be merged we can build the proper AST. Something like
ParenDelimQString -> '%q' Balanced [QString: _,lexeme]
Balanced -> '(' InnerBalanced* ')' [^: +,+,+]
InnerBalanced -> Balanced [^]
| /[^)]+/ [^]
where ^ means "lift this thing up one level in the AST" and + means
"merge the lexeme with the lexemes of the other +-marked elements".
Pro: Blends very nicely into the existing framework
Con: Cannot handle E2
Performance
We need one Balanced production for each paren that can be a
delimiter ('(', '[', '{' and '<') => much for specifying little
Maybe we can solve the last con by allowing back-references in
productions? But we'll also need parameterized productions, like
Balanced(p, bp) -> p InnerBalanced(p, bp)* bp
etc. Might be cool...
Any comments or ideas? Which solution would you prefer if you'd get to
choose?
Regards,
Robert