[#16113] Strange idea... exporting from a scope — "Hal E. Fulton" <hal9000@...>

Hello...

33 messages 2001/06/01

[#16364] Re: Garbage Collection? — Michael Davis <mdavis@...>

Windows 2000 and linux (RedHat 6.2). I have run these tests on both OSs.

12 messages 2001/06/09

[#16400] Symbolic Computation III — Mathieu Bouchard <matju@...>

14 messages 2001/06/11

[#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

9 messages 2001/06/15

[#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

11 messages 2001/06/20

[#16686] opening db files made by apache dbmmanage — Fritz Heinrichmeyer <fritz.heinrichmeyer@...>

14 messages 2001/06/21

[#16801] rb_define_class() vs Class.new() — Kero van Gelder <kero@...4050.upc-d.chello.nl>

Hi,

18 messages 2001/06/23
[#16802] Re: rb_define_class() vs Class.new() — ts <decoux@...> 2001/06/23

>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:

[#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

15 messages 2001/06/25
[#16842] Re: national characters is strings — matz@... (Yukihiro Matsumoto) 2001/06/25

Hi,

[#16843] Re: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/25

That's good enough. But I'm afraid this could ( not would ) cause string

[#16868] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

14 messages 2001/06/25
[#16873] RE: Something strange with Ruby's inheritance mechanism — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/26

[#16879] Re: Something strange with Ruby's inheritance mechanism — Mathieu Bouchard <matju@...> 2001/06/26

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

12 messages 2001/06/25

[#16881] — "Aleksei Guzev" <aleksei.guzev@...>

32 messages 2001/06/26
[#16916] Re: Method overloading (option) Was: Re: — "Wayne Blair" <wayne.blair@...> 2001/06/26

[#16920] Re: Method overloading (option) Was: Re: — matz@... (Yukihiro Matsumoto) 2001/06/26

Hi,

[#16888] finalizers, destructors and whatnot — "David Leal" <david@...>

Hi all,

16 messages 2001/06/26

[#17037] keeping an Exception object alive — David Alan Black <dblack@...>

Hello --

19 messages 2001/06/28
[#17055] Re: keeping an Exception object alive — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17066] RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17076] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17079] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17138] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/07/02

Hi,

[#17141] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/07/02

Hello --

[#17142] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — ts <decoux@...> 2001/07/02

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

[ruby-talk:16473] Re: Opinion sought: parsing non-regula`r languages

From: Robert Feldt <feldt@...>
Date: 2001-06-14 13:43:00 UTC
List: ruby-talk #16473
On Thu, 14 Jun 2001, Dave Thomas wrote:

> Robert Feldt <feldt@ce.chalmers.se> writes:
> 
> > Any comments or ideas? Which solution would you prefer if you'd get to
> > choose?
> 
> I know next to nothing about parsing and lexing, but it seems to me
> that you'd spend an inordinate amount of effort trying to produce a
> lexer that could deal with the kind of things that people dream up for
> tokens. Identifying regular expressions is a particularly hairy case
>
Yes, sounds reasonable.

> that comes to mind: /[[]/ and friends are all special cases.
> 
I'm not sure we're talking about the same thing here but wouldn't

	/\/((\\\/)|[^\/])*\/[iomx]*/

cut it? Thats what I use to find regexps in rockit grammars so I hope I'm
not too far off the mark...

> So, I'd be in favor of providing simple hooks for adding my own code
> to the lexer. If this isn't language independent, then have a
> provision to add lexer chunks in multiple languages: you can get it
> all working in Ruby, then when you want to produce your C-based
> parser, give a command line option and it will chose your C-based
> lexer chunk.
> 
Thanks for your opinion; this is close to what I feel is the right
thing. I'm thinking something like:

  Grammar Ruby
    Tokenizers (Ruby) # First one is default. No name needed if only one.
      ...
    Tokenizers (C)
      ...
    Tokens
      ...

And its a good thing not to spend too much time on this issue since people
will not very often work with non-regular languages. I'm glad I asked for
your opinion.

> In the code example you showed for this (S2), you had a dedicated call
> per symbol. I assume this means that these chunks must be called often
> on a trial and error basis, looking for a match. You might be able to
> make this more efficient by (a) providing some context as part of the call
> and/or (b) allowing the lexing chunk to return the type of symbol
> found:
> 
Yes, the API needs more thinking. However, the penalty might not be
as high as you'd think since what tokens might match can be inferred from
the parsing context (the current production/rule being applied). Often
this will limit the number of tokens that can match. Its a good
thing though to encourage that only the minimum is taken care of by a
tokenizer. If we know that there must be a leading % we can generate
faster lexers.

>   Tokenizers
>      def delimited_string
>        s, cp = @string, @current_position
>        type = case s[cp]
>               when 'q' then DelimQString
>               when 'Q' then DelimIString
>               when 'x' then DelimXString
>               when 'r' then Regexp
>               else return nil
>               end
>        # .. more stuff
>        return type, end_pos, position_of_next_unconsumed_char
>      end
> 
Yes, thats better than my example. Thanks.

Thanks,

Robert

In This Thread