Граф коммитов

558 Коммитов

Автор SHA1 Сообщение Дата
nobu c456863bd6 * parse.y, re.c: re-applied revision 13092.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-25 07:06:47 +00:00
matz a25fbe3b3e * encoding.c: provide basic features for M17N.
* parse.y: encoding aware parsing.

* parse.y (pragma_encoding): encoding specification pragma.

* parse.y (rb_intern3): encoding specified symbols.

* string.c (rb_str_length): length based on characters.  
  for older behavior, bytesize method added.

* string.c (rb_str_index_m): index based on characters.  rindex as
  well.

* string.c (succ_char): encoding aware succeeding string.

* string.c (rb_str_reverse): reverse based on characters.

* string.c (rb_str_inspect): encoding aware string description.

* string.c (rb_str_upcase_bang): encoding aware case conversion.
  downcase, capitalize, swapcase as well.

* string.c (rb_str_tr_bang): tr based on characters.  delete,
  squeeze, tr_s, count as well.

* string.c (rb_str_split_m): split based on characters.

* string.c (rb_str_each_line): encoding aware each_line.

* string.c (rb_str_each_char): added.  iteration based on
  characters.

* string.c (rb_str_strip_bang): encoding aware whitespace
  stripping.  lstrip, rstrip as well.

* string.c (rb_str_justify): encoding aware justifying (ljust,
  rjust, center).

* string.c (str_encoding): get encoding attribute from a string. 

* re.c (rb_reg_initialize): encoding aware regular expression

* sprintf.c (rb_str_format): formatting (i.e. length count) based
  on characters.

* io.c (rb_io_getc): getc to return one-character string.
  for older behavior, getbyte method added.

* ext/stringio/stringio.c (strio_getc): ditto.

* io.c (rb_io_ungetc): allow pushing arbitrary string at the
  current reading point.

* ext/stringio/stringio.c (strio_ungetc): ditto.

* ext/strscan/strscan.c: encoding support.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-25 03:29:39 +00:00
ko1 e39eb9dab5 * compile.c, insns.def, parse.y: fix massign order. This change
causes performance problem.  Try vm1_swap benchmark.
  [ruby-dev:31522]
* insns.def, insnhelper.ci: move process body of expandarray insn to
  vm_expandarray().
* bootstraptest/test_knownbug.rb, bootstraptest/test_massign.rb:
  move a solved test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13236 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-23 07:10:56 +00:00
nobu ac41d27749 * parse.y (f_norm_arg): ripper has no shadowing check.
* parse.y (f_block_arg): dispatch blkarg_mark.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-23 06:51:21 +00:00
nobu fcab7ebb71 * parse.y (f_norm_arg): check also nested arguments. [ruby-dev:31502]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-23 04:19:45 +00:00
nobu 3f025d2078 * parse.y (reg_compile_gen): obtain error info from errinfo.
* re.c (rb_reg_error_desc): make RegexpError for initialization error.

* re.c (rb_reg_compile): return nil and set errinfo if error.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13092 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-18 05:05:36 +00:00
ko1 fc5885aa7a * parse.y: remove "//" type comment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-15 05:22:44 +00:00
ko1 fe898043cc * parse.y: fix rules around f_margs. "make test" passes all tests.
* bootstraptest/test_block.rb: add some tests for above.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-15 04:52:56 +00:00
nobu d3a1980b96 * parse.y (internal_id_gen): internal ID must be bigger than
tLAST_TOKEN.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-09 19:47:11 +00:00
nobu ae709e831f * parse.y (stmt): check if rhs has value before assignment instead
inside node_assign_gen().  [ruby-dev:31293]

* parse.y (call_bin_op_gen, call_uni_op_gen): split call_op_gen.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12911 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-09 07:04:56 +00:00
nobu fda5eeae72 * parse.y (f_marg_list): renamed from f_marg_head.
* parse.y (f_margs): allow multiple mandatory arguments after a splat.
  [ruby-dev:31153]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12909 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-09 05:01:37 +00:00
ko1 1951ef76ce * parse.y (value_expr_gen): fix to cause "void value expression"
when jump expression such as "next" are shown on value_expr().
  [ruby-dev:31119]
* bootstraptest/test_syntax.rb: fix to above change.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-06 07:46:57 +00:00
ko1 1a30041536 * parse.y: fix a f_marg rule. [ruby-dev:31160]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-06 07:38:18 +00:00
nobu d9274e7d6b * parse.y (reg_compile_gen): set error if failed to compile regexp
literal.  [ruby-dev:31336]

* re.c (rb_reg_compile): should not use regexp which could not get
  initialized.  [ruby-dev:31333]
  return error message to let the parser know it.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-02 14:36:25 +00:00
matz 46eb6e9428 * parse.y (value_expr_gen): warn for empty expression ().
[ruby-dev:31252]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-23 09:13:44 +00:00
nobu bf27f224f0 * parse.y (stmt, mlhs_node, lhs, arg, var_ref): return dummy
NODE_BEGIN after errors.  [ruby-dev:31100], [ruby-dev:31118]

* parse.y (remove_begin): make empty NODE_BEGIN to NODE_NIL, instead
  of null.  [ruby-dev:31252], [ruby-dev:31263]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-20 01:39:30 +00:00
nobu 233221db60 * parse.y (rb_parser_append_print, rb_parser_while_loop): moved check
for node to the head.

* ruby.c (proc_options): do nothing for -p/-n options if tree is null.
  submitted by Yusuke ENDOH <mame AT tsg.ne.jp> at [ruby-dev:31243].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12812 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-18 00:19:10 +00:00
matz 608545ced0 * parse.y (bvar): semicolon was lost for ripper description.
[ruby-dev:31140]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12753 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-13 02:31:56 +00:00
nobu e6dc7d3d6f * parse.y (ripper_warningS): unused in ripper right now.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12752 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-13 02:25:29 +00:00
nobu 4a0ea31319 * parse.y (debug_lines): use rb_hash_lookup() to get rid of
call of Hash#default.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12751 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-13 02:17:58 +00:00
nobu b1d5c752fb * parse.y (dsym): convert also literals containing NUL to
symbol.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-13 02:16:27 +00:00
nobu 6dcf9f16cc * parse.y (program, stmt, primary): reduced duplicated code.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-13 02:09:40 +00:00
ko1 0ec2b20d2f * parse.y: fix node construction (around f_margs).
[ruby-dev:31143]
* bootstraptest/test_block.rb: add a test for above.
* insnhelper.ci: fix indent.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-07 07:16:05 +00:00
nobu e8fc29990f * parse.y (keyword_to_name): constified.
* ext/ripper/eventids2.c (token_to_eventid): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-06 05:57:14 +00:00
nobu c512a69a2d * parse.y (f_marg): wrap f_norm_arg assignment node with NODE_LIST.
[ruby-dev:31141]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-06 05:35:28 +00:00
akr a74dbca686 * parse.y (mlhs_basic): use mlhs_post after tSTAR.
[ruby-dev:31109]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-05 09:45:27 +00:00
nobu 46603a78af * include/ruby/{intern,ruby}.h, compile.[ch], error.c, eval.c,
eval_load.c, gc.c, iseq.c, main.c, parse.y, re.c, ruby.c,
  yarvcore.[ch] (ruby_eval_tree, ruby_sourcefile, ruby_sourceline,
  ruby_nerrs): purge global variables.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-05 08:12:18 +00:00
nobu a670571ad3 * parse.y (parser_parse_string): fix indent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-05 02:02:30 +00:00
nobu 6bbcf6f43d * parse.y (global_symbols.last_id): reduce unused ID numbers.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-05 01:13:10 +00:00
nobu ba563e4a41 * include/ruby/st.h, st.c (st_init_table, st_init_table_with_size):
constified.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-05 01:06:49 +00:00
akr c1596a80af * parse.y (mlhs_inner): new rule. [ruby-dev:31132]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-04 09:32:45 +00:00
nobu fd3f9eee0e * parse.y (parser_yylex): return non-valid token for an invalid
instance/class variable name.  a patch from from Yusuke ENDOH
  <mame AT tsg.ne.jp>.  [ruby-dev:31095]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-29 15:17:02 +00:00
nobu 9c69eff7b3 * parse.y (stmts): fix for ripper.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12669 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-29 14:38:10 +00:00
ko1 0d7e74a6be * parse.y: fix to show line number of blank block.
[ruby-dev:31093]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12668 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-29 13:00:27 +00:00
matz 71f8ca8bc4 * parse.y (assoc_list): remove expanded hash literal (no splat).
* lib/webrick/httpstatus.rb (WEBrick::HTTPStatus::EOFError): adapt
  to new syntax.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-29 06:27:49 +00:00
nobu cf46a2fce6 * parse.y (dsym): return non-null NODE even if yyerror(). based on a
patch from from Yusuke ENDOH <mame AT tsg.ne.jp>.  [ruby-dev:31085]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-29 02:23:13 +00:00
matz baaa30ec03 * parse.y (assoc_list): odd number check only for NODE_ARRAY.
[ruby-dev:31082]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-28 14:33:45 +00:00
usa 8e11ff411a * parse.y (rb_intern2): unconstify cast.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-27 17:05:03 +00:00
akr d9987aa704 * parse.y (rb_intern2): don't allocate a string object at first.
[ruby-dev:31064]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-27 16:45:56 +00:00
ko1 fd78c2193e * include/ruby/node.h, parse.y, gc.c, iseq.c: remove NODE_CREF.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-27 16:23:49 +00:00
ko1 ed4e57690c * insnhelper.ci, vm.c: complete block parameter support.
post arguments, optional arguments, block argument.
* compile.c, parse.y: fix {|a|} parameter.
* insnshelper.ci, insns.def: revert caller_setup_args() option
  (need_block_check) parameter.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12615 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-25 16:05:17 +00:00
ko1 f58eb1e276 * eval.c: remove ruby_current_node and change eval() prototype.
fix to use rb_sourcefile/line() instead of ruby_sourcefile/line.
* error.c, eval_error.ci, eval_load.c, eval_safe.ci, gc.c,
  include/ruby/intern.h, parse.y, process.c, ruby.c: ditto.
* vm.c: fix spaces.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-24 20:33:04 +00:00
ko1 97ba019c94 * vm.c: some refactoring.
* rename th_* to vm_*.
  * remove unused variables functions.
  * add prototypes.
* blockinlining.c, compile.c, cont.c, eval.c, eval_intern.h,
  eval_jump.h, eval_load.c, inits.c, insns.def, iseq.c, parse.y,
  proc.c, process.c, signal.c, thread.c, vm.c, vm_dump.c,
  vm_evalbody.ci, yarvcore.c, yarvcore.h: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-24 15:42:41 +00:00
matz 967cca2f8d * parse.y (rb_intern2): ID_JUNK test based on len, not by NUL.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-21 14:16:00 +00:00
nobu 3fc180ebeb * parse.y (rb_intern2): name may not be NUL-terminated.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-21 08:12:14 +00:00
nobu 9a7a11564c * parse.y (rb_intern2): use rb_intern2 to intern without trailing
equal sign.

* parse.y (rb_intern2, ripper_id2sym): fixed indent.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-19 19:43:59 +00:00
nobu 942a54302d * parse.y (yycompile): disable trace while creating ruby_debug_lines.
[ruby-talk:253586]

* thread.c (ruby_suppress_tracing): new function to call a function
  with suppressing trace.

* lib/debug.rb, lib/tracer.rb: for YARV.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-18 07:55:45 +00:00
ko1 7567fbf080 * vm.c (th_yield_setup_args): |v| should work as |v,|.
ex) def m;yield 1, 2; end; m{|v| p v} #=> 1
* parse.y: apply above change for "for" statement.
* test/ruby/test_assignment.rb: ditto
* test/ruby/test_basicinstructions.rb: ditto.
* test/ruby/test_iterator.rb: ditto.
* test/ruby/test_yield.rb: ditto.
* compile.c (iseq_compile_each): fix debug.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-15 03:27:33 +00:00
matz 89c2418467 * parse.y (call_args): no allow splat after assocs. takes
consistency over compatibility.

* parse.y (call_args2): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-13 13:25:39 +00:00
nobu 30dbd2a6ba * parse.y (do_block, brace_block): fix line numbers. [ruby-dev:30831]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-10 07:58:09 +00:00