mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge branch 'ascii' of https://github.com/cremno/mruby into cremno-ascii
This commit is contained in:
+1
-2
@@ -334,8 +334,7 @@ mrb_value mrb_obj_clone(mrb_state *mrb, mrb_value self);
|
||||
|
||||
/* need to include <ctype.h> to use these macros */
|
||||
#ifndef ISPRINT
|
||||
/* #define ISASCII(c) isascii((int)(unsigned char)(c)) */
|
||||
#define ISASCII(c) 1
|
||||
#define ISASCII(c) (!(((int)(unsigned char)(c)) & ~0x7f))
|
||||
#define ISPRINT(c) (ISASCII(c) && isprint((int)(unsigned char)(c)))
|
||||
#define ISSPACE(c) (ISASCII(c) && isspace((int)(unsigned char)(c)))
|
||||
#define ISUPPER(c) (ISASCII(c) && isupper((int)(unsigned char)(c)))
|
||||
|
||||
@@ -258,7 +258,7 @@ check_keyword(const char *buf, const char *word)
|
||||
size_t len = strlen(word);
|
||||
|
||||
/* skip preceding spaces */
|
||||
while (*p && isspace(*p)) {
|
||||
while (*p && isspace((unsigned char)*p)) {
|
||||
p++;
|
||||
}
|
||||
/* check keyword */
|
||||
@@ -268,7 +268,7 @@ check_keyword(const char *buf, const char *word)
|
||||
p += len;
|
||||
/* skip trailing spaces */
|
||||
while (*p) {
|
||||
if (!isspace(*p)) return 0;
|
||||
if (!isspace((unsigned char)*p)) return 0;
|
||||
p++;
|
||||
}
|
||||
return 1;
|
||||
|
||||
@@ -37,27 +37,6 @@ static char utf8len_codepage_zero[256] =
|
||||
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,
|
||||
};
|
||||
|
||||
static const char isspacetable[256] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
#define ascii_isspace(c) isspacetable[(unsigned char)(c)]
|
||||
|
||||
static mrb_int
|
||||
utf8code(unsigned char* p)
|
||||
{
|
||||
@@ -593,7 +572,7 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str)
|
||||
int ai = mrb_gc_arena_save(mrb);
|
||||
c = (unsigned char)*ptr++;
|
||||
if (skip) {
|
||||
if (ascii_isspace(c)) {
|
||||
if (ISSPACE(c)) {
|
||||
beg = ptr - bptr;
|
||||
}
|
||||
else {
|
||||
@@ -602,7 +581,7 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str)
|
||||
if (lim_p && lim <= i) break;
|
||||
}
|
||||
}
|
||||
else if (ascii_isspace(c)) {
|
||||
else if (ISSPACE(c)) {
|
||||
mrb_ary_push(mrb, result, str_subseq(mrb, str, beg, end-beg));
|
||||
mrb_gc_arena_restore(mrb, ai);
|
||||
skip = 1;
|
||||
|
||||
+7
-10
@@ -42,11 +42,7 @@ static void yywarning(parser_state *p, const char *s);
|
||||
static void backref_error(parser_state *p, node *n);
|
||||
static void tokadd(parser_state *p, int32_t c);
|
||||
|
||||
#ifndef isascii
|
||||
#define isascii(c) (((c) & ~0x7f) == 0)
|
||||
#endif
|
||||
|
||||
#define identchar(c) (isalnum(c) || (c) == '_' || !isascii(c))
|
||||
#define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
|
||||
|
||||
typedef unsigned int stack_type;
|
||||
|
||||
@@ -3911,7 +3907,8 @@ parse_string(parser_state *p)
|
||||
return tHD_LITERAL_DELIM;
|
||||
}
|
||||
}
|
||||
} while (ISSPACE(c = nextc(p)));
|
||||
c = nextc(p);
|
||||
} while (ISSPACE(c));
|
||||
pushback(p, c);
|
||||
return tLITERAL_DELIM;
|
||||
}
|
||||
@@ -4205,14 +4202,14 @@ parser_yylex(parser_state *p)
|
||||
static const char end[] = "\n=end";
|
||||
if (peeks(p, begin)) {
|
||||
c = peekc_n(p, sizeof(begin)-1);
|
||||
if (c < 0 || isspace(c)) {
|
||||
if (c < 0 || ISSPACE(c)) {
|
||||
do {
|
||||
if (!skips(p, end)) {
|
||||
yyerror(p, "embedded document meets end of file");
|
||||
return 0;
|
||||
}
|
||||
c = nextc(p);
|
||||
} while (!(c < 0 || isspace(c)));
|
||||
} while (!(c < 0 || ISSPACE(c)));
|
||||
if (c != '\n') skip(p, '\n');
|
||||
p->lineno++;
|
||||
p->column = 0;
|
||||
@@ -4337,7 +4334,7 @@ parser_yylex(parser_state *p)
|
||||
yyerror(p, "incomplete character syntax");
|
||||
return 0;
|
||||
}
|
||||
if (isspace(c)) {
|
||||
if (ISSPACE(c)) {
|
||||
if (!IS_ARG()) {
|
||||
int c2;
|
||||
switch (c) {
|
||||
@@ -5190,7 +5187,7 @@ parser_yylex(parser_state *p)
|
||||
pushback(p, c);
|
||||
}
|
||||
}
|
||||
if (result == 0 && isupper((int)(unsigned char)tok(p)[0])) {
|
||||
if (result == 0 && ISUPPER(tok(p)[0])) {
|
||||
result = tCONSTANT;
|
||||
}
|
||||
else {
|
||||
|
||||
+2
-23
@@ -1728,27 +1728,6 @@ mrb_str_rindex_m(mrb_state *mrb, mrb_value str)
|
||||
return mrb_nil_value();
|
||||
}
|
||||
|
||||
static const char isspacetable[256] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
#define ascii_isspace(c) isspacetable[(unsigned char)(c)]
|
||||
|
||||
/* 15.2.10.5.35 */
|
||||
|
||||
/*
|
||||
@@ -1844,7 +1823,7 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str)
|
||||
int ai = mrb_gc_arena_save(mrb);
|
||||
c = (unsigned char)*ptr++;
|
||||
if (skip) {
|
||||
if (ascii_isspace(c)) {
|
||||
if (ISSPACE(c)) {
|
||||
beg = ptr - bptr;
|
||||
}
|
||||
else {
|
||||
@@ -1853,7 +1832,7 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str)
|
||||
if (lim_p && lim <= i) break;
|
||||
}
|
||||
}
|
||||
else if (ascii_isspace(c)) {
|
||||
else if (ISSPACE(c)) {
|
||||
mrb_ary_push(mrb, result, mrb_str_subseq(mrb, str, beg, end-beg));
|
||||
mrb_gc_arena_restore(mrb, ai);
|
||||
skip = TRUE;
|
||||
|
||||
Reference in New Issue
Block a user