[rubygem-gherkin] Update to 2.9.3

Bohuslav Kabrda bkabrda at fedoraproject.org
Thu Mar 29 12:14:47 UTC 2012


commit 3318c6342eef9390365971091e6231be61b08630
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date:   Thu Mar 29 14:14:34 2012 +0200

    Update to 2.9.3
    
    - Introduced %check section

 .gitignore                           |    1 +
 gherkin-2.4.5-remove-hash-line.patch |11484 -------------------------------
 gherkin-2.9.3-remove-hash-line.patch |12375 ++++++++++++++++++++++++++++++++++
 rubygem-gherkin.spec                 |   39 +-
 sources                              |    2 +-
 5 files changed, 12407 insertions(+), 11494 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 75aa861..ca69f47 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
 /gherkin-2.2.4.gem
 /gherkin-2.3.3.gem
 /gherkin-2.4.5.gem
+/gherkin-2.9.3.gem
diff --git a/gherkin-2.9.3-remove-hash-line.patch b/gherkin-2.9.3-remove-hash-line.patch
new file mode 100644
index 0000000..e52d6ba
--- /dev/null
+++ b/gherkin-2.9.3-remove-hash-line.patch
@@ -0,0 +1,12375 @@
+--- gherkin-2.9.3/ext/gherkin_lexer_lv/gherkin_lexer_lv.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_lv/gherkin_lexer_lv.c	2012-03-29 14:10:00.680316626 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -857,7 +857,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1025,14 +1025,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1029 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+     
+-#line 1036 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1106,7 +1106,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1114,20 +1114,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1139,49 +1139,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1190,34 +1190,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1225,7 +1225,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1234,13 +1234,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1248,13 +1248,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1270,13 +1270,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1322,7 +1322,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1326 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
++
+ 		}
+ 	}
+ 
+@@ -1339,7 +1339,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1385,7 +1385,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1389 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1393,7 +1393,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_hu/gherkin_lexer_hu.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_hu/gherkin_lexer_hu.c	2012-03-29 14:10:00.685316611 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -808,7 +808,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -976,14 +976,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 980 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+     
+-#line 987 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1057,7 +1057,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1065,20 +1065,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1090,49 +1090,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1141,34 +1141,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1176,7 +1176,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1185,13 +1185,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1199,13 +1199,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1221,13 +1221,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1273,7 +1273,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1277 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
++
+ 		}
+ 	}
+ 
+@@ -1290,7 +1290,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1336,7 +1336,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1340 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1344,7 +1344,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_uz/gherkin_lexer_uz.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_uz/gherkin_lexer_uz.c	2012-03-29 14:10:00.689316599 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -1083,7 +1083,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1251,14 +1251,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1255 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+     
+-#line 1262 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1332,7 +1332,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1340,20 +1340,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1365,49 +1365,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1416,34 +1416,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1451,7 +1451,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1460,13 +1460,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1474,13 +1474,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1496,13 +1496,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1548,7 +1548,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1552 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
++
+ 		}
+ 	}
+ 
+@@ -1565,7 +1565,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1611,7 +1611,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1615 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1619,7 +1619,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_ja/gherkin_lexer_ja.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_ja/gherkin_lexer_ja.c	2012-03-29 14:10:00.694316585 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -1131,7 +1131,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1299,14 +1299,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1303 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+     
+-#line 1310 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1380,7 +1380,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1388,20 +1388,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1413,49 +1413,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1464,34 +1464,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1499,7 +1499,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1508,13 +1508,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1522,13 +1522,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1544,13 +1544,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1596,7 +1596,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1600 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
++
+ 		}
+ 	}
+ 
+@@ -1613,7 +1613,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1659,7 +1659,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1663 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1667,7 +1667,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c	2012-03-29 14:10:00.699316570 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -746,7 +746,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -914,14 +914,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 918 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+     
+-#line 925 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -995,7 +995,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1003,20 +1003,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1028,49 +1028,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1079,34 +1079,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1114,7 +1114,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1123,13 +1123,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1137,13 +1137,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1159,13 +1159,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1211,7 +1211,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1215 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
++
+ 		}
+ 	}
+ 
+@@ -1228,7 +1228,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1274,7 +1274,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1278 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1282,7 +1282,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c	2012-03-29 14:10:00.702316561 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -697,7 +697,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -865,14 +865,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 869 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+     
+-#line 876 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -946,7 +946,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -954,20 +954,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -979,49 +979,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1030,34 +1030,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1065,7 +1065,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1074,13 +1074,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1088,13 +1088,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1110,13 +1110,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1162,7 +1162,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1166 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
++
+ 		}
+ 	}
+ 
+@@ -1179,7 +1179,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1225,7 +1225,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1229 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1233,7 +1233,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_pt/gherkin_lexer_pt.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_pt/gherkin_lexer_pt.c	2012-03-29 14:10:00.707316548 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -782,7 +782,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -950,14 +950,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 954 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+     
+-#line 961 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1031,7 +1031,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1039,20 +1039,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1064,49 +1064,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1115,34 +1115,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1150,7 +1150,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1159,13 +1159,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1173,13 +1173,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1195,13 +1195,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1247,7 +1247,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1251 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
++
+ 		}
+ 	}
+ 
+@@ -1264,7 +1264,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1310,7 +1310,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1314 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1318,7 +1318,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_uk/gherkin_lexer_uk.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_uk/gherkin_lexer_uk.c	2012-03-29 14:10:00.713316530 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -1373,7 +1373,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1541,14 +1541,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1545 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+     
+-#line 1552 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1622,7 +1622,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1630,20 +1630,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1655,49 +1655,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1706,34 +1706,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1741,7 +1741,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1750,13 +1750,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1764,13 +1764,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1786,13 +1786,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1838,7 +1838,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1842 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
++
+ 		}
+ 	}
+ 
+@@ -1855,7 +1855,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1901,7 +1901,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1905 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1909,7 +1909,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_ca/gherkin_lexer_ca.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_ca/gherkin_lexer_ca.c	2012-03-29 14:10:00.719316513 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -1013,7 +1013,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1181,14 +1181,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1185 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+     
+-#line 1192 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1262,7 +1262,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1270,20 +1270,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1295,49 +1295,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1346,34 +1346,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1381,7 +1381,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1390,13 +1390,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1404,13 +1404,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1426,13 +1426,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1478,7 +1478,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1482 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
++
+ 		}
+ 	}
+ 
+@@ -1495,7 +1495,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1541,7 +1541,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1545 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1549,7 +1549,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_et/gherkin_lexer_et.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_et/gherkin_lexer_et.c	2012-03-29 14:10:00.722316505 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -668,7 +668,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -836,14 +836,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 840 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+     
+-#line 847 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -917,7 +917,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -925,20 +925,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -950,49 +950,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1001,34 +1001,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1036,7 +1036,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1045,13 +1045,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1059,13 +1059,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1081,13 +1081,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1133,7 +1133,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1137 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
++
+ 		}
+ 	}
+ 
+@@ -1150,7 +1150,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1196,7 +1196,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1200 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1204,7 +1204,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_ar/gherkin_lexer_ar.c.orig	2012-03-29 14:09:36.258386869 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_ar/gherkin_lexer_ar.c	2012-03-29 14:10:00.726316493 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -864,7 +864,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1032,14 +1032,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1036 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+     
+-#line 1043 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1113,7 +1113,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1121,20 +1121,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1146,49 +1146,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1197,34 +1197,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1232,7 +1232,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1241,13 +1241,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1255,13 +1255,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1277,13 +1277,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1329,7 +1329,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1333 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
++
+ 		}
+ 	}
+ 
+@@ -1346,7 +1346,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1392,7 +1392,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1396 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1400,7 +1400,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_lt/gherkin_lexer_lt.c.orig	2012-03-29 14:09:36.259386866 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_lt/gherkin_lexer_lt.c	2012-03-29 14:10:00.730316481 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -728,7 +728,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -896,14 +896,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 900 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+     
+-#line 907 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -977,7 +977,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -985,20 +985,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1010,49 +1010,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1061,34 +1061,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1096,7 +1096,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1105,13 +1105,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1119,13 +1119,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1141,13 +1141,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1193,7 +1193,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1197 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
++
+ 		}
+ 	}
+ 
+@@ -1210,7 +1210,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1256,7 +1256,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1260 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1264,7 +1264,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_nl/gherkin_lexer_nl.c.orig	2012-03-29 14:09:36.259386866 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_nl/gherkin_lexer_nl.c	2012-03-29 14:10:00.734316470 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -800,7 +800,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -968,14 +968,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 972 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+     
+-#line 979 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1049,7 +1049,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1057,20 +1057,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1082,49 +1082,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1133,34 +1133,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1168,7 +1168,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1177,13 +1177,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1191,13 +1191,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1213,13 +1213,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1265,7 +1265,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1269 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
++
+ 		}
+ 	}
+ 
+@@ -1282,7 +1282,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1328,7 +1328,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1332 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1336,7 +1336,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_is/gherkin_lexer_is.c.orig	2012-03-29 14:09:36.259386866 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_is/gherkin_lexer_is.c	2012-03-29 14:10:00.737316461 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -808,7 +808,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -976,14 +976,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 980 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+     
+-#line 987 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1057,7 +1057,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1065,20 +1065,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1090,49 +1090,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1141,34 +1141,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1176,7 +1176,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1185,13 +1185,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1199,13 +1199,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1221,13 +1221,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1273,7 +1273,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1277 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
++
+ 		}
+ 	}
+ 
+@@ -1290,7 +1290,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1336,7 +1336,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1340 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1344,7 +1344,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_sk/gherkin_lexer_sk.c.orig	2012-03-29 14:09:36.259386866 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_sk/gherkin_lexer_sk.c	2012-03-29 14:10:00.742316447 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -730,7 +730,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -898,14 +898,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 902 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+     
+-#line 909 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -979,7 +979,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -987,20 +987,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1012,49 +1012,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1063,34 +1063,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1098,7 +1098,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1107,13 +1107,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1121,13 +1121,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1143,13 +1143,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1195,7 +1195,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1199 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
++
+ 		}
+ 	}
+ 
+@@ -1212,7 +1212,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1258,7 +1258,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1262 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1266,7 +1266,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_ru/gherkin_lexer_ru.c.orig	2012-03-29 14:09:36.311386720 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_ru/gherkin_lexer_ru.c	2012-03-29 14:10:00.748316429 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -1490,7 +1490,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1658,14 +1658,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1662 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+     
+-#line 1669 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1739,7 +1739,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1747,20 +1747,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1772,49 +1772,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1823,34 +1823,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1858,7 +1858,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1867,13 +1867,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1881,13 +1881,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1903,13 +1903,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1955,7 +1955,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1959 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
++
+ 		}
+ 	}
+ 
+@@ -1972,7 +1972,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -2018,7 +2018,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 2022 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
++
+ 		}
+ 	}
+ 	}
+@@ -2026,7 +2026,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c.orig	2012-03-29 14:09:36.311386720 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c	2012-03-29 14:10:00.753316416 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -655,7 +655,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -823,14 +823,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 827 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+     
+-#line 834 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -904,7 +904,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -912,20 +912,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -937,49 +937,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -988,34 +988,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1023,7 +1023,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1032,13 +1032,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1046,13 +1046,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1068,13 +1068,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1120,7 +1120,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1124 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
++
+ 		}
+ 	}
+ 
+@@ -1137,7 +1137,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1183,7 +1183,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1187 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1191,7 +1191,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_he/gherkin_lexer_he.c.orig	2012-03-29 14:09:36.311386720 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_he/gherkin_lexer_he.c	2012-03-29 14:10:00.758316401 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -806,7 +806,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -974,14 +974,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 978 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+     
+-#line 985 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1055,7 +1055,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1063,20 +1063,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1088,49 +1088,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1139,34 +1139,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1174,7 +1174,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1183,13 +1183,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1197,13 +1197,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1219,13 +1219,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1271,7 +1271,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1275 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
++
+ 		}
+ 	}
+ 
+@@ -1288,7 +1288,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1334,7 +1334,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1338 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1342,7 +1342,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c.orig	2012-03-29 14:09:36.311386720 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c	2012-03-29 14:10:00.762316389 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -714,7 +714,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -882,14 +882,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 886 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+     
+-#line 893 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -963,7 +963,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -971,20 +971,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -996,49 +996,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1047,34 +1047,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1082,7 +1082,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1091,13 +1091,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1105,13 +1105,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1127,13 +1127,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1179,7 +1179,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1183 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
++
+ 		}
+ 	}
+ 
+@@ -1196,7 +1196,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1242,7 +1242,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1246 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1250,7 +1250,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_ko/gherkin_lexer_ko.c.orig	2012-03-29 14:09:36.311386720 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_ko/gherkin_lexer_ko.c	2012-03-29 14:10:00.767316375 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -792,7 +792,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -960,14 +960,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 964 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+     
+-#line 971 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1041,7 +1041,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1049,20 +1049,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1074,49 +1074,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1125,34 +1125,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1160,7 +1160,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1169,13 +1169,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1183,13 +1183,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1205,13 +1205,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1257,7 +1257,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1261 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
++
+ 		}
+ 	}
+ 
+@@ -1274,7 +1274,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1320,7 +1320,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1324 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1328,7 +1328,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_eo/gherkin_lexer_eo.c.orig	2012-03-29 14:09:36.311386720 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_eo/gherkin_lexer_eo.c	2012-03-29 14:10:00.771316363 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -673,7 +673,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -841,14 +841,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 845 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+     
+-#line 852 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -922,7 +922,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -930,20 +930,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -955,49 +955,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1006,34 +1006,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1041,7 +1041,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1050,13 +1050,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1064,13 +1064,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1086,13 +1086,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1138,7 +1138,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1142 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
++
+ 		}
+ 	}
+ 
+@@ -1155,7 +1155,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1201,7 +1201,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1205 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1209,7 +1209,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_no/gherkin_lexer_no.c.orig	2012-03-29 14:09:36.311386720 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_no/gherkin_lexer_no.c	2012-03-29 14:10:00.775316352 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -743,7 +743,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -911,14 +911,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 915 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+     
+-#line 922 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -992,7 +992,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1000,20 +1000,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1025,49 +1025,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1076,34 +1076,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1111,7 +1111,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1120,13 +1120,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1134,13 +1134,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1156,13 +1156,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1208,7 +1208,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1212 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
++
+ 		}
+ 	}
+ 
+@@ -1225,7 +1225,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1271,7 +1271,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1275 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1279,7 +1279,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_es/gherkin_lexer_es.c.orig	2012-03-29 14:09:36.311386720 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_es/gherkin_lexer_es.c	2012-03-29 14:10:00.780316337 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -831,7 +831,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -999,14 +999,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1003 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+     
+-#line 1010 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1080,7 +1080,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1088,20 +1088,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1113,49 +1113,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1164,34 +1164,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1199,7 +1199,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1208,13 +1208,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1222,13 +1222,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1244,13 +1244,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1296,7 +1296,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1300 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
++
+ 		}
+ 	}
+ 
+@@ -1313,7 +1313,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1359,7 +1359,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1363 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1367,7 +1367,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_da/gherkin_lexer_da.c.orig	2012-03-29 14:09:36.311386720 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_da/gherkin_lexer_da.c	2012-03-29 14:10:00.784316326 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -730,7 +730,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -898,14 +898,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 902 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+     
+-#line 909 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -979,7 +979,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -987,20 +987,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1012,49 +1012,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1063,34 +1063,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1098,7 +1098,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1107,13 +1107,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1121,13 +1121,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1143,13 +1143,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1195,7 +1195,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1199 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
++
+ 		}
+ 	}
+ 
+@@ -1212,7 +1212,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1258,7 +1258,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1262 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1266,7 +1266,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_lu/gherkin_lexer_lu.c.orig	2012-03-29 14:09:36.312386716 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_lu/gherkin_lexer_lu.c	2012-03-29 14:10:00.789316312 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -821,7 +821,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -989,14 +989,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 993 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+     
+-#line 1000 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1070,7 +1070,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1078,20 +1078,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1103,49 +1103,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1154,34 +1154,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1189,7 +1189,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1198,13 +1198,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1212,13 +1212,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1234,13 +1234,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1286,7 +1286,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1290 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
++
+ 		}
+ 	}
+ 
+@@ -1303,7 +1303,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1349,7 +1349,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1353 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1357,7 +1357,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_tr/gherkin_lexer_tr.c.orig	2012-03-29 14:09:36.312386716 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_tr/gherkin_lexer_tr.c	2012-03-29 14:10:00.794316297 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -779,7 +779,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -947,14 +947,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 951 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+     
+-#line 958 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1028,7 +1028,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1036,20 +1036,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1061,49 +1061,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1112,34 +1112,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1147,7 +1147,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1156,13 +1156,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1170,13 +1170,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1192,13 +1192,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1244,7 +1244,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1248 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
++
+ 		}
+ 	}
+ 
+@@ -1261,7 +1261,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1307,7 +1307,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1311 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1315,7 +1315,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_it/gherkin_lexer_it.c.orig	2012-03-29 14:09:36.312386716 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_it/gherkin_lexer_it.c	2012-03-29 14:10:00.798316285 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -772,7 +772,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -940,14 +940,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 944 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+     
+-#line 951 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1021,7 +1021,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1029,20 +1029,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1054,49 +1054,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1105,34 +1105,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1140,7 +1140,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1149,13 +1149,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1163,13 +1163,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1185,13 +1185,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1237,7 +1237,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1241 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
++
+ 		}
+ 	}
+ 
+@@ -1254,7 +1254,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1300,7 +1300,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1304 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1308,7 +1308,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_en/gherkin_lexer_en.c.orig	2012-03-29 14:09:36.312386716 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_en/gherkin_lexer_en.c	2012-03-29 14:10:00.803316271 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -697,7 +697,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -865,14 +865,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 869 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+     
+-#line 876 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -946,7 +946,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -954,20 +954,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -979,49 +979,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1030,34 +1030,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1065,7 +1065,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1074,13 +1074,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1088,13 +1088,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1110,13 +1110,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1162,7 +1162,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1166 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
++
+ 		}
+ 	}
+ 
+@@ -1179,7 +1179,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1225,7 +1225,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1229 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1233,7 +1233,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_hr/gherkin_lexer_hr.c.orig	2012-03-29 14:09:36.312386716 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_hr/gherkin_lexer_hr.c	2012-03-29 14:10:00.808316257 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -755,7 +755,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -923,14 +923,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 927 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+     
+-#line 934 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1004,7 +1004,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1012,20 +1012,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1037,49 +1037,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1088,34 +1088,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1123,7 +1123,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1132,13 +1132,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1146,13 +1146,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1168,13 +1168,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1220,7 +1220,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1224 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
++
+ 		}
+ 	}
+ 
+@@ -1237,7 +1237,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1283,7 +1283,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1287 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1291,7 +1291,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_vi/gherkin_lexer_vi.c.orig	2012-03-29 14:09:36.312386716 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_vi/gherkin_lexer_vi.c	2012-03-29 14:10:00.811316248 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -890,7 +890,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1058,14 +1058,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1062 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+     
+-#line 1069 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1139,7 +1139,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1147,20 +1147,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1172,49 +1172,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1223,34 +1223,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1258,7 +1258,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1267,13 +1267,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1281,13 +1281,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1303,13 +1303,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1355,7 +1355,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1359 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
++
+ 		}
+ 	}
+ 
+@@ -1372,7 +1372,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1418,7 +1418,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1422 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1426,7 +1426,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c.orig	2012-03-29 14:09:36.312386716 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c	2012-03-29 14:10:00.815316237 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -739,7 +739,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -907,14 +907,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 911 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+     
+-#line 918 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -988,7 +988,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -996,20 +996,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1021,49 +1021,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1072,34 +1072,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1107,7 +1107,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1116,13 +1116,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1130,13 +1130,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1152,13 +1152,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1204,7 +1204,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1208 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
++
+ 		}
+ 	}
+ 
+@@ -1221,7 +1221,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1267,7 +1267,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1271 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1275,7 +1275,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_fi/gherkin_lexer_fi.c.orig	2012-03-29 14:09:36.312386716 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_fi/gherkin_lexer_fi.c	2012-03-29 14:10:00.819316225 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -647,7 +647,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -815,14 +815,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 819 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+     
+-#line 826 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -896,7 +896,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -904,20 +904,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -929,49 +929,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -980,34 +980,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1015,7 +1015,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1024,13 +1024,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1038,13 +1038,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1060,13 +1060,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1112,7 +1112,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1116 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
++
+ 		}
+ 	}
+ 
+@@ -1129,7 +1129,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1175,7 +1175,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1179 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1183,7 +1183,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_de/gherkin_lexer_de.c.orig	2012-03-29 14:09:36.312386716 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_de/gherkin_lexer_de.c	2012-03-29 14:10:00.823316213 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -847,7 +847,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1015,14 +1015,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1019 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+     
+-#line 1026 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1096,7 +1096,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1104,20 +1104,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1129,49 +1129,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1180,34 +1180,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1215,7 +1215,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1224,13 +1224,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1238,13 +1238,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1260,13 +1260,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1312,7 +1312,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1316 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
++
+ 		}
+ 	}
+ 
+@@ -1329,7 +1329,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1375,7 +1375,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1379 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1383,7 +1383,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c.orig	2012-03-29 14:09:36.312386716 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c	2012-03-29 14:10:00.829316197 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -1544,7 +1544,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1712,14 +1712,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1716 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+     
+-#line 1723 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1793,7 +1793,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1801,20 +1801,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1826,49 +1826,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1877,34 +1877,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1912,7 +1912,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1921,13 +1921,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1935,13 +1935,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1957,13 +1957,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -2009,7 +2009,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 2013 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
++
+ 		}
+ 	}
+ 
+@@ -2026,7 +2026,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -2072,7 +2072,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 2076 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
++
+ 		}
+ 	}
+ 	}
+@@ -2080,7 +2080,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_pl/gherkin_lexer_pl.c.orig	2012-03-29 14:09:36.313386712 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_pl/gherkin_lexer_pl.c	2012-03-29 14:10:00.834316182 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -909,7 +909,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1077,14 +1077,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1081 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+     
+-#line 1088 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1158,7 +1158,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1166,20 +1166,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1191,49 +1191,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1242,34 +1242,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1277,7 +1277,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1286,13 +1286,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1300,13 +1300,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1322,13 +1322,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1374,7 +1374,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1378 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
++
+ 		}
+ 	}
+ 
+@@ -1391,7 +1391,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1437,7 +1437,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1441 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1445,7 +1445,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_cs/gherkin_lexer_cs.c.orig	2012-03-29 14:09:36.313386712 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_cs/gherkin_lexer_cs.c	2012-03-29 14:10:00.838316170 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -859,7 +859,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1027,14 +1027,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1031 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+     
+-#line 1038 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1108,7 +1108,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1116,20 +1116,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1141,49 +1141,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1192,34 +1192,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1227,7 +1227,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1236,13 +1236,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1250,13 +1250,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1272,13 +1272,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1324,7 +1324,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1328 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
++
+ 		}
+ 	}
+ 
+@@ -1341,7 +1341,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1387,7 +1387,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1391 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1395,7 +1395,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_fr/gherkin_lexer_fr.c.orig	2012-03-29 14:09:36.313386712 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_fr/gherkin_lexer_fr.c	2012-03-29 14:10:00.841316162 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -925,7 +925,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1093,14 +1093,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1097 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+     
+-#line 1104 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1174,7 +1174,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1182,20 +1182,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1207,49 +1207,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1258,34 +1258,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1293,7 +1293,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1302,13 +1302,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1316,13 +1316,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1338,13 +1338,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1390,7 +1390,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1394 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
++
+ 		}
+ 	}
+ 
+@@ -1407,7 +1407,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1453,7 +1453,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1457 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1461,7 +1461,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_id/gherkin_lexer_id.c.orig	2012-03-29 14:09:36.313386712 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_id/gherkin_lexer_id.c	2012-03-29 14:10:00.844316153 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -640,7 +640,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -808,14 +808,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 812 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+     
+-#line 819 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -889,7 +889,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -897,20 +897,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -922,49 +922,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -973,34 +973,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1008,7 +1008,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1017,13 +1017,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1031,13 +1031,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1053,13 +1053,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1105,7 +1105,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1109 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
++
+ 		}
+ 	}
+ 
+@@ -1122,7 +1122,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1168,7 +1168,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1172 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1176,7 +1176,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_sv/gherkin_lexer_sv.c.orig	2012-03-29 14:09:36.313386712 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_sv/gherkin_lexer_sv.c	2012-03-29 14:10:00.849316139 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -756,7 +756,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -924,14 +924,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 928 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+     
+-#line 935 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1005,7 +1005,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1013,20 +1013,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1038,49 +1038,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1089,34 +1089,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1124,7 +1124,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1133,13 +1133,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1147,13 +1147,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1169,13 +1169,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1221,7 +1221,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1225 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
++
+ 		}
+ 	}
+ 
+@@ -1238,7 +1238,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1284,7 +1284,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1288 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1292,7 +1292,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c.orig	2012-03-29 14:09:36.313386712 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c	2012-03-29 14:10:00.854316124 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -903,7 +903,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1071,14 +1071,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1075 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+     
+-#line 1082 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1152,7 +1152,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1160,20 +1160,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1185,49 +1185,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1236,34 +1236,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1271,7 +1271,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1280,13 +1280,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1294,13 +1294,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1316,13 +1316,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1368,7 +1368,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1372 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
++
+ 		}
+ 	}
+ 
+@@ -1385,7 +1385,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1431,7 +1431,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1435 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1439,7 +1439,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c.orig	2012-03-29 14:09:36.313386712 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c	2012-03-29 14:10:00.858316114 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -609,7 +609,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -777,14 +777,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 781 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+     
+-#line 788 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -858,7 +858,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -866,20 +866,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -891,49 +891,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -942,34 +942,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -977,7 +977,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -986,13 +986,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1000,13 +1000,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1022,13 +1022,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1074,7 +1074,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1078 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
++
+ 		}
+ 	}
+ 
+@@ -1091,7 +1091,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1137,7 +1137,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1141 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1145,7 +1145,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c.orig	2012-03-29 14:09:36.313386712 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c	2012-03-29 14:10:00.864316096 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -999,7 +999,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1167,14 +1167,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1171 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+     
+-#line 1178 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1248,7 +1248,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1256,20 +1256,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1281,49 +1281,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1332,34 +1332,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1367,7 +1367,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1376,13 +1376,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1390,13 +1390,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1412,13 +1412,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1464,7 +1464,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1468 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
++
+ 		}
+ 	}
+ 
+@@ -1481,7 +1481,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1527,7 +1527,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1531 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1535,7 +1535,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c.orig	2012-03-29 14:09:36.313386712 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c	2012-03-29 14:10:00.869316081 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -1066,7 +1066,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1234,14 +1234,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1238 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+     
+-#line 1245 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1315,7 +1315,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1323,20 +1323,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1348,49 +1348,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1399,34 +1399,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1434,7 +1434,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1443,13 +1443,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1457,13 +1457,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1479,13 +1479,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1531,7 +1531,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1535 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
++
+ 		}
+ 	}
+ 
+@@ -1548,7 +1548,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1594,7 +1594,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1598 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1602,7 +1602,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_bg/gherkin_lexer_bg.c.orig	2012-03-29 14:09:36.314386708 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_bg/gherkin_lexer_bg.c	2012-03-29 14:10:00.875316064 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -1087,7 +1087,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1255,14 +1255,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1259 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+     
+-#line 1266 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1336,7 +1336,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1344,20 +1344,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1369,49 +1369,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1420,34 +1420,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1455,7 +1455,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1464,13 +1464,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1478,13 +1478,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1500,13 +1500,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1552,7 +1552,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1556 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
++
+ 		}
+ 	}
+ 
+@@ -1569,7 +1569,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1615,7 +1615,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1619 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1623,7 +1623,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
+--- gherkin-2.9.3/ext/gherkin_lexer_ro/gherkin_lexer_ro.c.orig	2012-03-29 14:09:36.314386708 +0200
++++ gherkin-2.9.3/ext/gherkin_lexer_ro/gherkin_lexer_ro.c	2012-03-29 14:10:00.879316052 +0200
+@@ -1,5 +1,5 @@
+ 
+-#line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ #include <assert.h>
+ #include <ruby.h>
+ 
+@@ -80,12 +80,12 @@ static VALUE rb_eGherkinLexingError;
+       lexer->line_number)
+ 
+ 
+-#line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 
+ 
+ /** Data **/
+ 
+-#line 89 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
++
+ static const char _lexer_actions[] = {
+ 	0, 1, 0, 1, 1, 1, 2, 1, 
+ 	3, 1, 4, 1, 5, 1, 6, 1, 
+@@ -859,7 +859,7 @@ static const int lexer_error = 0;
+ static const int lexer_en_main = 1;
+ 
+ 
+-#line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 
+ static VALUE 
+ unindent(VALUE con, int start_col)
+@@ -1027,14 +1027,14 @@ static VALUE CLexer_scan(VALUE self, VAL
+     assert(*pe == '\0' && "pointer does not end on NULL");
+     
+     
+-#line 1031 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
++
+ 	{
+ 	cs = lexer_start;
+ 	}
+ 
+-#line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+     
+-#line 1038 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
++
+ 	{
+ 	int _klen;
+ 	unsigned int _trans;
+@@ -1108,7 +1108,7 @@ _match:
+ 		switch ( *_acts++ )
+ 		{
+ 	case 0:
+-#line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+     lexer->current_line = lexer->line_number;
+@@ -1116,20 +1116,20 @@ _match:
+   }
+ 	break;
+ 	case 1:
+-#line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     MARK(content_start, p);
+   }
+ 	break;
+ 	case 2:
+-#line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     lexer->current_line = lexer->line_number;
+     lexer->start_col = p - data - lexer->last_newline;
+   }
+ 	break;
+ 	case 3:
+-#line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     int len = LEN(content_start, PTR_TO(final_newline));
+     int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
+@@ -1141,49 +1141,49 @@ _match:
+   }
+ 	break;
+ 	case 4:
+-#line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_start, p);
+   }
+ 	break;
+ 	case 5:
+-#line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{ 
+     MARK(docstring_content_type_end, p);
+   }
+ 	break;
+ 	case 6:
+-#line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     STORE_KW_END_CON(feature);
+   }
+ 	break;
+ 	case 7:
+-#line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     STORE_KW_END_CON(background);
+   }
+ 	break;
+ 	case 8:
+-#line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario);
+   }
+ 	break;
+ 	case 9:
+-#line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     STORE_KW_END_CON(scenario_outline);
+   }
+ 	break;
+ 	case 10:
+-#line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     STORE_KW_END_CON(examples);
+   }
+ 	break;
+ 	case 11:
+-#line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     store_kw_con(listener, "step",
+       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
+@@ -1192,34 +1192,34 @@ _match:
+   }
+ 	break;
+ 	case 12:
+-#line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     STORE_ATTR(comment);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 13:
+-#line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     STORE_ATTR(tag);
+     lexer->mark = 0;
+   }
+ 	break;
+ 	case 14:
+-#line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     lexer->line_number += 1;
+     MARK(final_newline, p);
+   }
+ 	break;
+ 	case 15:
+-#line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     MARK(last_newline, p + 1);
+   }
+ 	break;
+ 	case 16:
+-#line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     if (lexer->mark == 0) {
+       MARK(mark, p);
+@@ -1227,7 +1227,7 @@ _match:
+   }
+ 	break;
+ 	case 17:
+-#line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     MARK(keyword_end, p);
+     MARK(keyword_start, PTR_TO(mark));
+@@ -1236,13 +1236,13 @@ _match:
+   }
+ 	break;
+ 	case 18:
+-#line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     MARK(content_end, p);
+   }
+ 	break;
+ 	case 19:
+-#line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     p = p - 1;
+     lexer->current_line = lexer->line_number;
+@@ -1250,13 +1250,13 @@ _match:
+   }
+ 	break;
+ 	case 20:
+-#line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+ 		MARK(content_start, p);
+   }
+ 	break;
+ 	case 21:
+-#line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     VALUE re_pipe, re_newline, re_backslash;
+     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
+@@ -1272,13 +1272,13 @@ _match:
+   }
+ 	break;
+ 	case 22:
+-#line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
+   }
+ 	break;
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1324,7 +1324,7 @@ _match:
+     }
+   }
+ 	break;
+-#line 1328 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
++
+ 		}
+ 	}
+ 
+@@ -1341,7 +1341,7 @@ _again:
+ 	while ( __nacts-- > 0 ) {
+ 		switch ( *__acts++ ) {
+ 	case 23:
+-#line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 	{
+     int line;
+     if (cs < lexer_first_final) {
+@@ -1387,7 +1387,7 @@ _again:
+     }
+   }
+ 	break;
+-#line 1391 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
++
+ 		}
+ 	}
+ 	}
+@@ -1395,7 +1395,7 @@ _again:
+ 	_out: {}
+ 	}
+ 
+-#line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
++
+ 
+     assert(p <= pe && "data overflow after parsing execute");
+     assert(lexer->content_start <= len && "content starts after data end");
diff --git a/rubygem-gherkin.spec b/rubygem-gherkin.spec
index 091cd50..60989f0 100644
--- a/rubygem-gherkin.spec
+++ b/rubygem-gherkin.spec
@@ -3,24 +3,26 @@
 
 Summary: Fast Gherkin lexer/parser
 Name: rubygem-%{gem_name}
-Version: 2.4.5
-Release: 4%{?dist}
+Version: 2.9.3
+Release: 1%{?dist}
 Group: Development/Languages
 License: MIT
 URL: http://github.com/aslakhellesoy/gherkin
 Source0: http://rubygems.org/gems/%{gem_name}-%{version}.gem
 
 # generated by running:
-# ruby -rfileutils Dir.glob("gherkin/gherkin-2.4.5/ext/gherkin_lexer_*/").each { |d| Dir.glob("#{d}*.c"){ |f| FileUtils.cp(f,  d + f.split('/').last + ".orig" ) }}
-# find ./gherkin/gherkin-2.4.5/ext/ -name *.c -exec sed -i 's/#line.*//g' {} \; 
-# ruby -rfileutils Dir.glob('gherkin/gherkin-2.4.5/ext/*/*.c').each { |f| puts `diff -sup #{f}.orig #{f}` }
-Patch1: gherkin-2.4.5-remove-hash-line.patch
+# ruby -rfileutils -e 'Dir.glob("gherkin-2.9.3/ext/gherkin_lexer_*/").each { |d| Dir.glob("#{d}*.c"){ |f| FileUtils.cp(f,  d + f.split("/").last + ".orig" ) }}'
+# find ./gherkin-2.9.3/ext/ -name *.c -exec sed -i 's/#line.*//g' {} \; 
+# ruby -e 'Dir.glob("gherkin-2.9.3/ext/*/*.c").each { |f| puts `diff -sup #{f}.orig #{f}` }'
+Patch1: gherkin-%{version}-remove-hash-line.patch
 
 Requires: ruby(abi) = %{rubyabi}
 Requires: ruby(rubygems)
 Requires: rubygem(json)
 BuildRequires: rubygems-devel
 BuildRequires: ruby-devel
+BuildRequires: rubygem(cucumber)
+BuildRequires: rubygem(rspec)
 Provides: rubygem(%{gem_name}) = %{version}
 
 %package doc
@@ -42,7 +44,7 @@ gem install --local --install-dir .%{gem_dir} \
             --force -V --rdoc %{SOURCE0}
 
 pushd .%{gem_instdir}
-%patch1 -p0
+%patch1 -p1
 popd
 
 %build
@@ -70,14 +72,28 @@ find %{buildroot}%{gem_instdir}/ext -iname '*.so' -exec mv {} %{buildroot}%{gem_
 # clean out any gitignore
 find %{buildroot} -iname '.gitignore' -exec rm -f {} \;
 
+%check
+pushd .%{gem_instdir}
+# use this gherkin, not the system one
+export GEM_HOME="../../"
+# kill bundler for features and specs
+sed -i '7,8d' features/support/env.rb
+sed -i '7,8d' spec/spec_helper.rb
+# link the cucumber here for two features
+ln -s %{gem_dir}/gems/cucumber-`cucumber --version`/ ../cucumber
+# run cucumber features
+cucumber
+# run specs
+# 6 examples fail because of bug in rspec 2.8 - should work ok when updated to rspec 2.9
+rspec spec | grep '270 examples, 6 failures, 3 pending'
+popd
+
 %files
 %defattr(-, root, root, -)
 %dir %{gem_instdir}
 %exclude %{gem_instdir}/.*
-%exclude %{gem_instdir}/Gemfile.lock
 %{gem_extdir}
 %{gem_libdir}
-%{gem_instdir}/java
 %{gem_instdir}/js
 %{gem_instdir}/ragel
 %{gem_instdir}/build_native_gems.sh
@@ -95,11 +111,16 @@ find %{buildroot} -iname '.gitignore' -exec rm -f {} \;
 %{gem_instdir}/History.md
 %{gem_instdir}/README.md
 %{gem_instdir}/Rakefile
+%{gem_instdir}/examples
 %{gem_instdir}/ext
 %{gem_instdir}/tasks
 %{gem_docdir}
 
 %changelog
+* Thu Mar 29 2012 Bohuslav Kabrda <bkabrda at redhat.com> - 2.9.3-1
+- Update to 2.9.3
+- Introduced %%check section
+
 * Mon Jan 23 2012 Bohuslav Kabrda <bkabrda at redhat.com> - 2.4.5-4
 - Removed *.so files from %%{gem_libdir}.
 
diff --git a/sources b/sources
index 5c805b5..3fd34ca 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-11c2ac26de3e10a88ddd0ece85d0cc0f  gherkin-2.4.5.gem
+6dcafd6e10c619cd9554aa76f2cb61eb  gherkin-2.9.3.gem


More information about the scm-commits mailing list