summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-06-02 14:43:10 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-06-02 14:43:10 +0000
commitd2a81a3aa319d7f1c24c32e315dbf2b7c0e099a9 (patch)
tree6ee165b740742964e40b0a5ab444958c28713c6a /parse.y
parent34adacb036e1aac4b6b914e1515e4a907c30a0b7 (diff)
* parse.y: pragma support on ripper. [ruby-dev:26266]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y10
1 files changed, 9 insertions, 1 deletions
diff --git a/parse.y b/parse.y
index 99cab85b7a..b5e040944d 100644
--- a/parse.y
+++ b/parse.y
@@ -4559,7 +4559,7 @@ rb_compile_string(f, s, line)
{
VALUE volatile vparser = rb_parser_s_new();
struct parser_params *parser;
-
+
Data_Get_Struct(vparser, struct parser_params, parser);
lex_gets = lex_get_str;
lex_gets_ptr = 0;
@@ -5359,6 +5359,7 @@ lvar_defined_gen(parser, id)
}
/* emacsen -*- hack */
+#ifndef RIPPER
typedef void (*rb_pragma_setter_t) _((struct parser_params *parser, const char *name, const char *val));
static void pragma_encoding _((struct parser_params *, const char *, const char *));
@@ -5380,6 +5381,7 @@ struct pragma {
static const struct pragma pragmas[] = {
{"coding", pragma_encoding},
};
+#endif
static const char *
pragma_marker(str, len)
@@ -5437,7 +5439,9 @@ parser_pragma(parser, str, len)
/* %r"([^\\s\'\":;]+)\\s*:\\s*(\"(?:\\\\.|[^\"])*\"|[^\"\\s;]+)[\\s;]*" */
while (len > 0) {
+#ifndef RIPPER
const struct pragma *p = pragmas;
+#endif
int n = 0;
for (; len > 0 && *str; str++, --len) {
@@ -5485,6 +5489,7 @@ parser_pragma(parser, str, len)
n = end - beg;
str_copy(name, beg, n);
rb_funcall(name, rb_intern("downcase!"), 0);
+#ifndef RIPPER
do {
if (strncmp(p->name, RSTRING(name)->ptr, n) == 0) {
str_copy(val, vbeg, vend - vbeg);
@@ -5492,6 +5497,9 @@ parser_pragma(parser, str, len)
break;
}
} while (++p < pragmas + sizeof(pragmas) / sizeof(*p));
+#else
+ dispatch2(pragma, name, val);
+#endif
}
return Qtrue;