[#395238] rubygem: ispunity (unite all your internet connections) — Arun Tomar <tomar.arun@...>

Dear friends,

12 messages 2012/05/01

[#395250] Overwriting one Ruby array or arrays with another — Craig Law <lists@...>

Hi

14 messages 2012/05/02

[#395258] array of strings - finding letter combinations — "Sebastjan H." <lists@...>

Hi All,

16 messages 2012/05/02

[#395357] Why Enumerator#next does not return more than one value? — Földes László <lists@...>

If I have an Enumerator which yields elements of a mathematical series

10 messages 2012/05/07

[#395373] How to use Data_Wrap_Struct to assign the DATA VALUE to an exsiting Ruby object? — Iñaki Baz Castillo <ibc@...>

Hi, my code receives an arbitrary klass name (provided by the user)

8 messages 2012/05/07

[#395429] passing via instance variable or regular () — sam jam <lists@...>

def first

10 messages 2012/05/10

[#395463] I'm looking for a Metaprogramming Project — Phil Stone <lists@...>

Hello,

19 messages 2012/05/11

[#395548] A million reasons why Encoding was a mistake — Marc Heiler <lists@...>

Newcomer wants to try Ruby.

15 messages 2012/05/15
[#395561] Re: A million reasons why Encoding was a mistake — Ryan Davis <ryand-ruby@...> 2012/05/15

[#395595] Re: A million reasons why Encoding was a mistake — Brian Candler <lists@...> 2012/05/16

I will add that the OP is not entirely alone in his opinion.

[#395551] How to ensure that a block runs entirely after other threads? (Thread.exclusive does not "work") — Iñaki Baz Castillo <ibc@...>

Hi, I expected that in the following example code, thread t1 would not

8 messages 2012/05/15

[#395575] GUI with ruby on windows — David Acosta <lists@...>

hello friends, i am a begginer and i have a litlle question, how can i

17 messages 2012/05/16

[#395604] what is going wrong here? — roob noob <lists@...>

Notice the initialization of both classes in each of the examples, if

20 messages 2012/05/16

[#395646] rb_gc_register_address() or rb_gc_mark()? — Iñaki Baz Castillo <ibc@...>

Hi, I've bad experiences with rb_gc_register_address(), it does never

16 messages 2012/05/17

[#395686] reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...>

Hi,

19 messages 2012/05/18
[#395694] Re: reading from and writing to a Unicode encoded file — Regis d'Aubarede <lists@...> 2012/05/18

Hello,

[#395697] Re: reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...> 2012/05/18

Regis d'Aubarede wrote in post #1061272:

[#395698] Re: reading from and writing to a Unicode encoded file — Regis d'Aubarede <lists@...> 2012/05/18

Sebastjan H. wrote in post #1061276:

[#395699] Re: reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...> 2012/05/18

Regis d'Aubarede wrote in post #1061277:

[#395750] Re: reading from and writing to a Unicode encoded file - issues when using Shoes — "Sebastjan H." <lists@...> 2012/05/21

Hi,

[#395754] Re: reading from and writing to a Unicode encoded file - issues when using Shoes — "Sebastjan H." <lists@...> 2012/05/21

Sebastjan H. wrote in post #1061483:

[#395740] ? Ruby through CGI and Rails — Shaun Lloyd <list@...>

Hi everybody,

22 messages 2012/05/21
[#395764] Re: Ruby through CGI and Rails — Brian Candler <lists@...> 2012/05/21

Shaun Lloyd wrote in post #1061455:

[#395786] Re: Ruby through CGI and Rails — Shaun Lloyd <list@...> 2012/05/22

On 22/05/12 03:37, Brian Candler wrote:

[#395838] Re: Ruby through CGI and Rails — Brian Candler <lists@...> 2012/05/23

Shaun Lloyd wrote in post #1061602:

[#395787] Changing self class from inside a method?? — David Madison <lists@...>

Let's start off with the assumption I want a method that allows an

10 messages 2012/05/22

[#395841] Memory-efficient set of Fixnums — George Dupre <lists@...>

Hi,

25 messages 2012/05/23

[#395883] looking for a ruby idiom : r=foo; return r if r — botp <botpena@...>

Hi All,

11 messages 2012/05/24

[#395966] Am I justified to use a global variable if it must be used in all scopes? — Phil Stone <lists@...>

Hello,

12 messages 2012/05/27

[#396010] does this leak more than the size of the string via timing side channels — rooby shoez <lists@...>

string1 = "string"

16 messages 2012/05/29

[#396038] Is it possible to avoid longjmp in exceptions, Thread#kill, exit(), signals? — Iñaki Baz Castillo <ibc@...>

Hi, my Ruby C extension runs a C loop (libuv) without GVL. At some

8 messages 2012/05/29

Re: Command vs method in Ripper

From: Ryan Davis <ryand-ruby@...>
Date: 2012-05-15 23:17:06 UTC
List: ruby-talk #395568
On May 13, 2012, at 16:53 , Jeremy W. wrote:

> Hi guys,
>=20
> I've been playing around with Ripper for the first time today.  =
Parsing
> method calls with and without parentheses gives me different output =
and
> I'm not sure why. When using brackets, Ripper outputs a 'method',
> without them gives me a 'command'.
>=20
> Are these actually different things inside Ruby, or is this just a
> difference in the way Ripper outputs them?
>=20
> If there is a internal difference between them, could someone please
> point me to either some more information, or the relevant bit of the
> Ruby source code I need to read to learn more.
>=20
> If they are not different internally, what is the reason that Ripper
> displays them as such?

Because ripper shows too much detail about the way the parse tree is =
engineered and not about the semantics of the language itself. This is =
(I suspect) because ripper was done "on the cheap" by reusing the =
parse.y file and injecting different terminal actions using #ifdef's.

Contrast your below output to the output from ruby_parser:

% rake debug R=3D"x 1; x(1)"
s(:block,
  s(:call, nil, :x, s(:lit, 1)),
  s(:call, nil, :x, s(:lit, 1)))

since there's no semantic difference between the two, there shouldn't be =
a structural difference between the two.=20

BTW, this output is for ruby_parser 3.0, which has not been released =
yet. I've gotten rid of an :args node and just splatted them into the =
:call node instead. RP 2 would output:

s(:call, nil, :x, s(:args, s(:lit, 1)))

RP3 release is coming "RSN".

> I suspect I may have more questions. Are there any good resources for
> Ripper, or anyone specific I should be pestering? I'm happy to put =
some
> documentation together as I explore further if people feel that would =
be
> useful?

I'm one of your better bets. You can probably cull a lot of your own =
answers from sexp_processor's pt_testcase.rb, which are the shared =
parser tests that I use across ParseTree, ruby_parser, ruby2c, =
ruby2ruby, and many others.

> Sample code and my output follow.
>=20
> Thanks for your time.
>=20
> -----
>=20
> I'm running:
>=20
> content =3D <<-EOS
>    x(1)
>    y 1
> EOS
> Sexp.from_array(Ripper::SexpBuilder.new(content).parse)[1]

PLEASE note that this is not a good idea... at least, if you're =
intending on passing said sexp through SexpProcessor. Problematic nodes =
shown below:

> The sexp I get out is
> s(:stmts_add,
>  s(:stmts_add,
>    s(:stmts_new),
>    s(:method_add_arg,
>      s(:fcall,
>        s(:@ident, "x", s(1, 0))

:@ident is not a processable node type, specifically because you can't =
have a method named "process_@ident" (at least... not easily).

s(1, 0) will bork for similar reasons, so you'll need the enclosing node =
to process it.

>      ),
>      s(:arg_paren,
>        s(:args_add_block,
>          s(:args_add,
>            s(:args_new),
>            s(:@int, "1", s(1, 2))

ditto on both cases

>          ), false
>        )
>      )
>    )
>  ),
>  s(:command,
>    s(:@ident, "y", s(2, 0)),

noticing a pattern?

>    s(:args_add_block,
>      s(:args_add,
>        s(:args_new),
>        s(:@int, "1", s(2, 2))
>      ), false
>    )
>  )
> )

It is for this reason that I haven't bothered trying to bridge ripper to =
my unified sexp format... it's just a mess.=

In This Thread