# Ruby lexer/parser

**URL:** <https://www.ruby-forum.com/t/ruby-lexer-parser/74810>\
**Category:** Ruby\
**Created:** [November 7, 2006, 10:57am UTC](https://www.ruby-forum.com/t/ruby-lexer-parser/74810 "2006-11-07T10:57:45Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![seeweer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e5b9ba/32.png) [@seeweer](https://www.ruby-forum.com/u/seeweer)\
**Post date:** [November 7, 2006, 10:57am UTC](https://www.ruby-forum.com/t/ruby-lexer-parser/74810/1 "2006-11-07T10:57:45Z")

</div>

Just a short question concerning the ruby lexer/parser

irb(main):001:0\> a=1  
=\> 1  
irb(main):002:0\> a.to\_f \* 10.0 #space before and after '_’  
=\> 10.0  
irb(main):003:0\> a.to\_f_10.0 #no space before and after ‘\*’  
=\> 10.0

irb(main):005:0\* a.to\_f _10.0 #space before '_’ and no space after  
‘\*’  
ArgumentError: wrong number of arguments (1 for 0)  
from (irb):5:in `to\_f’  
from (irb):5

so why does ruby think \*10.0 would be an argument to .to\_f?

In my opinion the ruby lexer sould recognize ‘\*’ as an operator, no  
spacing should  
have any influence on this behavior …

Artur

---

<div class="post-metadata">

**Author:** ![seeweer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e5b9ba/32.png) [@seeweer](https://www.ruby-forum.com/u/seeweer)\
**Post date:** [November 7, 2006, 10:57am UTC](https://www.ruby-forum.com/t/ruby-lexer-parser/74810/2 "2006-11-07T10:57:47Z")

</div>

On 03/11/06, Artur M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ‘\*’
> 
> Artur

- can have dual meanings. It can be a method call on an object (in  
your first two examples) or it can act as the ‘splat’ operator when it  
directly preceeds an object.

Farrel

---

<div class="post-metadata">

**Author:** ![seeweer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e5b9ba/32.png) [@seeweer](https://www.ruby-forum.com/u/seeweer)\
**Post date:** [November 7, 2006, 10:57am UTC](https://www.ruby-forum.com/t/ruby-lexer-parser/74810/3 "2006-11-07T10:57:52Z")

</div>

Farrel L. schrieb:

> > irb(main):005:0\* a.to\_f _10.0 #space before '_’ and no space after
> > 
> > Artur
> 
> - can have dual meanings. It can be a method call on an object (in  
> your first two examples) or it can act as the ‘splat’ operator when it  
> directly preceeds an object.
> 
> Farrel

yes, you are right. I was just suprised, that it only is a problem  
after a method invocation (as ‘a \*10’ works fine),  
but this behavior seems to be enforced by ruby’s slack handling of  
parentheses …

Artur
