From 8d234098aa97dc410da49f6ede8549a080662f19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Lu=CC=88tke?= Date: Tue, 30 Oct 2012 13:27:18 -0400 Subject: [PATCH] Initial checkin --- Rakefile | 12 +- ext/liquid/Makefile | 4 +- ext/liquid/liquid_context.c | 338 +++++ ext/liquid/liquid_context.leg | 47 + ext/liquid/liquid_ext.bundle | Bin 28572 -> 0 bytes ext/liquid/liquid_ext.c | 2629 +-------------------------------- ext/liquid/liquid_ext.o | Bin 41492 -> 0 bytes ext/liquid/liquid_ext.rl | 159 -- ext/liquid/mkmf.log | 22 - lib/liquid_ext.bundle | Bin 28572 -> 0 bytes 10 files changed, 396 insertions(+), 2815 deletions(-) create mode 100644 ext/liquid/liquid_context.c create mode 100644 ext/liquid/liquid_context.leg delete mode 100755 ext/liquid/liquid_ext.bundle delete mode 100644 ext/liquid/liquid_ext.o delete mode 100644 ext/liquid/liquid_ext.rl delete mode 100644 ext/liquid/mkmf.log delete mode 100755 lib/liquid_ext.bundle diff --git a/Rakefile b/Rakefile index 5fdcef8..ae13329 100755 --- a/Rakefile +++ b/Rakefile @@ -9,11 +9,11 @@ require 'rubygems/package_task' task :default => [:compile, :test] -task :ragel do - sh "find . -name '*.rl' | xargs ragel -C -G2" +task :gen do + sh "leg -oext/liquid/liquid_context.c ext/liquid/liquid_context.leg" end -task :compile => [:ragel, :liquid_ext] +task :compile => [:gen, :liquid_ext] extension = "liquid_ext" ext = "ext/liquid" @@ -21,7 +21,7 @@ ext_so = "#{ext}/#{extension}.#{RbConfig::CONFIG['DLEXT']}" ext_files = FileList[ "#{ext}/*.c", "#{ext}/*.h", - "#{ext}/*.rl", + "#{ext}/*.leg", "#{ext}/extconf.rb", "#{ext}/Makefile", "lib" @@ -32,7 +32,7 @@ task "lib" do end desc "Builds just the #{extension} extension" -task extension.to_sym => [:ragel, "#{ext}/Makefile", ext_so ] +task extension.to_sym => [:gen, "#{ext}/Makefile", ext_so ] file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do Dir.chdir(ext) do ruby "extconf.rb" end @@ -45,7 +45,7 @@ file ext_so => ext_files do cp ext_so, "lib" end -Rake::TestTask.new(:test => [:ragel, 'liquid_ext']) do |t| +Rake::TestTask.new(:test => [:gen, 'liquid_ext']) do |t| t.libs << '.' << 'lib' << 'test' t.test_files = FileList['test/liquid/**/*_test.rb'] t.verbose = false diff --git a/ext/liquid/Makefile b/ext/liquid/Makefile index 42d30f5..d02df3c 100644 --- a/ext/liquid/Makefile +++ b/ext/liquid/Makefile @@ -115,8 +115,8 @@ extout_prefix = target_prefix = LOCAL_LIBS = LIBS = -lc -lpthread -ldl -lobjc -SRCS = liquid_ext.c -OBJS = liquid_ext.o +SRCS = liquid_context.c liquid_ext.c +OBJS = liquid_context.o liquid_ext.o TARGET = liquid_ext DLLIB = $(TARGET).bundle EXTSTATIC = diff --git a/ext/liquid/liquid_context.c b/ext/liquid/liquid_context.c new file mode 100644 index 0000000..ced68e7 --- /dev/null +++ b/ext/liquid/liquid_context.c @@ -0,0 +1,338 @@ +/* A recursive-descent parser generated by peg 0.1.9 */ + +#include +#include +#include +#define YYRULECOUNT 1 + +#include + +#define YYSTYPE VALUE +#define YY_CTX_LOCAL +#define YY_CTX_MEMBERS VALUE rb_tokens; char *p; int p_len; +#define YY_DEBUG + +#define YY_INPUT(buf, result, max_size) { \ + result = ctx->p_len; \ + if (result>0 || EOF == ctx->p[0]) { \ + if (max_size < result) { result = max_size; } \ + strncpy(buf, ctx->p, result); \ + buf[result] = '\0'; \ + yyprintf((stderr, "\nREFILLING %d chars now:<%s>", result, buf)); \ + ctx->p += result; ctx->p_len -= result; \ + yyprintf((stderr, "\nREFILLING DONE size left: %d <%s>", ctx->p_len, ctx->p)); \ + } \ + } + +#ifndef YY_LOCAL +#define YY_LOCAL(T) static T +#endif +#ifndef YY_ACTION +#define YY_ACTION(T) static T +#endif +#ifndef YY_RULE +#define YY_RULE(T) static T +#endif +#ifndef YY_PARSE +#define YY_PARSE(T) T +#endif +#ifndef YYPARSE +#define YYPARSE yyparse +#endif +#ifndef YYPARSEFROM +#define YYPARSEFROM yyparsefrom +#endif +#ifndef YY_INPUT +#define YY_INPUT(buf, result, max_size) \ + { \ + int yyc= getchar(); \ + result= (EOF == yyc) ? 0 : (*(buf)= yyc, 1); \ + yyprintf((stderr, "<%c>", yyc)); \ + } +#endif +#ifndef YY_BEGIN +#define YY_BEGIN ( ctx->begin= ctx->pos, 1) +#endif +#ifndef YY_END +#define YY_END ( ctx->end= ctx->pos, 1) +#endif +#ifdef YY_DEBUG +# define yyprintf(args) fprintf args +#else +# define yyprintf(args) +#endif +#ifndef YYSTYPE +#define YYSTYPE int +#endif + +#ifndef YY_PART + +typedef struct _yycontext yycontext; +typedef void (*yyaction)(yycontext *ctx, char *yytext, int yyleng); +typedef struct _yythunk { int begin, end; yyaction action; struct _yythunk *next; } yythunk; + +struct _yycontext { + char *buf; + int buflen; + int pos; + int limit; + char *text; + int textlen; + int begin; + int end; + int textmax; + yythunk *thunks; + int thunkslen; + int thunkpos; + YYSTYPE yy; + YYSTYPE *val; + YYSTYPE *vals; + int valslen; +#ifdef YY_CTX_MEMBERS + YY_CTX_MEMBERS +#endif +}; + +#ifdef YY_CTX_LOCAL +#define YY_CTX_PARAM_ yycontext *yyctx, +#define YY_CTX_PARAM yycontext *yyctx +#define YY_CTX_ARG_ yyctx, +#define YY_CTX_ARG yyctx +#else +#define YY_CTX_PARAM_ +#define YY_CTX_PARAM +#define YY_CTX_ARG_ +#define YY_CTX_ARG +yycontext yyctx0; +yycontext *yyctx= &yyctx0; +#endif + +YY_LOCAL(int) yyrefill(yycontext *ctx) +{ + int yyn; + while (ctx->buflen - ctx->pos < 512) + { + ctx->buflen *= 2; + ctx->buf= (char *)realloc(ctx->buf, ctx->buflen); + } + YY_INPUT((ctx->buf + ctx->pos), yyn, (ctx->buflen - ctx->pos)); + if (!yyn) return 0; + ctx->limit += yyn; + return 1; +} + +YY_LOCAL(int) yymatchDot(yycontext *ctx) +{ + if (ctx->pos >= ctx->limit && !yyrefill(ctx)) return 0; + ++ctx->pos; + return 1; +} + +YY_LOCAL(int) yymatchChar(yycontext *ctx, int c) +{ + if (ctx->pos >= ctx->limit && !yyrefill(ctx)) return 0; + if ((unsigned char)ctx->buf[ctx->pos] == c) + { + ++ctx->pos; + yyprintf((stderr, " ok yymatchChar(ctx, %c) @ %s\n", c, ctx->buf+ctx->pos)); + return 1; + } + yyprintf((stderr, " fail yymatchChar(ctx, %c) @ %s\n", c, ctx->buf+ctx->pos)); + return 0; +} + +YY_LOCAL(int) yymatchString(yycontext *ctx, char *s) +{ + int yysav= ctx->pos; + while (*s) + { + if (ctx->pos >= ctx->limit && !yyrefill(ctx)) return 0; + if (ctx->buf[ctx->pos] != *s) + { + ctx->pos= yysav; + return 0; + } + ++s; + ++ctx->pos; + } + return 1; +} + +YY_LOCAL(int) yymatchClass(yycontext *ctx, unsigned char *bits) +{ + int c; + if (ctx->pos >= ctx->limit && !yyrefill(ctx)) return 0; + c= (unsigned char)ctx->buf[ctx->pos]; + if (bits[c >> 3] & (1 << (c & 7))) + { + ++ctx->pos; + yyprintf((stderr, " ok yymatchClass @ %s\n", ctx->buf+ctx->pos)); + return 1; + } + yyprintf((stderr, " fail yymatchClass @ %s\n", ctx->buf+ctx->pos)); + return 0; +} + +YY_LOCAL(void) yyDo(yycontext *ctx, yyaction action, int begin, int end) +{ + while (ctx->thunkpos >= ctx->thunkslen) + { + ctx->thunkslen *= 2; + ctx->thunks= (yythunk *)realloc(ctx->thunks, sizeof(yythunk) * ctx->thunkslen); + } + ctx->thunks[ctx->thunkpos].begin= begin; + ctx->thunks[ctx->thunkpos].end= end; + ctx->thunks[ctx->thunkpos].action= action; + ++ctx->thunkpos; +} + +YY_LOCAL(int) yyText(yycontext *ctx, int begin, int end) +{ + int yyleng= end - begin; + if (yyleng <= 0) + yyleng= 0; + else + { + while (ctx->textlen < (yyleng + 1)) + { + ctx->textlen *= 2; + ctx->text= (char *)realloc(ctx->text, ctx->textlen); + } + memcpy(ctx->text, ctx->buf + begin, yyleng); + } + ctx->text[yyleng]= '\0'; + return yyleng; +} + +YY_LOCAL(void) yyDone(yycontext *ctx) +{ + int pos; + for (pos= 0; pos < ctx->thunkpos; ++pos) + { + yythunk *thunk= &ctx->thunks[pos]; + int yyleng= thunk->end ? yyText(ctx, thunk->begin, thunk->end) : thunk->begin; + yyprintf((stderr, "DO [%d] %p %s\n", pos, thunk->action, ctx->text)); + thunk->action(ctx, ctx->text, yyleng); + } + ctx->thunkpos= 0; +} + +YY_LOCAL(void) yyCommit(yycontext *ctx) +{ + if ((ctx->limit -= ctx->pos)) + { + memmove(ctx->buf, ctx->buf + ctx->pos, ctx->limit); + } + ctx->begin -= ctx->pos; + ctx->end -= ctx->pos; + ctx->pos= ctx->thunkpos= 0; +} + +YY_LOCAL(int) yyAccept(yycontext *ctx, int tp0) +{ + if (tp0) + { + fprintf(stderr, "accept denied at %d\n", tp0); + return 0; + } + else + { + yyDone(ctx); + yyCommit(ctx); + } + return 1; +} + +YY_LOCAL(void) yyPush(yycontext *ctx, char *text, int count) { ctx->val += count; } +YY_LOCAL(void) yyPop(yycontext *ctx, char *text, int count) { ctx->val -= count; } +YY_LOCAL(void) yySet(yycontext *ctx, char *text, int count) { ctx->val[count]= ctx->yy; } + +#endif /* YY_PART */ + +#define YYACCEPT yyAccept(ctx, yythunkpos0) + +YY_RULE(int) yy_grammar(yycontext *ctx); /* 1 */ + +YY_ACTION(void) yy_1_grammar(yycontext *ctx, char *yytext, int yyleng) +{ +#define yy ctx->yy +#define yypos ctx->pos +#define yythunkpos ctx->thunkpos + yyprintf((stderr, "do yy_1_grammar\n")); + ; +#undef yythunkpos +#undef yypos +#undef yy +} + +YY_RULE(int) yy_grammar(yycontext *ctx) +{ int yypos0= ctx->pos, yythunkpos0= ctx->thunkpos; + yyprintf((stderr, "%s\n", "grammar")); yyText(ctx, ctx->begin, ctx->end); if (!(YY_BEGIN)) goto l1; if (!yymatchDot(ctx)) goto l1; + l2:; + { int yypos3= ctx->pos, yythunkpos3= ctx->thunkpos; if (!yymatchDot(ctx)) goto l3; goto l2; + l3:; ctx->pos= yypos3; ctx->thunkpos= yythunkpos3; + } yyText(ctx, ctx->begin, ctx->end); if (!(YY_END)) goto l1; yyDo(ctx, yy_1_grammar, ctx->begin, ctx->end); + yyprintf((stderr, " ok %s @ %s\n", "grammar", ctx->buf+ctx->pos)); + return 1; + l1:; ctx->pos= yypos0; ctx->thunkpos= yythunkpos0; + yyprintf((stderr, " fail %s @ %s\n", "grammar", ctx->buf+ctx->pos)); + return 0; +} + +#ifndef YY_PART + +typedef int (*yyrule)(yycontext *ctx); + +YY_PARSE(int) YYPARSEFROM(YY_CTX_PARAM_ yyrule yystart) +{ + int yyok; + if (!yyctx->buflen) + { + yyctx->buflen= 1024; + yyctx->buf= (char *)malloc(yyctx->buflen); + yyctx->textlen= 1024; + yyctx->text= (char *)malloc(yyctx->textlen); + yyctx->thunkslen= 32; + yyctx->thunks= (yythunk *)malloc(sizeof(yythunk) * yyctx->thunkslen); + yyctx->valslen= 32; + yyctx->vals= (YYSTYPE *)malloc(sizeof(YYSTYPE) * yyctx->valslen); + yyctx->begin= yyctx->end= yyctx->pos= yyctx->limit= yyctx->thunkpos= 0; + } + yyctx->begin= yyctx->end= yyctx->pos; + yyctx->thunkpos= 0; + yyctx->val= yyctx->vals; + yyok= yystart(yyctx); + if (yyok) yyDone(yyctx); + yyCommit(yyctx); + return yyok; +} + +YY_PARSE(int) YYPARSE(YY_CTX_PARAM) +{ + return YYPARSEFROM(YY_CTX_ARG_ yy_grammar); +} + +#endif + + +VALUE liquid_context_parse_impl(VALUE self, VALUE text) { + char *p; + int len; + yycontext ctx; + + memset(&ctx, 0, sizeof(yycontext)); + ctx.p = RSTRING_PTR(text); + ctx.p_len = (int) RSTRING_LEN(text); + ctx.rb_tokens = rb_ary_new(); + + yyprintf((stderr, "About to start: %s %d\n", ctx.p, ctx.p_len)); + + //while(yyparse(&ctx)) + // ; + + yyparse(&ctx); + yyparse(&ctx); + yyparse(&ctx); + + return ctx.rb_tokens; +} diff --git a/ext/liquid/liquid_context.leg b/ext/liquid/liquid_context.leg new file mode 100644 index 0000000..116f159 --- /dev/null +++ b/ext/liquid/liquid_context.leg @@ -0,0 +1,47 @@ + +%{ +#include + +#define YYSTYPE VALUE +#define YY_CTX_LOCAL +#define YY_CTX_MEMBERS VALUE rb_tokens; char *p; int p_len; +#define YY_DEBUG + +#define YY_INPUT(buf, result, max_size) { \ + result = ctx->p_len; \ + if (result>0 || EOF == ctx->p[0]) { \ + if (max_size < result) { result = max_size; } \ + strncpy(buf, ctx->p, result); \ + buf[result] = '\0'; \ + yyprintf((stderr, "\nREFILLING %d chars now:<%s>", result, buf)); \ + ctx->p += result; ctx->p_len -= result; \ + yyprintf((stderr, "\nREFILLING DONE size left: %d <%s>", ctx->p_len, ctx->p)); \ + } \ + } +%} + +grammar = <.+> { } + +%% + +VALUE liquid_context_parse_impl(VALUE self, VALUE text) { + char *p; + int len; + yycontext ctx; + + memset(&ctx, 0, sizeof(yycontext)); + ctx.p = RSTRING_PTR(text); + ctx.p_len = (int) RSTRING_LEN(text); + ctx.rb_tokens = rb_ary_new(); + + yyprintf((stderr, "About to start: %s %d\n", ctx.p, ctx.p_len)); + + //while(yyparse(&ctx)) + // ; + + yyparse(&ctx); + yyparse(&ctx); + yyparse(&ctx); + + return ctx.rb_tokens; +} \ No newline at end of file diff --git a/ext/liquid/liquid_ext.bundle b/ext/liquid/liquid_ext.bundle deleted file mode 100755 index 68dd5b6622ab9fa3d6be54dd3a2b82c6db565f1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28572 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 w_9;}r52?)$!YSRvqiR#OJft?|G - -#line 108 "./ext/liquid/liquid_ext.rl" - - - -#line 16 "./ext/liquid/liquid_ext.c" -static const int fsm_start = 1; -static const int fsm_error = 0; - -static const int fsm_en_main = 1; - - -#line 111 "./ext/liquid/liquid_ext.rl" - -// def self.emit(sym, data, tokens) -// puts "emitting: #{sym} -> #{data.inspect}" if $VERBOSE -// tokens.push [sym, data] -// end - -#define EMIT(sym, data) rb_ary_push(tokens, rb_ary_new3(2, ID2SYM(rb_intern(sym)), data)); - - -void liquid_context_parse_impl(VALUE text, VALUE tokens) -{ - char *p; - char *pe; - char *eof; - char *mark; - int cs, res = 0; - - if (RSTRING_LEN(text) <= 0) { - return; - } - - mark = p = RSTRING_PTR(text); - eof = pe = RSTRING_PTR(text) + RSTRING_LEN(text); - - -#line 49 "./ext/liquid/liquid_ext.c" - { - cs = fsm_start; - } - -#line 136 "./ext/liquid/liquid_ext.rl" - -#line 56 "./ext/liquid/liquid_ext.c" - { - if ( p == pe ) - goto _test_eof; - switch ( cs ) - { -case 1: - switch( (*p) ) { - case 34: goto tr0; - case 39: goto tr2; - case 40: goto st4; - case 43: goto tr4; - case 45: goto tr4; - case 91: goto st60; - case 102: goto tr8; - case 110: goto tr9; - case 116: goto tr10; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto tr5; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto tr6; - } else - goto tr6; - goto st0; -st0: -cs = 0; - goto _out; -tr0: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st2; -st2: - if ( ++p == pe ) - goto _test_eof2; -case 2: -#line 96 "./ext/liquid/liquid_ext.c" - if ( (*p) == 34 ) - goto st63; - goto st2; -st63: - if ( ++p == pe ) - goto _test_eof63; -case 63: - if ( (*p) == 34 ) - goto st63; - goto st2; -tr2: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st3; -st3: - if ( ++p == pe ) - goto _test_eof3; -case 3: -#line 117 "./ext/liquid/liquid_ext.c" - if ( (*p) == 39 ) - goto st64; - goto st3; -st64: - if ( ++p == pe ) - goto _test_eof64; -case 64: - if ( (*p) == 39 ) - goto st64; - goto st3; -st4: - if ( ++p == pe ) - goto _test_eof4; -case 4: - switch( (*p) ) { - case 34: goto tr15; - case 39: goto tr16; - case 43: goto tr17; - case 45: goto tr17; - case 102: goto tr20; - case 110: goto tr21; - case 116: goto tr22; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto tr18; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto tr19; - } else - goto tr19; - goto st0; -tr15: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st5; -st5: - if ( ++p == pe ) - goto _test_eof5; -case 5: -#line 160 "./ext/liquid/liquid_ext.c" - if ( (*p) == 34 ) - goto st6; - goto st5; -tr27: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st6; -st6: - if ( ++p == pe ) - goto _test_eof6; -case 6: -#line 174 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 34: goto st6; - case 46: goto tr25; - } - goto st5; -tr25: -#line 53 "./ext/liquid/liquid_ext.rl" - { EMIT("id", rb_str_new(mark + 1, p - mark - 2)) } - goto st7; -st7: - if ( ++p == pe ) - goto _test_eof7; -case 7: -#line 188 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 34: goto st6; - case 46: goto st8; - } - goto st5; -st8: - if ( ++p == pe ) - goto _test_eof8; -case 8: - switch( (*p) ) { - case 34: goto tr27; - case 39: goto tr15; - case 43: goto tr15; - case 45: goto tr15; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto tr15; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto tr15; - } else - goto tr15; - goto st5; -tr16: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st9; -st9: - if ( ++p == pe ) - goto _test_eof9; -case 9: -#line 223 "./ext/liquid/liquid_ext.c" - if ( (*p) == 39 ) - goto st10; - goto st9; -tr32: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st10; -st10: - if ( ++p == pe ) - goto _test_eof10; -case 10: -#line 237 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 39: goto st10; - case 46: goto tr30; - } - goto st9; -tr30: -#line 53 "./ext/liquid/liquid_ext.rl" - { EMIT("id", rb_str_new(mark + 1, p - mark - 2)) } - goto st11; -st11: - if ( ++p == pe ) - goto _test_eof11; -case 11: -#line 251 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 39: goto st10; - case 46: goto st12; - } - goto st9; -st12: - if ( ++p == pe ) - goto _test_eof12; -case 12: - switch( (*p) ) { - case 34: goto tr16; - case 39: goto tr32; - case 43: goto tr16; - case 45: goto tr16; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto tr16; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto tr16; - } else - goto tr16; - goto st9; -tr17: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st13; -st13: - if ( ++p == pe ) - goto _test_eof13; -case 13: -#line 286 "./ext/liquid/liquid_ext.c" - if ( 48 <= (*p) && (*p) <= 57 ) - goto st14; - goto st0; -tr18: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st14; -st14: - if ( ++p == pe ) - goto _test_eof14; -case 14: -#line 300 "./ext/liquid/liquid_ext.c" - if ( (*p) == 46 ) - goto tr34; - if ( 48 <= (*p) && (*p) <= 57 ) - goto st14; - goto st0; -tr34: -#line 41 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_funcall(rb_cObject, rb_intern("Integer"), 1, rb_str_new(mark, p - mark))); - } - goto st15; -st15: - if ( ++p == pe ) - goto _test_eof15; -case 15: -#line 316 "./ext/liquid/liquid_ext.c" - if ( (*p) == 46 ) - goto st16; - if ( 48 <= (*p) && (*p) <= 57 ) - goto st42; - goto st0; -st16: - if ( ++p == pe ) - goto _test_eof16; -case 16: - switch( (*p) ) { - case 34: goto tr37; - case 39: goto tr37; - case 43: goto tr38; - case 45: goto tr38; - case 102: goto tr41; - case 110: goto tr42; - case 116: goto tr43; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto tr39; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto tr40; - } else - goto tr40; - goto st0; -tr37: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st17; -st17: - if ( ++p == pe ) - goto _test_eof17; -case 17: -#line 354 "./ext/liquid/liquid_ext.c" - goto st17; -tr38: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st18; -st18: - if ( ++p == pe ) - goto _test_eof18; -case 18: -#line 366 "./ext/liquid/liquid_ext.c" - if ( 48 <= (*p) && (*p) <= 57 ) - goto st19; - goto st0; -tr39: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st19; -st19: - if ( ++p == pe ) - goto _test_eof19; -case 19: -#line 380 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 41: goto tr46; - case 46: goto st26; - } - if ( 48 <= (*p) && (*p) <= 57 ) - goto st19; - goto st0; -tr46: -#line 41 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_funcall(rb_cObject, rb_intern("Integer"), 1, rb_str_new(mark, p - mark))); - } - goto st65; -tr62: -#line 45 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_funcall(rb_cObject, rb_intern("Float"), 1, rb_str_new(mark, p - mark))) - } - goto st65; -tr63: -#line 58 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("lookup", Qnil) - } - goto st65; -tr69: -#line 51 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qfalse) } - goto st65; -tr73: -#line 49 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qnil) } - goto st65; -tr77: -#line 50 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qtrue) } - goto st65; -st65: - if ( ++p == pe ) - goto _test_eof65; -case 65: -#line 423 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 46: goto tr100; - case 91: goto tr101; - } - goto st0; -tr144: -#line 45 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_funcall(rb_cObject, rb_intern("Float"), 1, rb_str_new(mark, p - mark))) - } - goto st20; -tr147: -#line 58 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("lookup", Qnil) - } - goto st20; -tr153: -#line 51 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qfalse) } - goto st20; -tr158: -#line 49 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qnil) } - goto st20; -tr163: -#line 50 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qtrue) } - goto st20; -tr100: -#line 22 "./ext/liquid/liquid_ext.rl" - { - EMIT("range", Qnil) - } - goto st20; -tr103: -#line 96 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("call", Qnil) - } - goto st20; -tr130: -#line 84 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("first")) - } - goto st20; -tr135: -#line 88 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("last")) - } - goto st20; -tr140: -#line 92 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("size")) - } - goto st20; -st20: - if ( ++p == pe ) - goto _test_eof20; -case 20: -#line 489 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 102: goto tr49; - case 108: goto tr50; - case 115: goto tr51; - } - if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto tr48; - } else if ( (*p) >= 65 ) - goto tr48; - goto st0; -tr48: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st66; -st66: - if ( ++p == pe ) - goto _test_eof66; -case 66: -#line 511 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -tr143: -#line 41 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_funcall(rb_cObject, rb_intern("Integer"), 1, rb_str_new(mark, p - mark))); - } - goto st21; -tr145: -#line 45 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_funcall(rb_cObject, rb_intern("Float"), 1, rb_str_new(mark, p - mark))) - } - goto st21; -tr148: -#line 58 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("lookup", Qnil) - } - goto st21; -tr154: -#line 51 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qfalse) } - goto st21; -tr159: -#line 49 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qnil) } - goto st21; -tr164: -#line 50 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qtrue) } - goto st21; -tr101: -#line 22 "./ext/liquid/liquid_ext.rl" - { - EMIT("range", Qnil) - } - goto st21; -tr104: -#line 96 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("call", Qnil) - } - goto st21; -tr131: -#line 84 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("first")) - } - goto st21; -tr136: -#line 88 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("last")) - } - goto st21; -tr141: -#line 92 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("size")) - } - goto st21; -st21: - if ( ++p == pe ) - goto _test_eof21; -case 21: -#line 593 "./ext/liquid/liquid_ext.c" - if ( (*p) == 93 ) - goto tr53; - goto tr52; -tr52: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st22; -st22: - if ( ++p == pe ) - goto _test_eof22; -case 22: -#line 607 "./ext/liquid/liquid_ext.c" - if ( (*p) == 93 ) - goto tr55; - goto st22; -tr55: -#line 68 "./ext/liquid/liquid_ext.rl" - { - VALUE body = rb_str_new(mark, p - mark); - liquid_context_parse_impl(body, tokens); - } - goto st67; -tr60: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } -#line 68 "./ext/liquid/liquid_ext.rl" - { - VALUE body = rb_str_new(mark, p - mark); - liquid_context_parse_impl(body, tokens); - } - goto st67; -st67: - if ( ++p == pe ) - goto _test_eof67; -case 67: -#line 633 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 46: goto tr105; - case 91: goto tr106; - case 93: goto tr55; - } - goto st22; -tr108: -#line 96 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("call", Qnil) - } - goto st23; -tr105: -#line 19 "./ext/liquid/liquid_ext.rl" - { - EMIT("call", Qnil) - } - goto st23; -tr114: -#line 84 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("first")) - } - goto st23; -tr119: -#line 88 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("last")) - } - goto st23; -tr124: -#line 92 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("size")) - } - goto st23; -st23: - if ( ++p == pe ) - goto _test_eof23; -case 23: -#line 675 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 93: goto tr55; - case 102: goto tr57; - case 108: goto tr58; - case 115: goto tr59; - } - if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto tr56; - } else if ( (*p) >= 65 ) - goto tr56; - goto st22; -tr56: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st68; -st68: - if ( ++p == pe ) - goto _test_eof68; -case 68: -#line 698 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -tr109: -#line 96 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("call", Qnil) - } - goto st24; -tr106: -#line 19 "./ext/liquid/liquid_ext.rl" - { - EMIT("call", Qnil) - } - goto st24; -tr115: -#line 84 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("first")) - } - goto st24; -tr120: -#line 88 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("last")) - } - goto st24; -tr125: -#line 92 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("size")) - } - goto st24; -st24: - if ( ++p == pe ) - goto _test_eof24; -case 24: -#line 750 "./ext/liquid/liquid_ext.c" - if ( (*p) == 93 ) - goto tr60; - goto tr52; -tr57: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st69; -st69: - if ( ++p == pe ) - goto _test_eof69; -case 69: -#line 764 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - case 105: goto st70; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -st70: - if ( ++p == pe ) - goto _test_eof70; -case 70: - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - case 114: goto st71; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -st71: - if ( ++p == pe ) - goto _test_eof71; -case 71: - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - case 115: goto st72; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -st72: - if ( ++p == pe ) - goto _test_eof72; -case 72: - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - case 116: goto st73; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -st73: - if ( ++p == pe ) - goto _test_eof73; -case 73: - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr114; - case 91: goto tr115; - case 93: goto tr55; - case 95: goto st68; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -tr58: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st74; -st74: - if ( ++p == pe ) - goto _test_eof74; -case 74: -#line 875 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - case 97: goto st75; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 98 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -st75: - if ( ++p == pe ) - goto _test_eof75; -case 75: - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - case 115: goto st76; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -st76: - if ( ++p == pe ) - goto _test_eof76; -case 76: - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - case 116: goto st77; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -st77: - if ( ++p == pe ) - goto _test_eof77; -case 77: - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr119; - case 91: goto tr120; - case 93: goto tr55; - case 95: goto st68; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -tr59: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st78; -st78: - if ( ++p == pe ) - goto _test_eof78; -case 78: -#line 965 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - case 105: goto st79; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -st79: - if ( ++p == pe ) - goto _test_eof79; -case 79: - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - case 122: goto st80; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 121 ) - goto st68; - } else - goto st68; - goto st22; -st80: - if ( ++p == pe ) - goto _test_eof80; -case 80: - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr108; - case 91: goto tr109; - case 93: goto tr55; - case 95: goto st68; - case 101: goto st81; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -st81: - if ( ++p == pe ) - goto _test_eof81; -case 81: - switch( (*p) ) { - case 45: goto st68; - case 46: goto tr124; - case 91: goto tr125; - case 93: goto tr55; - case 95: goto st68; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st68; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st68; - } else - goto st68; - goto st22; -tr53: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st25; -st25: - if ( ++p == pe ) - goto _test_eof25; -case 25: -#line 1055 "./ext/liquid/liquid_ext.c" - goto st22; -tr49: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st82; -st82: - if ( ++p == pe ) - goto _test_eof82; -case 82: -#line 1067 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - case 105: goto st83; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -st83: - if ( ++p == pe ) - goto _test_eof83; -case 83: - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - case 114: goto st84; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -st84: - if ( ++p == pe ) - goto _test_eof84; -case 84: - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - case 115: goto st85; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -st85: - if ( ++p == pe ) - goto _test_eof85; -case 85: - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - case 116: goto st86; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -st86: - if ( ++p == pe ) - goto _test_eof86; -case 86: - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr130; - case 91: goto tr131; - case 95: goto st66; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -tr50: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st87; -st87: - if ( ++p == pe ) - goto _test_eof87; -case 87: -#line 1173 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - case 97: goto st88; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 98 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -st88: - if ( ++p == pe ) - goto _test_eof88; -case 88: - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - case 115: goto st89; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -st89: - if ( ++p == pe ) - goto _test_eof89; -case 89: - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - case 116: goto st90; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -st90: - if ( ++p == pe ) - goto _test_eof90; -case 90: - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr135; - case 91: goto tr136; - case 95: goto st66; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -tr51: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st91; -st91: - if ( ++p == pe ) - goto _test_eof91; -case 91: -#line 1259 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - case 105: goto st92; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -st92: - if ( ++p == pe ) - goto _test_eof92; -case 92: - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - case 122: goto st93; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 121 ) - goto st66; - } else - goto st66; - goto st0; -st93: - if ( ++p == pe ) - goto _test_eof93; -case 93: - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr103; - case 91: goto tr104; - case 95: goto st66; - case 101: goto st94; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -st94: - if ( ++p == pe ) - goto _test_eof94; -case 94: - switch( (*p) ) { - case 45: goto st66; - case 46: goto tr140; - case 91: goto tr141; - case 95: goto st66; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st66; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st66; - } else - goto st66; - goto st0; -st26: - if ( ++p == pe ) - goto _test_eof26; -case 26: - if ( 48 <= (*p) && (*p) <= 57 ) - goto st27; - goto st0; -st27: - if ( ++p == pe ) - goto _test_eof27; -case 27: - if ( (*p) == 41 ) - goto tr62; - if ( 48 <= (*p) && (*p) <= 57 ) - goto st27; - goto st0; -tr40: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st28; -st28: - if ( ++p == pe ) - goto _test_eof28; -case 28: -#line 1361 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -tr41: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st29; -st29: - if ( ++p == pe ) - goto _test_eof29; -case 29: -#line 1386 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - case 97: goto st30; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 98 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st30: - if ( ++p == pe ) - goto _test_eof30; -case 30: - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - case 108: goto st31; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st31: - if ( ++p == pe ) - goto _test_eof31; -case 31: - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - case 115: goto st32; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st32: - if ( ++p == pe ) - goto _test_eof32; -case 32: - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - case 101: goto st33; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st33: - if ( ++p == pe ) - goto _test_eof33; -case 33: - switch( (*p) ) { - case 41: goto tr69; - case 45: goto st28; - case 95: goto st28; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -tr42: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st34; -st34: - if ( ++p == pe ) - goto _test_eof34; -case 34: -#line 1487 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - case 105: goto st35; - case 117: goto st37; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st35: - if ( ++p == pe ) - goto _test_eof35; -case 35: - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - case 108: goto st36; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st36: - if ( ++p == pe ) - goto _test_eof36; -case 36: - switch( (*p) ) { - case 41: goto tr73; - case 45: goto st28; - case 95: goto st28; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st37: - if ( ++p == pe ) - goto _test_eof37; -case 37: - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - case 108: goto st35; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -tr43: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st38; -st38: - if ( ++p == pe ) - goto _test_eof38; -case 38: -#line 1570 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - case 114: goto st39; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st39: - if ( ++p == pe ) - goto _test_eof39; -case 39: - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - case 117: goto st40; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st40: - if ( ++p == pe ) - goto _test_eof40; -case 40: - switch( (*p) ) { - case 41: goto tr63; - case 45: goto st28; - case 95: goto st28; - case 101: goto st41; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st41: - if ( ++p == pe ) - goto _test_eof41; -case 41: - switch( (*p) ) { - case 41: goto tr77; - case 45: goto st28; - case 95: goto st28; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st28; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st28; - } else - goto st28; - goto st0; -st42: - if ( ++p == pe ) - goto _test_eof42; -case 42: - if ( (*p) == 46 ) - goto tr78; - if ( 48 <= (*p) && (*p) <= 57 ) - goto st42; - goto st0; -tr78: -#line 45 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_funcall(rb_cObject, rb_intern("Float"), 1, rb_str_new(mark, p - mark))) - } - goto st43; -tr80: -#line 58 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("lookup", Qnil) - } - goto st43; -tr85: -#line 51 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qfalse) } - goto st43; -tr89: -#line 49 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qnil) } - goto st43; -tr93: -#line 50 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qtrue) } - goto st43; -st43: - if ( ++p == pe ) - goto _test_eof43; -case 43: -#line 1680 "./ext/liquid/liquid_ext.c" - if ( (*p) == 46 ) - goto st16; - goto st0; -tr19: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st44; -st44: - if ( ++p == pe ) - goto _test_eof44; -case 44: -#line 1694 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -tr20: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st45; -st45: - if ( ++p == pe ) - goto _test_eof45; -case 45: -#line 1719 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - case 97: goto st46; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 98 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -st46: - if ( ++p == pe ) - goto _test_eof46; -case 46: - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - case 108: goto st47; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -st47: - if ( ++p == pe ) - goto _test_eof47; -case 47: - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - case 115: goto st48; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -st48: - if ( ++p == pe ) - goto _test_eof48; -case 48: - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - case 101: goto st49; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -st49: - if ( ++p == pe ) - goto _test_eof49; -case 49: - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr85; - case 95: goto st44; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -tr21: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st50; -st50: - if ( ++p == pe ) - goto _test_eof50; -case 50: -#line 1820 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - case 105: goto st51; - case 117: goto st53; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -st51: - if ( ++p == pe ) - goto _test_eof51; -case 51: - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - case 108: goto st52; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -st52: - if ( ++p == pe ) - goto _test_eof52; -case 52: - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr89; - case 95: goto st44; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -st53: - if ( ++p == pe ) - goto _test_eof53; -case 53: - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - case 108: goto st51; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -tr22: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st54; -st54: - if ( ++p == pe ) - goto _test_eof54; -case 54: -#line 1903 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - case 114: goto st55; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -st55: - if ( ++p == pe ) - goto _test_eof55; -case 55: - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - case 117: goto st56; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -st56: - if ( ++p == pe ) - goto _test_eof56; -case 56: - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr80; - case 95: goto st44; - case 101: goto st57; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -st57: - if ( ++p == pe ) - goto _test_eof57; -case 57: - switch( (*p) ) { - case 45: goto st44; - case 46: goto tr93; - case 95: goto st44; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st44; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st44; - } else - goto st44; - goto st0; -tr4: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st58; -st58: - if ( ++p == pe ) - goto _test_eof58; -case 58: -#line 1985 "./ext/liquid/liquid_ext.c" - if ( 48 <= (*p) && (*p) <= 57 ) - goto st95; - goto st0; -tr5: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st95; -st95: - if ( ++p == pe ) - goto _test_eof95; -case 95: -#line 1999 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 46: goto st59; - case 91: goto tr143; - } - if ( 48 <= (*p) && (*p) <= 57 ) - goto st95; - goto st0; -st59: - if ( ++p == pe ) - goto _test_eof59; -case 59: - if ( 48 <= (*p) && (*p) <= 57 ) - goto st96; - goto st0; -st96: - if ( ++p == pe ) - goto _test_eof96; -case 96: - switch( (*p) ) { - case 46: goto tr144; - case 91: goto tr145; - } - if ( 48 <= (*p) && (*p) <= 57 ) - goto st96; - goto st0; -tr6: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st97; -st97: - if ( ++p == pe ) - goto _test_eof97; -case 97: -#line 2035 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st60: - if ( ++p == pe ) - goto _test_eof60; -case 60: - if ( (*p) == 93 ) - goto tr97; - goto tr96; -tr96: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st61; -st61: - if ( ++p == pe ) - goto _test_eof61; -case 61: -#line 2068 "./ext/liquid/liquid_ext.c" - if ( (*p) == 93 ) - goto tr99; - goto st61; -tr99: -#line 68 "./ext/liquid/liquid_ext.rl" - { - VALUE body = rb_str_new(mark, p - mark); - liquid_context_parse_impl(body, tokens); - } - goto st98; -st98: - if ( ++p == pe ) - goto _test_eof98; -case 98: -#line 2083 "./ext/liquid/liquid_ext.c" - if ( (*p) == 93 ) - goto tr99; - goto st61; -tr97: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st62; -st62: - if ( ++p == pe ) - goto _test_eof62; -case 62: -#line 2097 "./ext/liquid/liquid_ext.c" - goto st61; -tr8: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st99; -st99: - if ( ++p == pe ) - goto _test_eof99; -case 99: -#line 2109 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - case 97: goto st100; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 98 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st100: - if ( ++p == pe ) - goto _test_eof100; -case 100: - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - case 108: goto st101; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st101: - if ( ++p == pe ) - goto _test_eof101; -case 101: - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - case 115: goto st102; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st102: - if ( ++p == pe ) - goto _test_eof102; -case 102: - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - case 101: goto st103; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st103: - if ( ++p == pe ) - goto _test_eof103; -case 103: - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr153; - case 91: goto tr154; - case 95: goto st97; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -tr9: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st104; -st104: - if ( ++p == pe ) - goto _test_eof104; -case 104: -#line 2215 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - case 105: goto st105; - case 117: goto st107; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st105: - if ( ++p == pe ) - goto _test_eof105; -case 105: - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - case 108: goto st106; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st106: - if ( ++p == pe ) - goto _test_eof106; -case 106: - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr158; - case 91: goto tr159; - case 95: goto st97; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st107: - if ( ++p == pe ) - goto _test_eof107; -case 107: - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - case 108: goto st105; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -tr10: -#line 11 "./ext/liquid/liquid_ext.rl" - { - mark = p; - } - goto st108; -st108: - if ( ++p == pe ) - goto _test_eof108; -case 108: -#line 2302 "./ext/liquid/liquid_ext.c" - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - case 114: goto st109; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st109: - if ( ++p == pe ) - goto _test_eof109; -case 109: - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - case 117: goto st110; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st110: - if ( ++p == pe ) - goto _test_eof110; -case 110: - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr147; - case 91: goto tr148; - case 95: goto st97; - case 101: goto st111; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; -st111: - if ( ++p == pe ) - goto _test_eof111; -case 111: - switch( (*p) ) { - case 45: goto st97; - case 46: goto tr163; - case 91: goto tr164; - case 95: goto st97; - } - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st97; - } else if ( (*p) > 90 ) { - if ( 97 <= (*p) && (*p) <= 122 ) - goto st97; - } else - goto st97; - goto st0; - } - _test_eof2: cs = 2; goto _test_eof; - _test_eof63: cs = 63; goto _test_eof; - _test_eof3: cs = 3; goto _test_eof; - _test_eof64: cs = 64; goto _test_eof; - _test_eof4: cs = 4; goto _test_eof; - _test_eof5: cs = 5; goto _test_eof; - _test_eof6: cs = 6; goto _test_eof; - _test_eof7: cs = 7; goto _test_eof; - _test_eof8: cs = 8; goto _test_eof; - _test_eof9: cs = 9; goto _test_eof; - _test_eof10: cs = 10; goto _test_eof; - _test_eof11: cs = 11; goto _test_eof; - _test_eof12: cs = 12; goto _test_eof; - _test_eof13: cs = 13; goto _test_eof; - _test_eof14: cs = 14; goto _test_eof; - _test_eof15: cs = 15; goto _test_eof; - _test_eof16: cs = 16; goto _test_eof; - _test_eof17: cs = 17; goto _test_eof; - _test_eof18: cs = 18; goto _test_eof; - _test_eof19: cs = 19; goto _test_eof; - _test_eof65: cs = 65; goto _test_eof; - _test_eof20: cs = 20; goto _test_eof; - _test_eof66: cs = 66; goto _test_eof; - _test_eof21: cs = 21; goto _test_eof; - _test_eof22: cs = 22; goto _test_eof; - _test_eof67: cs = 67; goto _test_eof; - _test_eof23: cs = 23; goto _test_eof; - _test_eof68: cs = 68; goto _test_eof; - _test_eof24: cs = 24; goto _test_eof; - _test_eof69: cs = 69; goto _test_eof; - _test_eof70: cs = 70; goto _test_eof; - _test_eof71: cs = 71; goto _test_eof; - _test_eof72: cs = 72; goto _test_eof; - _test_eof73: cs = 73; goto _test_eof; - _test_eof74: cs = 74; goto _test_eof; - _test_eof75: cs = 75; goto _test_eof; - _test_eof76: cs = 76; goto _test_eof; - _test_eof77: cs = 77; goto _test_eof; - _test_eof78: cs = 78; goto _test_eof; - _test_eof79: cs = 79; goto _test_eof; - _test_eof80: cs = 80; goto _test_eof; - _test_eof81: cs = 81; goto _test_eof; - _test_eof25: cs = 25; goto _test_eof; - _test_eof82: cs = 82; goto _test_eof; - _test_eof83: cs = 83; goto _test_eof; - _test_eof84: cs = 84; goto _test_eof; - _test_eof85: cs = 85; goto _test_eof; - _test_eof86: cs = 86; goto _test_eof; - _test_eof87: cs = 87; goto _test_eof; - _test_eof88: cs = 88; goto _test_eof; - _test_eof89: cs = 89; goto _test_eof; - _test_eof90: cs = 90; goto _test_eof; - _test_eof91: cs = 91; goto _test_eof; - _test_eof92: cs = 92; goto _test_eof; - _test_eof93: cs = 93; goto _test_eof; - _test_eof94: cs = 94; goto _test_eof; - _test_eof26: cs = 26; goto _test_eof; - _test_eof27: cs = 27; goto _test_eof; - _test_eof28: cs = 28; goto _test_eof; - _test_eof29: cs = 29; goto _test_eof; - _test_eof30: cs = 30; goto _test_eof; - _test_eof31: cs = 31; goto _test_eof; - _test_eof32: cs = 32; goto _test_eof; - _test_eof33: cs = 33; goto _test_eof; - _test_eof34: cs = 34; goto _test_eof; - _test_eof35: cs = 35; goto _test_eof; - _test_eof36: cs = 36; goto _test_eof; - _test_eof37: cs = 37; goto _test_eof; - _test_eof38: cs = 38; goto _test_eof; - _test_eof39: cs = 39; goto _test_eof; - _test_eof40: cs = 40; goto _test_eof; - _test_eof41: cs = 41; goto _test_eof; - _test_eof42: cs = 42; goto _test_eof; - _test_eof43: cs = 43; goto _test_eof; - _test_eof44: cs = 44; goto _test_eof; - _test_eof45: cs = 45; goto _test_eof; - _test_eof46: cs = 46; goto _test_eof; - _test_eof47: cs = 47; goto _test_eof; - _test_eof48: cs = 48; goto _test_eof; - _test_eof49: cs = 49; goto _test_eof; - _test_eof50: cs = 50; goto _test_eof; - _test_eof51: cs = 51; goto _test_eof; - _test_eof52: cs = 52; goto _test_eof; - _test_eof53: cs = 53; goto _test_eof; - _test_eof54: cs = 54; goto _test_eof; - _test_eof55: cs = 55; goto _test_eof; - _test_eof56: cs = 56; goto _test_eof; - _test_eof57: cs = 57; goto _test_eof; - _test_eof58: cs = 58; goto _test_eof; - _test_eof95: cs = 95; goto _test_eof; - _test_eof59: cs = 59; goto _test_eof; - _test_eof96: cs = 96; goto _test_eof; - _test_eof97: cs = 97; goto _test_eof; - _test_eof60: cs = 60; goto _test_eof; - _test_eof61: cs = 61; goto _test_eof; - _test_eof98: cs = 98; goto _test_eof; - _test_eof62: cs = 62; goto _test_eof; - _test_eof99: cs = 99; goto _test_eof; - _test_eof100: cs = 100; goto _test_eof; - _test_eof101: cs = 101; goto _test_eof; - _test_eof102: cs = 102; goto _test_eof; - _test_eof103: cs = 103; goto _test_eof; - _test_eof104: cs = 104; goto _test_eof; - _test_eof105: cs = 105; goto _test_eof; - _test_eof106: cs = 106; goto _test_eof; - _test_eof107: cs = 107; goto _test_eof; - _test_eof108: cs = 108; goto _test_eof; - _test_eof109: cs = 109; goto _test_eof; - _test_eof110: cs = 110; goto _test_eof; - _test_eof111: cs = 111; goto _test_eof; - - _test_eof: {} - if ( p == eof ) - { - switch ( cs ) { - case 98: -#line 15 "./ext/liquid/liquid_ext.rl" - { - EMIT("lookup", Qnil) - } - break; - case 67: -#line 19 "./ext/liquid/liquid_ext.rl" - { - EMIT("call", Qnil) - } - break; - case 65: -#line 22 "./ext/liquid/liquid_ext.rl" - { - EMIT("range", Qnil) - } - break; - case 95: -#line 41 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_funcall(rb_cObject, rb_intern("Integer"), 1, rb_str_new(mark, p - mark))); - } - break; - case 96: -#line 45 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_funcall(rb_cObject, rb_intern("Float"), 1, rb_str_new(mark, p - mark))) - } - break; - case 106: -#line 49 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qnil) } - break; - case 111: -#line 50 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qtrue) } - break; - case 103: -#line 51 "./ext/liquid/liquid_ext.rl" - { EMIT("id", Qfalse) } - break; - case 63: - case 64: -#line 53 "./ext/liquid/liquid_ext.rl" - { EMIT("id", rb_str_new(mark + 1, p - mark - 2)) } - break; - case 97: - case 99: - case 100: - case 101: - case 102: - case 104: - case 105: - case 107: - case 108: - case 109: - case 110: -#line 58 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("lookup", Qnil) - } - break; - case 73: - case 86: -#line 84 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("first")) - } - break; - case 77: - case 90: -#line 88 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("last")) - } - break; - case 81: - case 94: -#line 92 "./ext/liquid/liquid_ext.rl" - { - EMIT("buildin", rb_str_new2("size")) - } - break; - case 66: - case 68: - case 69: - case 70: - case 71: - case 72: - case 74: - case 75: - case 76: - case 78: - case 79: - case 80: - case 82: - case 83: - case 84: - case 85: - case 87: - case 88: - case 89: - case 91: - case 92: - case 93: -#line 96 "./ext/liquid/liquid_ext.rl" - { - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("call", Qnil) - } - break; -#line 2607 "./ext/liquid/liquid_ext.c" - } - } - - _out: {} - } - -#line 137 "./ext/liquid/liquid_ext.rl" -} - -VALUE liquid_context_parse(VALUE self, VALUE text) { - VALUE tokens; - - //printf("text: %s\n", RSTRING_PTR(text)); - - //Check_Type(text, T_STRING); - - tokens = rb_ary_new(); - liquid_context_parse_impl(text, tokens); - return tokens; -} - static VALUE rb_Liquid; static VALUE rb_Parser; +VALUE liquid_context_parse_impl(VALUE text); + void Init_liquid_ext() { rb_Liquid = rb_define_module("Liquid"); rb_Parser = rb_define_class_under(rb_Liquid, "Parser", rb_cObject); - rb_define_singleton_method(rb_Parser, "parse", liquid_context_parse, 1); + rb_define_singleton_method(rb_Parser, "parse", liquid_context_parse_impl, 1); } diff --git a/ext/liquid/liquid_ext.o b/ext/liquid/liquid_ext.o deleted file mode 100644 index 6591f1e7c80f6c45667e150e47f681cae6a36bc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41492 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 diff --git a/ext/liquid/liquid_ext.rl b/ext/liquid/liquid_ext.rl deleted file mode 100644 index ab932b8..0000000 --- a/ext/liquid/liquid_ext.rl +++ /dev/null @@ -1,159 +0,0 @@ -/* - Parser for context#[] method. Generated through ragel from parser.rl - Only modify parser.rl. Run rake ragel afterwards to generate this file. -*/ - -#include - -%%{ - machine fsm; - - action mark { - mark = p; - } - - action lookup { - EMIT("lookup", Qnil) - } - - action call { - EMIT("call", Qnil) - } - action range { - EMIT("range", Qnil) - } - - constants = ( "true" | "false" | "nil" | "null" ); - - # strings - string = "\"" any* "\"" | "'" any* "'"; - - # nothingness - nil = "nil" | "null" ; - - # numbers - integer = ('+'|'-')? digit+; - float = ('+'|'-')? digit+ '.' digit+; - - # simple values - primitive = ( - - integer >mark %{ - EMIT("id", rb_funcall(rb_cObject, rb_intern("Integer"), 1, rb_str_new(mark, p - mark))); - } | - - float >mark %{ - EMIT("id", rb_funcall(rb_cObject, rb_intern("Float"), 1, rb_str_new(mark, p - mark))) - } | - - nil %{ EMIT("id", Qnil) } | - "true" %{ EMIT("id", Qtrue) } | - "false" %{ EMIT("id", Qfalse) } | - - string >mark %{ EMIT("id", rb_str_new(mark + 1, p - mark - 2)) } - - ); - - entity = ( - ((alpha [A-Za-z0-9_\-]*) - (constants)) >mark %{ - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("lookup", Qnil) - } - ); - - # Because of recursion we cannot immediatly resolve the content of this in - # the current grammar. We simply re-invoke the parser here to descend into - # the substring - recur = ( - (any+ - ']') >mark %{ - VALUE body = rb_str_new(mark, p - mark); - liquid_context_parse_impl(body, tokens); - } - ); - - expr = ( - entity | - primitive | - "(" (primitive | entity) ".." (primitive | entity) <: ")" %range | - "[" recur "]" %lookup - ); - - hash_accessors = ( - "[" recur "]" %call | - - ".first" %{ - EMIT("buildin", rb_str_new2("first")) - } | - - ".last" %{ - EMIT("buildin", rb_str_new2("last")) - } | - - ".size" %{ - EMIT("buildin", rb_str_new2("size")) - } | - - "." ((alpha [A-Za-z0-9_\-]*) - ("first"|"last"|"size")) >mark %{ - EMIT("id", rb_str_new(mark, p - mark)) - EMIT("call", Qnil) - } - ); - - main := ( - - expr <: (hash_accessors)* - - ); - -}%% - -%% write data nofinal; - -// def self.emit(sym, data, tokens) -// puts "emitting: #{sym} -> #{data.inspect}" if $VERBOSE -// tokens.push [sym, data] -// end - -#define EMIT(sym, data) rb_ary_push(tokens, rb_ary_new3(2, ID2SYM(rb_intern(sym)), data)); - - -void liquid_context_parse_impl(VALUE text, VALUE tokens) -{ - char *p; - char *pe; - char *eof; - char *mark; - int cs, res = 0; - - if (RSTRING_LEN(text) <= 0) { - return; - } - - mark = p = RSTRING_PTR(text); - eof = pe = RSTRING_PTR(text) + RSTRING_LEN(text); - - %% write init; - %% write exec; -} - -VALUE liquid_context_parse(VALUE self, VALUE text) { - VALUE tokens; - - //printf("text: %s\n", RSTRING_PTR(text)); - - //Check_Type(text, T_STRING); - - tokens = rb_ary_new(); - liquid_context_parse_impl(text, tokens); - return tokens; -} - -static VALUE rb_Liquid; -static VALUE rb_Parser; - -void Init_liquid_ext() -{ - rb_Liquid = rb_define_module("Liquid"); - rb_Parser = rb_define_class_under(rb_Liquid, "Parser", rb_cObject); - rb_define_singleton_method(rb_Parser, "parse", liquid_context_parse, 1); -} diff --git a/ext/liquid/mkmf.log b/ext/liquid/mkmf.log deleted file mode 100644 index 3dd9739..0000000 --- a/ext/liquid/mkmf.log +++ /dev/null @@ -1,22 +0,0 @@ -have_library: checking for main() in -lc... -------------------- yes - -"/usr/bin/gcc-4.2 -o conftest -I/Users/tobi/.rbenv/versions/1.9.3-p194-perf/include/ruby-1.9.1/x86_64-darwin12.0.0 -I/Users/tobi/.rbenv/versions/1.9.3-p194-perf/include/ruby-1.9.1/ruby/backward -I/Users/tobi/.rbenv/versions/1.9.3-p194-perf/include/ruby-1.9.1 -I. -I'/Users/tobi/.rbenv/versions/1.9.3-p194-perf/include' -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I'/Users/tobi/.rbenv/versions/1.9.3-p194-perf/include' -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -pipe conftest.c -L. -L/Users/tobi/.rbenv/versions/1.9.3-p194-perf/lib -L. -L'/Users/tobi/.rbenv/versions/1.9.3-p194-perf/lib' -L/usr/local/lib -lruby-static -lpthread -ldl -lobjc " -checked program was: -/* begin */ -1: #include "ruby.h" -2: -3: int main() {return 0;} -/* end */ - -"/usr/bin/gcc-4.2 -o conftest -I/Users/tobi/.rbenv/versions/1.9.3-p194-perf/include/ruby-1.9.1/x86_64-darwin12.0.0 -I/Users/tobi/.rbenv/versions/1.9.3-p194-perf/include/ruby-1.9.1/ruby/backward -I/Users/tobi/.rbenv/versions/1.9.3-p194-perf/include/ruby-1.9.1 -I. -I'/Users/tobi/.rbenv/versions/1.9.3-p194-perf/include' -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I'/Users/tobi/.rbenv/versions/1.9.3-p194-perf/include' -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -pipe conftest.c -L. -L/Users/tobi/.rbenv/versions/1.9.3-p194-perf/lib -L. -L'/Users/tobi/.rbenv/versions/1.9.3-p194-perf/lib' -L/usr/local/lib -lruby-static -lc -lpthread -ldl -lobjc " -checked program was: -/* begin */ -1: #include "ruby.h" -2: -3: /*top*/ -4: int main() {return 0;} -5: int t() { void ((*volatile p)()); p = (void ((*)()))main; return 0; } -/* end */ - --------------------- - diff --git a/lib/liquid_ext.bundle b/lib/liquid_ext.bundle deleted file mode 100755 index 68dd5b6622ab9fa3d6be54dd3a2b82c6db565f1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28572 zcmeHPd3aORwm+o}Ak(P>ih@v)(V?`3)D{q122Hgfq9B40pcGmtZE2Is;FVU=D4~|3 zPrZ1Z5Qhg|2XKt2TyTJTK}F;$DwBemLlp6%LYeY@YweZfr0uz%@1OU+_r2!(lCyt% zul3t&uf6tg_Brh*Cw@B9O4H)vHBD=cZwGt}Y?_vUD}64+w@(XAb2@JsG5!|Liv7uo zg_>Y+YM{|tO0m=F%AfBNfJ;NZ(WHRSgX!u@IBWywBxseYMEyFQ)gzVEMA zMT13xa9l(hZ56(#eZ=Q1$S*3*FN0h|z8*uA@}Go*Fx(RTG_o(R+*MXsJX0hZ^8Ho# zZj|yc4im<3Bh%@07tbp!p6)Cxo>9U$wm%Hv8!rT59Oi3ybvpA4oHNR%&dFCL4efJW zqw@WtNSI>8>O*m|1P*pOhiBiCZIa58bfR1vVCr__4fnOvSzP2SUodA{Ns+VERc6T- zrlWW>+eQ7^2H)_<>6}?&3cE&piCIdLVxK;Q8}hZ|67}PB7ES$k_H}|jeMYN`M%c_p z?QJh*ba6VTl}DqvvHuFPlyIpjAk2K`m?lZ;2M4}RXKv1@8%7Mz36I&ZK}jg2kKjkU zDM)sixw>mwWs1m=Z(2j1u@cuZfCES;-K6Rx^E%;MI!4pp!u8LSQFgYbwM81D{CNSt z^d2o>0RL|3+PWsl9iMWUuZ{%+L{-TNcj?C^f*Zt19TCI%B6 z)y_@~b8F@S=2p*R*v7Fb(81x^-;E@$OU#MeoSS*n-QG_jWKR^^o^%JzoMI`exlo+TXRR;$joE9_ZdW_pH|CU z-x*^KSUmMJ^s25`P@-6`y6s9zxb&)Lk~M8`Rz>H8?Ss#nHz>!q&zOU;hN^?Jss2~M zFnB^m7Zl`#wv5a?qkE5_+&@*AZv=C~6N4`*+w1VW-)Um@?b(yECuch+y{C7pgosu- zq`SL&j%Q1Y;5mA?;hL6HGcPW?@|y1MHaWgypmQG%Ug!vY3_vBhnZLU~^3!-WeurIt zTC~W117HU0R}Sgj6kqRu$4B#%@htIW3E#s2j+$X{4&R8n+{`2H4t`p%9M$eRV-Xcq zkEmO!vD5SQ+Joo|Pkk@F_Bl>;*S$X>5!BfpxUG%u8G{T*^`tr@2MJ}Uv_IPux^iBk z<4w?Om3`0}{i*u0orAL$Z5}-F&)e8@n~ifxJyb{51aA;Ux#U*gS(m-E)o^{oaZvTD zcqy1fS@39luJ6t|bhUf8@jdiC$CF*(8Ly)n$aQx=M&{&f*>WZn3gz_Oms^t;XWWBA zeM3vn@$T+V5xI521-Wr&a(zDp_Vg$7?R~IUb9jHx@qOU#>Zq|fDZ+ePHc)p2UL_Hq z%|;@=&5ljqBi1)}NZI&zD$VsB3Y0L%o!e0wDCG2rI!8@u3+mFP#z0soRd=DP$-^k+ z4*$V8huTjDwMQ%Tsu{4Eg+lO0kH-GUskx40NUx&iaUTwH*SQb+X@kn0_$G&WZ@uaV zC2Enx)=klt8$c!1p6lM)ypb1?N|fSgMM zM8D_!)2NYpdLSq;Fh)^ta3rX1SA)cLCHjox=StU4o_eP%;HgK$hIc0_z4mXHV$g8l zY&jJQ1-JT9yJqx9oKisOo^_P_te^Hi#$g)Aw3-_SDMf1!jfgJ*^ln)~a|1b$tQv|$ zO#D&fzeD3)`w??H5OcdY=5`pJNJV1q+!@Jww<<7GlY6_jHW51yqm1g~PVB9Fp9ZEr zGAfafFnTDJtgsu@`_VA!ltz*gMsrBSXWPut)KnPtVGb2W-8mf%Bag9)te^<)?P^5< ze>WzN2GO)X_$SH=4&q-sq})F@7%{E_8CBdv7}%{4aGrV$>|KbbT;E9t1zu*8WL0iojNMS+k`&Z{Ngs}%Po5^n zzwhqssJVI-N;XjB1dd^nhS$e)Pi%Hn+rDSdW~@gHXek?WecuE=CXs6U)v*+}69obt z<6lu+EEF>SdGr&(w}BESknzvLyK?&;akug7P&XbxL@$kp`RCJ!tC@^}f7E@GpLR^f ze3U8AyjhR9?-}C{jHAIAIj*i)Izn5NYwm{_Egc8^@G7~NL;nNJuCh|*R}932UD1~M zv}!t$jzC;v(L*va8>C?ZquELKJ_Hv3Ib_OR;NW$#7xtw*4UFs})4&ZE^E99u0iE94Vcy^Kp3>VMwiMsd6-)PabuT<6Q z-t0D@sk!=dFsPt7UsYW}CSQWWXpgqw8tt!9NJPV_Hln#3QwSRSAeD1CZ6!}un*;n6 z5~;Rx97id#iGmyTu%ehC6pf}vV=CGawWw6l^^djaU&vK-*DJbnt>^+aCQwccVO@Z2 zhskI!rm}D0M|kEnV&gbFMFKwCM-VXHrNV0ahf0_O@{UNgpDDrTsjxvnrtUBvRjLn( z>LS#U6;WNGR2QHyI29GlH&t*^M5;_lO>Ck92@kB<)%IZ~<=>#9I@qq1do`gf!zFMS zb7wfV0!Zi9^xO1R~ zjkksmmO_?^sOsCzq8MvXI`RcDcE@LZZLMqqn{ zTSaVS&x5_5`Xaq*B`3=Ds+*CZ+W&*Hr zj5v&%>)Oxelp~+a*^Vpik-hgKVRqI(&@y8LEQ-}$#oBh!zMr+rb?+$3P=0VPHxe4E z=~Xk)z=)40vf5NvD*HH>i{Rr!AKpz@KsD2L25R)xehQ@(Y2D!HpT-2{Viqh8LItjVz>$8Ycyldx>%E z>_(L@4y$$))iPEs)4j<`mEy!*YrNc8^}4X?R|qV!`zlsNoE)VL6(>-g163fp2Xen{ zj5QJIwbdM~7!oINheJ-N>HtR@OOPG$l8Yn$%do&3s3kZ{2zBo;6Wu$FLLNdDwEe;kXZg<%y9uh) z(>b`RP16F(9>~>U_@#1UBDUurqhgAU+o-%PvLh|}oGom{lF9DJbA0Xea zz`uc871Q`8nRtE+B$~L|AZ>gEMa;r`kXBPy%agU5>y{)u9BCP??s*Gr@R$6aGwJwNg-L15qpt44; z$@QHGWV5nz%^;-N@xhTbB{;nLP51Uc84CF^7sC3(#*f$?`-f6L##$r0HtMKXNIeLT!H@3~7<4NKAerY*^@$W)c zr6^uNd4oOo6s7q{RFn4H-y&DFWuVf$Ln?37mcVaGWW9=|pE+&k(I%VZHN@1CnsI~* zeYVUdn8Llc#>Dj$(nf6@k=xrV>o^>)iT8mv_d+tlVp6hv5*Otq2xcPB!NmcD(ztrZTDD|&yHyRRcT&Ini(jW z9MQa6X`UU`q_(6+G^Z%dUl1e>-A88%CjyJ~BRmxTk))zU&t?j5m4r!apN@r*k|X z*l6CV>I&`1CTfCSI|${xLby4Bec}Wp(1-=FM!DxnoJ_#Ew^Ji1@V9V`uMQE+pK_;PkMj#0!{NAUd!Y9ZbOJ@y7*D`Rvp&w|!M>T6;n^rc z%Vr^3DRQarX2Cwy?5CN|Hj)aXp)bwi(G-|OA~G&-McU|tz>H2h1zc=DiExk^gK9X0 zTovgM`+j9yJpYRLM{{j`H;QG^WA({3P z*s?wEKZD$s`aM4&*Z7o*YD!w5mG1S%>p+c+TEkU?W*HJhQ@}={gWeZv7a0~BcGPJNamDH5*4CCb%+L|(p9)fTe9)lv8^(oFp zJ@s=JUF)gGO~5yl8}^f%{PZ${yOBNHxK=c7ov>6hOF=~v2Va0Y1i^OzJ1pLSKLRdcE-;>lG^%vpXSCot zC%W%3HgFTMC@vs&y1&5#iHrGx#0AEsJPIm)q8)x&YvVjXOmI1&4@PDl)~oIVG&S}d zs{8;dcW)aBS3Rp*&0Qs_3QELpY^wJU6NtZ6EI<)Uxs=(pVCV zFJT_qv4(gMf?D7p3)%lpJknO#8B~)Dw{<ANx5mY`7>zLYO|BdeYVG_yonmW4b(D$s?n#&<|{Jpo6*F?-M>^ZO>B}$ z_02F7*VRZHSqR6}-|2DA7}i$Hbmcx;rcZ?%whO~5=tirsZU^ny3k6g7q-O$;aGdlc zaNOghrwlo?kiPa1EvGU z938h`!+?W_{b(fIgS)T;#yH9z&SHm+90KS)(lG`T7$GJ72wW?mJAvy2bR^&q(3(Jw zfRh~nt`~3^z){nFHBN;_<@IKsblMyb}6nn0;DN06FGsb48| zJEaa$Y7(XPQ))7$K1V9ocbp!+wf7?kxldNNr}?jydYUw5FM zsneA-l&j}!7=Nr@2zByx*YCndEgc|Z=zzI3i^vD43;QkA|EexNh@4DkK;VBE{JfFg zeGoz1!Baog)rXg#ZNSuW6caX5#DwiRGc7kUl`VSRQ;+p}f|A5~O_E6>Im0A5x#9w@ z^F6emTh)@P>dsZ=yBE{TES@dcIp8&%K`_gIiEwlWN7P^4CAXc4*`?P$g=|kfc5Xd+ zjl$0D!vm^EYv$9dJ+SFg(cICN{Gjubz1bBv;PIYb)sJjCf$dTmv^*!Uy(~ncvOcTg z?C|r!F}q>y&72F5Ur&imPgK_9#e)ng$wY?dM3H+dZe}78{&&#&dq}+#P_L)nt$X`H zRJB%msHaF|ux08Mh}rtG2^bZ080|gtEhos=`|+l$vB5+ZXELOgqpISdRzCNO|8U31C9+Blyd3e zGTuPwyBYURf!A;_iA7{JPNuMkgb$jA;>c4ir?ph>vn`==EF#smMK~djp4>QmUj}9< ziaD_qzam$yL%E7#q)^13cHpdv-=vAPs+*$h9!vRTgt8uUE39f^MHzUN1ms5TMNZrI zV7f&Ud1)&kChWNAoL*`>hSwA>hvCLr zthiVWv3*YdlE&N_V>EJTUh097p$?hPLy6H55N}=Z%-6<$CF#0ISKj*JX%A!Y@YfWU zI7_FSD4O;#9KYhcsjhA`?fniw^dI1=roGp8f&O(s(DR^b<4-2~jxqG00(~vSj8*ty z;=4G3LH4lH<}uL5-;cDv*lRLw(Yq{v6U)=12_?@HUK@W3$^U1J{QWF{3Cm;DWFkSE z2{p&Tcd6WdlL~A*`js^OFb_>M{2SyLr|}bYTpB43GAUwkb`ME=)-i)yuX+hmo_b7# z8%Y^Un@ogl{QXJ)Bo>PBEJ%*0$6Ttzwogl8lc^<|&HEY_LKI+(cs zq;w=iGDzpuSe-}0I+w8yx_u}Ts$CK(nWT27Nezxah45up+zQ7V2{0D#EAeZ7ZTtgC zzAJ7#!mqV__)lUqzt+;pa{^C?J_;Z|`aa7l5{tagvID#9$onkG?vEpTok5_dA^SE9 z$X;g#>0+;Qh3t33UO{Jlff2&Q-NW{>@d zFWikHzIJmS%uh0CPb1H&7JqlwF4(+I_ng&Q1 z-B9>>>=#@BCv=8WX@)z75TKTCK!Mt(zlxOcF@8{$Y#padRrF^|k*f4%_i?OaMtc+q zNXsT8U!*_dn|d`0C+N%aSQ_(Lv67ZOzzmUoCRW%nIb*UEKS=z#P-P@ z(&#t#q6HT*0b05Tr>PtOU!&Zh@fr1DfzZ*PT$vi?=fQ=|-j^un82pj9uZW_DxDrfu z>mg&B?ArSag=;tNZNu{&^#{#&Q%H;Ey9f4gf1D_C4dqGiIxc{f)u_Nc@h!fRtfgX} z__|R-O?->br4lMOO?>VBv!wb-Tz%NqNHBA>^u4 zrdyQSV^q#t=V3T}irqS2t|%7AQoKnN7+qT6Y(+6mC>n2_G2J^2@eJY9 z5K*>|Rl*xccmx$z+tw>#?%tgd!7G&DV^r9nd&AHFx+wj{CjAE@`ajZ?@3ZAMp^w+R z_F>LJxX9a~j?k9CyCjeIf|-o^P4})+#%D!1S18U4A!E>6EYjuoDAhI*Rlb`zE21`4 zsU4z@Zg4k|vXLIkcVPl`H&G#X=P3jT zT2af|sujDH%u^(TY%M@9c)>HXiQsKjxQq&6uNHVq5sWht&;|(>Op6fQrwG!B;0{$d zCPJ`K5nOB{n4n}Xi4crd1oa3tev3u?c#Tp$L=hOh>)eD~6+0IywSQ1~lYZQZ$u@k? zL$AUhxSnA$_;D9zCbWWVS1sL20zO+68SxehaYl4>Ybf+hgYR+R&$mVMhv4*(WaxU& zp-^brkD*XCP6z0ki>&}%@4|N#8cp9iP+x&ju}ZF#Hh&8dM`rw70~~CCN%oKE{DS%_ zF^wN2=Oay5^LM5RpAb27d2f`PpO@0#hrxf{;I+UaM2e%jy^s6rY)6efk$t%(K(jhv zYl1Z$F9doMNw|5-B;!UTOn*PZe{VMKW{2-+fDT)8(4q8B((i$5fbjnJ#O%qF-di5( zc?Bv7^-Sj96#h-)-vRua&c7M_JCJ_|^Y0M+;%^w~$Dl*X0-R51hJ#W)DMeer0=^rd z+nfSEsl1F*w1^r>l&Yl^9S;{gNhzFNX$7xPim7qDb@5$jTlUSNo^x?sUhn~xVO0#} z7S44SPS-|HEi1=gWS7!K1I{US<) z(x$l!i>4PAYeiE5$_p3f<4-m<4bMjSW4@9Z^vCAZ0Q!diaGcT@Y4`)sc>K{QrL-1F z=~`SVZn7@XS`b~_r{isOrO$clqQxy7qs7fnj7x0Ss`YXd5)D-s*n%eE6Gu09^hqGi z4vBZSNFeU^Efa7Gs(D)7+p@;CETK033ZPr?-H!O7&j_UX(@;;csh%o)kBB^V4}TiU zb9J5snyUWYC;a#B$<)R8WXN@>Tyy0*POekrI!mrDxh|KhVrl+u_CT`-nmy3$fo2ah zd!X3^%^qm>K(hy$J<#ldW)C!b;D5sdXJ68Z-WJn_WI4;GIrDCuHY-2RrQI|)ad{U0 z3)Xc0FMG~u_{VcNa;e0*ochEqpW8`kOf6gBEY6>&E!XBI#pLv-tUl4KQg?X)Wu>UB z>G?AXi}Rg%IG`!VzqTWK6lTN}&MBGhF3P9;teE_A{9C=Ed{;@ab56dipkz8pIF!T; zcQKy=A!oG8Da3hES#cW4j8{4MzkFenry!?@&zYQgB@mqNa`Hiwvv5vn5mfMrbK?IP zwrEO7OU@}SbcOZlzZ(wGS}4s-ZCJdvy#tPojx5B_#ybF37L5koiM{P?xSYb5uJoa! z8#)ZS9bY<)qGKF7op~N#I!xXP9bB|N_>vq>T3N2G>0g#1ON;*>k~<6as(*P#wf;Bi zC1GmdbV|sF&biE(-VvA)AE))ctd`ux4NgX@!~Y+Wp11WdVIMF#Ec_t{^}rWLb^IYb z3O{B{e5LeQ8=r0X5?>gTJn3`gxDqCPGba6wqQ8gaO_=0KKYad1nDoQ=C~z-4E-T1F z0-ts$BV3xrQ0pmpzThE(D+S*wc!}Ur!OI2v1g{XhO7Kd-^hX&~-)g~h)=zk?;GYEh z1-C?pQTax}-2~SOrZZzI-!Awj!Mg;{61-oqM{q#!qk@kJeogRk!So_N@oU-m;`4*x z)`DrIPCKg0B%=CwRQz?SkhD-X(ac;QfN15*!fxw%{Xz|0(#m;KPEop{oB|VfG{Y zS_@7RoG3U`a3{fI1SbieEx3(+dbxU!CC31#cJpv*2BV>EDl% z{C>go-(?5~1P>H^MDWdmj|(mmtV#TP1-BObxZp&=ZwT%rc)Q>v!G_>If?MFNX|g9p zaA(08f(HoB5;3|yE!5y*nA$yky zP8Pge@O6S$2%aK%rQijER|~#h@LIut6YLlKzTl05_Xw^N{JY@of^|H$Bl~sYF0?Q^5s-4+$<69Iq?+`GUI$t`tl!a&!L+ z9wm6W;F*F~2(A>oQt-oqR||ew@LIuJ1^Wdb6ueRJX~A`Z&rekLY!}=QSdWYDAF~99 z_lM&Ihxe~@fgv9G+}QvxZGivM06*0LuWx|2HNb%enErCWT)&1tMlj=c4e(l6x(?r$ z@qHEF*YJHE-#75}9Au=~i{5Th(!uRm-iy zCpFWmKQb)>E-l5%C7BitOiQt7M_P(Sf23K3Xj-a;uhLR2+L4xO;j6S%D|6E<8km-5 z)s8f)I{I7mN1ENL9aeFbW))Xy=~i{5TlHYNmD@9{+L2-9t4ynQSjAOZro~X}ZxvVR zX%-skR=>sghn~`BzU{Oa#rbQ2CSUEAnYH((zSW;Oy zF*C)&+)S&%nQ1jRGgGaotU4;ws%tZ?dN8xUMeJr;byTL+EShOG44PNxMjMt?tBy)- zUY+@IgK2Y@+Ppe9bV>8-+-O9lHLuPMqojFtZWJZ|&sXO^c#ADJ=1tt^)7^LYfwd{E w_9;}r52?)$!YSRvqiR#OJft?|G