[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