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

643 Коммитов

Автор SHA1 Сообщение Дата
akr c94a89a739 * parse.y (rb_id2str): fill klass of returned string as rb_cString.
some strings are allocated before rb_cString is created.
  This prevents a "called on terminated object" error by
  ObjectSpace.each_object(Module) {|m| p m.name }.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24 19:25:45 +00:00
akr 5b809a28f8 * include/ruby/encoding.h, encoding.c, re.c, io.c, parse.y, numeric.c,
ruby.c, transcode.c: rename rb_ascii_encoding. to
  rb_ascii8bit_encoding.  rb_ascii_encoding is ambiguous with 
  ASCII-8BIT and US-ASCII.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-22 23:47:18 +00:00
nobu e11ed98f88 * parse.y (reg_named_capture_assign_iter): allows non-ascii names and
get rid of reserved word IDs.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-22 05:30:37 +00:00
matz 1d420d7c38 * parse.y (reg_named_capture_assign_iter): just ignore the
captures that do not have valid local variable name.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-22 01:36:35 +00:00
matz c6b8f89c2e * parse.y (reg_named_capture_assign_iter): captured name should
not be reserved word.  a patch from Keita Yamaguchi
  <keita.yamaguchi AT gmail.com> in [ruby-dev:32675].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-22 01:32:21 +00:00
usa b211ed6460 * parse.y (parser_str_new, rb_intern3): rb_default_encoding() renamed.
* ext/nkf/nkf.c (rb_nkf_putchar): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 20:11:17 +00:00
matz 1d41fe84f9 * parse.y (command): block from cmd_brace_block was ignored.
[ruby-dev:32644]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 18:02:19 +00:00
nobu 12df6cf7ce * encoding.c (rb_enc_init): use enc_register_at() directly.
* encoding.c (rb_utf8_encoding): returns utf-8 encoding.

* include/ruby/encoding.h (rb_utf8_encoding): prototyped.

* parse.y (UTF8_ENC): uses rb_utf8_encoding().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 06:59:48 +00:00
nobu 9fbc6596cc * keywords, parse.y (__ENCODING__): represent script encoding.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 03:22:22 +00:00
akr 4cf437519f * regerror.c, string.c, io.c, lib/getoptlong.rb, lib/net/imap.rb,
compile.c, sprintf.c, parse.y, ext/win32ole/win32ole.c,
  ext/tk/sample/demos-en/entry3.rb, ext/tk/lib/tcltk.rb,
  ext/openssl/ossl_bn.c, numeric.c, vm.c,
  benchmark/bm_so_meteor_contest.rb, bignum.c, ruby.c: don't "illegal"
  for non law violation context.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14377 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 02:31:11 +00:00
nobu 66417115a2 * parse.y (reg_named_capture_assign_iter): get rid of creating
unnecessary ID.

* parse.y (rb_enc_symname2_p): check for non-nul-terminated string.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-19 07:32:00 +00:00
nobu 26538a2091 * parse.y (reg_named_capture_assign_iter): remove C99 dependency.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14321 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-19 07:26:37 +00:00
akr 2d01290cfd * parse.y (arg tMATCH arg): call reg_named_capture_assign_gen if regexp
literal is used.
  (reg_named_capture_assign_gen): assign the result of named capture
  into local variables.
  [ruby-dev:32588]

* re.c: document the assignment by named captures.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14297 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-18 11:26:24 +00:00
matz 2e0e02d358 * parse.y (op_tbl): remove duplication to avoid symbol aliases.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-18 05:50:37 +00:00
nobu bf04c0946f * parse.y (parser_encode_length): chomp eol style modifiers.
* parse.y (parser_magic_comment): ditto.

* parse.y (set_file_encoding): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-17 16:21:21 +00:00
akr b92cee1ddb * re.c, regerror.c, string.c, parse.y, ruby.c, file.c:
use capital letter for \xHH notation.  [ruby-dev:32511]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14202 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-12 14:30:54 +00:00
matz 91142c95bb * parse.y (expr): 'not' and '!' should act as conditional
expression.   [ruby-dev:32548]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-12 03:45:36 +00:00
matz 6bd65de203 * parse.y (shadowing_lvar_gen): no duplicate error for "_".
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14186 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-10 16:22:52 +00:00
matz 6e12ae857e * parse.y (parser_yylex): wrong token was generated. [ruby-dev:32498]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-09 23:16:54 +00:00
akr f4592d7bb0 * re.c (rb_reg_expr_str): use \xHH instead of \OOO.
* regerror.c (to_ascii): ditto.
  (onig_snprintf_with_pattern): ditto.
  (onig_snprintf_with_pattern): ditto.

* string.c (rb_str_inspect): ditto.
  (rb_str_dump): ditto.

* parse.y (parser_yylex): ditto.

* ruby.c (proc_options): ditto.

* file.c (rb_f_test): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14164 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-09 21:48:05 +00:00
matz 9d8075b99c * parse.y (expr): redefinable not (!) operator.
* parse.y (arg): ditto.

* object.c (rb_obj_not): new method "!".

* object.c (rb_obj_not_equal): new method "!=".

* object.c (rb_obj_not_match): new method "!~".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14162 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-09 16:39:49 +00:00
nobu 0076f3b3f8 * parse.y (parser_magic_comment): delimits with a semicolon.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14150 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-09 03:03:18 +00:00
akr b12bb50149 * re.c (rb_reg_check_preprocess): new function for validating regexp
fragment.

* parse.y (regexp): invoke reg_fragment_check.
  (reg_fragment_check): defined.
  (reg_fragment_check_gen): defined.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14133 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-08 07:21:05 +00:00
akr f1b7e60cb9 * encoding.c (rb_enc_mbclen): make it never fail.
(rb_enc_nth): don't check the return value of rb_enc_mbclen.
  (rb_enc_strlen): ditto.
  (rb_enc_precise_mbclen): return needmore(1) if e <= p.
  (rb_enc_get_ascii): new function for extracting ASCII character.

* include/ruby/encoding.h (rb_enc_get_ascii): declared.

* include/ruby/regex.h (ismbchar): removed.

* re.c (rb_reg_expr_str): use rb_enc_get_ascii.
  (unescape_escaped_nonascii): use rb_enc_precise_mbclen to determine
  the termination of escaped non-ASCII character.
  (unescape_nonascii): use rb_enc_precise_mbclen.
  (rb_reg_quote): use rb_enc_get_ascii.
  (rb_reg_regsub): use rb_enc_get_ascii.

* string.c (rb_str_reverse) don't check the return value of
  rb_enc_mbclen.
  (rb_str_split_m): don't call rb_enc_mbclen with e <= p.

* parse.y (is_identchar): use ISASCII.
  (parser_ismbchar): removed.
  (parser_precise_mbclen): new macro.
  (parser_isascii): new macro.
  (parser_tokadd_mbchar): use parser_precise_mbclen to check invalid
  character precisely.
  (parser_tokadd_string): use parser_isascii.
  (parser_yylex): ditto.
  (is_special_global_name): don't call is_identchar with e <= p.
  (rb_enc_symname_p): ditto.

  [ruby-dev:32455]

* ext/tk/sample/tkextlib/vu/canvSticker2.rb: remove coding cookie
  because the encoding is not UTF-8.  [ruby-dev:32475]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14131 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-08 02:50:43 +00:00
matz 0f8e9a24c1 * parse.y (arg): typo fixed ("!" -> "|") in the ripper code.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14125 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-07 02:52:37 +00:00
matz aff0d98a5b * parse.y (arg): tUPLUS no longer works as identity operation any
more.  inspired by [ruby-talk:265532].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14124 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-07 02:51:31 +00:00
nobu 0af432ce08 * parse.y (rb_intern3): fix to changing encoding to default, and
uncommented r13835, which is rare but not impossible.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14108 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-05 06:25:56 +00:00
nobu 8ea5018d20 * parse.y (yycompile): get rid of tracing while parsing.
[ruby-dev:31351]

* thread.c (ruby_suppress_tracing): added a new parameter, which
  directs to call func always.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14104 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-05 04:41:27 +00:00
nobu 1524572ce9 * parse.y (parser_tokadd_mbchar): fix for ASCII chars. [ruby-dev:32432]
* parse.y (parser_parse_string, parser_here_document): prevent false
  error messages.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-02 13:08:03 +00:00
nobu 040e3e7bdd * parse.y (parser_tokadd_mbchar): check insufficient multibyte char.
[ruby-dev:32429]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-02 06:47:59 +00:00
akr 21729a1c77 * parse.y (regexp): fix /#{}\xa1\xa2/e to be EUC-JP.
(reg_fragment_setenc_gen): extracted from reg_compile_gen.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-02 00:16:24 +00:00
akr 7ff702406a * include/ruby/intern.h (rb_uv_to_utf8): declared.
* re.c (rb_reg_preprocess): new function for dynamic regexp with
  \u{} such as Regexp.new("\\u{6666}").
  (rb_reg_prepare_re): preprocess regexp for recompiling.
  (read_escaped_byte): new function.
  (unescape_escaped_nonascii): new function.
  (append_utf8): new function.
  (unescape_unicode_list): new function.
  (unescape_unicode_bmp): new function.
  (unescape_nonascii): new function.
  (rb_reg_initialize): preprocess regexp.

* pack.c (rb_uv_to_utf8): renamed from uv_to_utf8.

* parse.y (STR_NEW3): take func instead of has8 and hasmb.
  (parser_str_new): use default coderange mechanism except for regexp.
  (parser_tokadd_utf8): copy regexp source as-is.
  (parser_read_escape): UTF-8 stuff removed.
  (parser_tokadd_escape): has8bit and hasmb removed.
  (parser_tokadd_string): fix 8-bit single byte character with \u.
  (parser_parse_string): has8bit and hasmb removed.
  (parser_here_document): has8bit and hasmb removed.
  (parser_yylex): call parser_tokadd_utf8 instead of read_escape for
  UTF-8 character.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-01 16:56:19 +00:00
matz d5bd9d1593 * encoding.c: rename primary_encoding -> default_external (encoding).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14069 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-01 14:05:53 +00:00
nobu 4afa82056c * parse.y (newline_node): always remove NODE_BEGIN.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14060 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-30 18:34:34 +00:00
nobu 058ec52c0d * parse.y (stmt): remove unnecessary NODE_BEGIN. [ruby-core:13814]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14045 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-29 07:59:12 +00:00
akr f5ee0fd521 * include/ruby/encoding.h, encoding.c, re.c, string.c, parse.y:
rename ENC_CODERANGE_SINGLE to ENC_CODERANGE_7BIT.
  rename ENC_CODERANGE_MULTI to ENC_CODERANGE_8BIT.
  Because single byte 8bit character, such as Shift_JIS 1byte katakana,
  is represented by ENC_CODERANGE_MULTI even if it is not multi byte.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-27 02:21:17 +00:00
akr 2109a52503 * re.c (REG_CASESTATE): unused macro removed.
(rb_reg_prepare_re): check encoding difference.
  (rb_reg_initialize): check 8bit byte.

* parse.y (parser_tokadd_escape): fix has8bit.

  [ruby-dev:32113]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-23 06:30:26 +00:00
ko1 01dacec2b4 * include/ruby/ruby.h: rename RFloat#double_value -> float_value.
* numeric.c, parse.y: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-20 11:35:12 +00:00
nobu 64ba5303fd * parse.y (parser_read_escape): has8bit flag may be set with control
escape.  [ruby-core:13722]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13981 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-20 06:09:03 +00:00
nobu d7e4c1e66b * parse.y (parser_prepare): set begging after BOM if exists.
[ruby-core:13718]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-20 06:08:16 +00:00
matz 7a978073c9 * parse.y (parser_yylex): should clear parser->tokp as well.
[ruby-dev:32250]

* parse.y: remove NEED_ASSOC that break test_parser_events.

* parse.y (parser_yylex): should not decrement line numbers at the
  end of file.

* file.c (rb_find_file_ext): search .rb files first through in the
  loadpath.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-19 07:10:09 +00:00
nobu 9417595993 * parse.y (parser_read_escape): disallow control and meta modifiers
for non-ASCII characters.  [ruby-core:13685]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13962 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-18 16:53:12 +00:00
ko1 25c0cb981a * include/ruby/ruby.h: introduce 2 macros:
RFLOAT_VALUE(v), DOUBLE2NUM(dbl).
  Rename RFloat#value -> RFloat#double_value.
  Do not touch RFloat#double_value directly.
* bignum.c, insns.def, marshal.c, math.c, numeric.c, object.c,
  pack.c, parse.y, process.c, random.c, sprintf.c, string.c,
  time.c: apply above changes.
* ext/dl/mkcallback.rb, ext/json/ext/generator/generator.c:
  ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-13 16:00:53 +00:00
nobu d5a3389886 * common.mk (parse.c), ext/ripper/depend (ripper.c): process after
bison with sed.  [ruby-dev:32204]

* ruby.c (proc_options): use yydebug in cmdline_options.

* ruby.c (process_options): set yydebug flag of parser.

* parse.y (yydebug): moved into struct parser_params.

* parse.y (rb_parser_get_yydebug, rb_parser_set_yydebug): parser
  generic methods.

* */Makefile.sub (parse.c): moved to common.mk.

* tool/ytab.sed: comment out yydebug definition, and substitute
  yyerror with parser_yyerror.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13908 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-13 12:41:41 +00:00
davidflanagan 03919fd210 * parse.y: use ASCII encoding for string literals that are
7-bit clean, fixing regression from my previous patch



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-10 05:45:52 +00:00
nobu 87f538563f * parse.y (parser_nextc): added single line read forward buffer.
* parse.y (parser_yylex): adjust line number for fluent interface.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13858 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-09 14:33:18 +00:00
davidflanagan 453889cf0c * parse.y: fix segfault with \x escapes in regexps
delete unused #if 0 code regions from previous patch


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13838 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-08 06:14:45 +00:00
usa 219d2315af * parse.y (parser_read_escape): remove C99/gcc-ism.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-08 03:14:16 +00:00
davidflanagan baae1c4075 * parse.y: patch, based on Nobu's, work to support \u escapes
also modifications for better coderange detection
* test/ruby/test_unicode_escapes.rb: test cases
* test/ruby/test_mixed_unicode_escapes.rb: mixed encoding test cases



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13836 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-07 22:55:27 +00:00
davidflanagan 89397d2f6e * parse.y (rb_intern3): commented out broken code that prevented
correct interning of multi-byte symbols.  Without this patch
  :x==:x is false when x is a multi-byte character. 



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-07 22:17:58 +00:00