[macruby-changes] [1987] MacRuby/branches/experimental/parse.y

source_changes at macosforge.org source_changes at macosforge.org
Sat Jul 4 23:41:51 PDT 2009


Revision: 1987
          http://trac.macosforge.org/projects/ruby/changeset/1987
Author:   lsansonetti at apple.com
Date:     2009-07-04 23:41:51 -0700 (Sat, 04 Jul 2009)
Log Message:
-----------
ported the ripper API to the new runtime

Modified Paths:
--------------
    MacRuby/branches/experimental/parse.y

Modified: MacRuby/branches/experimental/parse.y
===================================================================
--- MacRuby/branches/experimental/parse.y	2009-07-05 06:41:08 UTC (rev 1986)
+++ MacRuby/branches/experimental/parse.y	2009-07-05 06:41:51 UTC (rev 1987)
@@ -602,7 +602,7 @@
 # define rb_warningS(fmt,a) ripper_warningS(parser, fmt, a)
 static void ripper_warn0(struct parser_params*, const char*);
 static void ripper_warnI(struct parser_params*, const char*, int);
-static void ripper_warnS(struct parser_params*, const char*, const char*);
+//static void ripper_warnS(struct parser_params*, const char*, const char*);
 static void ripper_warning0(struct parser_params*, const char*);
 static void ripper_warningS(struct parser_params*, const char*, const char*);
 #endif
@@ -9993,26 +9993,6 @@
 VALUE rb_parser_get_yydebug(VALUE);
 VALUE rb_parser_set_yydebug(VALUE, VALUE);
 
-#ifndef RIPPER
-static struct parser_params *
-parser_new(void)
-{
-    struct parser_params *p;
-
-    p = ALLOC_N(struct parser_params, 1);
-    MEMZERO(p, struct parser_params, 1);
-    parser_initialize(p);
-    return p;
-}
-
-VALUE
-rb_parser_new(void)
-{
-    struct parser_params *p = parser_new();
-
-    return Data_Wrap_Struct(rb_cData, parser_mark, parser_free, p);
-}
-
 /*
  *  call-seq:
  *    ripper#end_seen?   -> Boolean
@@ -10020,8 +10000,8 @@
  *  Return if parsed source ended by +\_\_END\_\_+.
  *  This number starts from 1.
  */
-VALUE
-rb_parser_end_seen_p(VALUE vparser)
+static VALUE
+rb_parser_end_seen_p_imp(VALUE vparser, SEL sel)
 {
     struct parser_params *parser;
 
@@ -10035,8 +10015,8 @@
  *
  *  Return encoding of the source.
  */
-VALUE
-rb_parser_encoding(VALUE vparser)
+static VALUE
+rb_parser_encoding_imp(VALUE vparser, SEL sel)
 {
     struct parser_params *parser;
 
@@ -10050,8 +10030,8 @@
  *
  *  Get yydebug.
  */
-VALUE
-rb_parser_get_yydebug(VALUE self)
+static VALUE
+rb_parser_get_yydebug_imp(VALUE self, SEL sel)
 {
     struct parser_params *parser;
 
@@ -10065,8 +10045,8 @@
  *
  *  Set yydebug.
  */
-VALUE
-rb_parser_set_yydebug(VALUE self, VALUE flag)
+static VALUE
+rb_parser_set_yydebug_imp(VALUE self, SEL sel, VALUE flag)
 {
     struct parser_params *parser;
 
@@ -10075,6 +10055,51 @@
     return flag;
 }
 
+#ifndef RIPPER
+
+static struct parser_params *
+parser_new(void)
+{
+    struct parser_params *p;
+
+    p = ALLOC_N(struct parser_params, 1);
+    MEMZERO(p, struct parser_params, 1);
+    parser_initialize(p);
+    return p;
+}
+
+VALUE
+rb_parser_new(void)
+{
+    struct parser_params *p = parser_new();
+
+    return Data_Wrap_Struct(rb_cData, parser_mark, parser_free, p);
+}
+
+VALUE
+rb_parser_end_seen_p(VALUE vparser)
+{
+    return rb_parser_end_seen_p_imp(vparser, 0);
+}
+
+VALUE
+rb_parser_encoding(VALUE vparser)
+{
+    return rb_parser_encoding_imp(vparser, 0);
+}
+
+VALUE
+rb_parse_get_yydebug(VALUE self)
+{
+    return rb_parser_get_yydebug_imp(self, 0);
+}
+
+VALUE
+rb_parser_set_yydebug(VALUE self, VALUE flag)
+{
+    return rb_parser_set_yydebug_imp(self, 0, flag);
+}
+
 #ifdef YYMALLOC
 #define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
 #define NEWHEAP() rb_node_newnode(NODE_ALLOCA, 0, (VALUE)parser->heap, 0)
@@ -10355,12 +10380,14 @@
                STR_NEW2(fmt), INT2NUM(a));
 }
 
+#if 0
 static void
 ripper_warnS(struct parser_params *parser, const char *fmt, const char *str)
 {
     rb_funcall(parser->value, rb_intern("warn"), 2,
     	       STR_NEW2(fmt), STR_NEW2(str));
 }
+#endif
 
 static void
 ripper_warning0(struct parser_params *parser, const char *fmt)
@@ -10375,11 +10402,13 @@
                STR_NEW2(fmt), STR_NEW2(str));
 }
 
+#if 0
 static VALUE
 ripper_lex_get_generic(struct parser_params *parser, VALUE src)
 {
     return rb_funcall(src, ripper_id_gets, 0);
 }
+#endif
 
 static VALUE
 ripper_s_allocate(VALUE klass)
@@ -10407,21 +10436,24 @@
  *  See also Ripper#parse and Ripper.parse.
  */
 static VALUE
-ripper_initialize(int argc, VALUE *argv, VALUE self)
+ripper_initialize(VALUE self, SEL sel, int argc, VALUE *argv)
 {
     struct parser_params *parser;
     VALUE src, fname, lineno;
 
     Data_Get_Struct(self, struct parser_params, parser);
     rb_scan_args(argc, argv, "12", &src, &fname, &lineno);
+#if 0 // TODO
     if (rb_obj_respond_to(src, ripper_id_gets, 0)) {
         parser->parser_lex_gets = ripper_lex_get_generic;
     }
-    else {
+    else
+#endif 
+    {
         StringValue(src);
         parser->parser_lex_gets = lex_get_str;
     }
-    parser->parser_lex_input = src;
+    GC_WB(&parser->parser_lex_input, src);
     parser->eofp = Qfalse;
     if (NIL_P(fname)) {
         fname = STR_NEW2("(ripper)");
@@ -10431,8 +10463,8 @@
     }
     parser_initialize(parser);
 
-    parser->parser_ruby_sourcefile_string = fname;
-    parser->parser_ruby_sourcefile = RSTRING_PTR(fname);
+    GC_WB(&parser->parser_ruby_sourcefile_string, fname);
+    parser->parser_ruby_sourcefile = (char *)RSTRING_PTR(fname);
     parser->parser_ruby_sourceline = NIL_P(lineno) ? 0 : NUM2INT(lineno) - 1;
 
     return Qnil;
@@ -10474,7 +10506,7 @@
  *  Start parsing and returns the value of the root action.
  */
 static VALUE
-ripper_parse(VALUE self)
+ripper_parse(VALUE self, SEL sel)
 {
     struct parser_params *parser;
 
@@ -10502,7 +10534,7 @@
  *  This number starts from 0.
  */
 static VALUE
-ripper_column(VALUE self)
+ripper_column(VALUE self, SEL sel)
 {
     struct parser_params *parser;
     long col;
@@ -10524,7 +10556,7 @@
  *  This number starts from 1.
  */
 static VALUE
-ripper_lineno(VALUE self)
+ripper_lineno(VALUE self, SEL sel)
 {
     struct parser_params *parser;
 
@@ -10563,15 +10595,15 @@
 
     Ripper = rb_define_class("Ripper", rb_cObject);
     rb_define_const(Ripper, "Version", rb_usascii_str_new2(RIPPER_VERSION));
-    rb_define_alloc_func(Ripper, ripper_s_allocate);
-    rb_define_method(Ripper, "initialize", ripper_initialize, -1);
-    rb_define_method(Ripper, "parse", ripper_parse, 0);
-    rb_define_method(Ripper, "column", ripper_column, 0);
-    rb_define_method(Ripper, "lineno", ripper_lineno, 0);
-    rb_define_method(Ripper, "end_seen?", rb_parser_end_seen_p, 0);
-    rb_define_method(Ripper, "encoding", rb_parser_encoding, 0);
-    rb_define_method(Ripper, "yydebug", rb_parser_get_yydebug, 0);
-    rb_define_method(Ripper, "yydebug=", rb_parser_set_yydebug, 1);
+    rb_objc_define_method(*(VALUE *)Ripper, "alloc", ripper_s_allocate, 0);
+    rb_objc_define_method(Ripper, "initialize", ripper_initialize, -1);
+    rb_objc_define_method(Ripper, "parse", ripper_parse, 0);
+    rb_objc_define_method(Ripper, "column", ripper_column, 0);
+    rb_objc_define_method(Ripper, "lineno", ripper_lineno, 0);
+    rb_objc_define_method(Ripper, "end_seen?", rb_parser_end_seen_p_imp, 0);
+    rb_objc_define_method(Ripper, "encoding", rb_parser_encoding_imp, 0);
+    rb_objc_define_method(Ripper, "yydebug", rb_parser_get_yydebug_imp, 0);
+    rb_objc_define_method(Ripper, "yydebug=", rb_parser_set_yydebug_imp, 1);
 #ifdef RIPPER_DEBUG
     rb_define_method(rb_mKernel, "assert_Qundef", ripper_assert_Qundef, 2);
     rb_define_method(rb_mKernel, "rawVALUE", ripper_value, 1);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090704/ad0409d9/attachment-0001.html>


More information about the macruby-changes mailing list