Blob Blame History Raw
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_ar/gherkin_lexer_ar.c gherkin-2.3.3/ext/gherkin_lexer_ar/gherkin_lexer_ar.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_ar/gherkin_lexer_ar.c	2011-06-27 13:39:38.466378538 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_ar/gherkin_lexer_ar.c	2011-06-27 13:46:17.579321670 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -856,7 +856,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1012,14 +1012,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1016 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
     
-#line 1023 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1093,7 +1093,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1101,20 +1101,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1124,37 +1124,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1163,34 +1163,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1198,7 +1198,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1207,13 +1207,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1221,13 +1221,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1242,13 +1242,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1294,7 +1294,7 @@ _match:
     }
   }
 	break;
-#line 1298 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
+ 
 		}
 	}
 
@@ -1311,7 +1311,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1357,7 +1357,7 @@ _again:
     }
   }
 	break;
-#line 1361 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
+ 
 		}
 	}
 	}
@@ -1365,7 +1365,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_bg/gherkin_lexer_bg.c gherkin-2.3.3/ext/gherkin_lexer_bg/gherkin_lexer_bg.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_bg/gherkin_lexer_bg.c	2011-06-27 13:39:38.466378538 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_bg/gherkin_lexer_bg.c	2011-06-27 13:46:17.589322095 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -1082,7 +1082,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1238,14 +1238,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1242 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
     
-#line 1249 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1319,7 +1319,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1327,20 +1327,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1350,37 +1350,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1389,34 +1389,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1424,7 +1424,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1433,13 +1433,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1447,13 +1447,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1468,13 +1468,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1520,7 +1520,7 @@ _match:
     }
   }
 	break;
-#line 1524 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
+ 
 		}
 	}
 
@@ -1537,7 +1537,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/bg.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1583,7 +1583,7 @@ _again:
     }
   }
 	break;
-#line 1587 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
+ 
 		}
 	}
 	}
@@ -1591,7 +1591,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_ca/gherkin_lexer_ca.c gherkin-2.3.3/ext/gherkin_lexer_ca/gherkin_lexer_ca.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_ca/gherkin_lexer_ca.c	2011-06-27 13:39:38.466378538 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_ca/gherkin_lexer_ca.c	2011-06-27 13:46:17.599322521 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -1008,7 +1008,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1164,14 +1164,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1168 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
     
-#line 1175 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1245,7 +1245,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1253,20 +1253,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1276,37 +1276,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1315,34 +1315,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1350,7 +1350,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1359,13 +1359,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1373,13 +1373,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1394,13 +1394,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1446,7 +1446,7 @@ _match:
     }
   }
 	break;
-#line 1450 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
+ 
 		}
 	}
 
@@ -1463,7 +1463,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ca.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1509,7 +1509,7 @@ _again:
     }
   }
 	break;
-#line 1513 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
+ 
 		}
 	}
 	}
@@ -1517,7 +1517,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_cs/gherkin_lexer_cs.c gherkin-2.3.3/ext/gherkin_lexer_cs/gherkin_lexer_cs.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_cs/gherkin_lexer_cs.c	2011-06-27 13:39:38.467378580 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_cs/gherkin_lexer_cs.c	2011-06-27 13:46:17.654324862 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -854,7 +854,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1010,14 +1010,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1014 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
     
-#line 1021 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1091,7 +1091,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1099,20 +1099,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1122,37 +1122,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1161,34 +1161,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1196,7 +1196,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1205,13 +1205,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1219,13 +1219,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1240,13 +1240,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1292,7 +1292,7 @@ _match:
     }
   }
 	break;
-#line 1296 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
+ 
 		}
 	}
 
@@ -1309,7 +1309,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cs.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1355,7 +1355,7 @@ _again:
     }
   }
 	break;
-#line 1359 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
+ 
 		}
 	}
 	}
@@ -1363,7 +1363,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c gherkin-2.3.3/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c	2011-06-27 13:39:38.467378580 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c	2011-06-27 13:46:17.738328437 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -709,7 +709,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.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_cy_gb/gherkin_lexer_cy_gb.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
     
-#line 876 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -946,7 +946,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -954,20 +954,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -977,37 +977,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1016,34 +1016,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1051,7 +1051,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1060,13 +1060,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1074,13 +1074,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1095,13 +1095,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1147,7 +1147,7 @@ _match:
     }
   }
 	break;
-#line 1151 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
+ 
 		}
 	}
 
@@ -1164,7 +1164,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1210,7 +1210,7 @@ _again:
     }
   }
 	break;
-#line 1214 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
+ 
 		}
 	}
 	}
@@ -1218,7 +1218,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_da/gherkin_lexer_da.c gherkin-2.3.3/ext/gherkin_lexer_da/gherkin_lexer_da.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_da/gherkin_lexer_da.c	2011-06-27 13:39:38.467378580 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_da/gherkin_lexer_da.c	2011-06-27 13:46:17.772329884 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -725,7 +725,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -881,14 +881,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 885 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
     
-#line 892 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -962,7 +962,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -970,20 +970,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -993,37 +993,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1032,34 +1032,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1067,7 +1067,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1076,13 +1076,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1090,13 +1090,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1111,13 +1111,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1163,7 +1163,7 @@ _match:
     }
   }
 	break;
-#line 1167 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
+ 
 		}
 	}
 
@@ -1180,7 +1180,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/da.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1226,7 +1226,7 @@ _again:
     }
   }
 	break;
-#line 1230 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
+ 
 		}
 	}
 	}
@@ -1234,7 +1234,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_de/gherkin_lexer_de.c gherkin-2.3.3/ext/gherkin_lexer_de/gherkin_lexer_de.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_de/gherkin_lexer_de.c	2011-06-27 13:39:38.468378623 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_de/gherkin_lexer_de.c	2011-06-27 13:46:17.798330991 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -842,7 +842,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -998,14 +998,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1002 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
     
-#line 1009 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1079,7 +1079,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1087,20 +1087,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1110,37 +1110,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1149,34 +1149,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1184,7 +1184,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1193,13 +1193,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1207,13 +1207,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1228,13 +1228,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1280,7 +1280,7 @@ _match:
     }
   }
 	break;
-#line 1284 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
+ 
 		}
 	}
 
@@ -1297,7 +1297,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/de.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1343,7 +1343,7 @@ _again:
     }
   }
 	break;
-#line 1347 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
+ 
 		}
 	}
 	}
@@ -1351,7 +1351,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_en/gherkin_lexer_en.c gherkin-2.3.3/ext/gherkin_lexer_en/gherkin_lexer_en.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_en/gherkin_lexer_en.c	2011-06-27 13:39:38.483379258 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_en/gherkin_lexer_en.c	2011-06-27 13:46:17.817331800 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -692,7 +692,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -848,14 +848,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 852 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
     
-#line 859 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -929,7 +929,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -937,20 +937,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -960,37 +960,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -999,34 +999,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1034,7 +1034,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1043,13 +1043,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1057,13 +1057,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1078,13 +1078,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1130,7 +1130,7 @@ _match:
     }
   }
 	break;
-#line 1134 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
+ 
 		}
 	}
 
@@ -1147,7 +1147,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1193,7 +1193,7 @@ _again:
     }
   }
 	break;
-#line 1197 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
+ 
 		}
 	}
 	}
@@ -1201,7 +1201,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c gherkin-2.3.3/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c	2011-06-27 13:39:38.483379258 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c	2011-06-27 13:46:17.850333204 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -650,7 +650,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -806,14 +806,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 810 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
     
-#line 817 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -887,7 +887,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -895,20 +895,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -918,37 +918,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -957,34 +957,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -992,7 +992,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1001,13 +1001,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1015,13 +1015,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1036,13 +1036,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1088,7 +1088,7 @@ _match:
     }
   }
 	break;
-#line 1092 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
+ 
 		}
 	}
 
@@ -1105,7 +1105,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_au.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1151,7 +1151,7 @@ _again:
     }
   }
 	break;
-#line 1155 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
+ 
 		}
 	}
 	}
@@ -1159,7 +1159,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c gherkin-2.3.3/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c	2011-06-27 13:39:38.483379258 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c	2011-06-27 13:46:17.866333885 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -602,7 +602,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -758,14 +758,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 762 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
     
-#line 769 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -839,7 +839,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -847,20 +847,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -870,37 +870,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -909,34 +909,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -944,7 +944,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -953,13 +953,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -967,13 +967,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -988,13 +988,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1040,7 +1040,7 @@ _match:
     }
   }
 	break;
-#line 1044 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
+ 
 		}
 	}
 
@@ -1057,7 +1057,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1103,7 +1103,7 @@ _again:
     }
   }
 	break;
-#line 1107 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
+ 
 		}
 	}
 	}
@@ -1111,7 +1111,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c gherkin-2.3.3/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c	2011-06-27 13:39:38.484379300 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c	2011-06-27 13:46:17.891334949 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -898,7 +898,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1054,14 +1054,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1058 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
     
-#line 1065 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1135,7 +1135,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1143,20 +1143,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1166,37 +1166,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1205,34 +1205,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1240,7 +1240,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1249,13 +1249,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1263,13 +1263,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1284,13 +1284,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1336,7 +1336,7 @@ _match:
     }
   }
 	break;
-#line 1340 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
+ 
 		}
 	}
 
@@ -1353,7 +1353,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1399,7 +1399,7 @@ _again:
     }
   }
 	break;
-#line 1403 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
+ 
 		}
 	}
 	}
@@ -1407,7 +1407,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c gherkin-2.3.3/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c	2011-06-27 13:39:38.484379300 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c	2011-06-27 13:46:17.912335843 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -1059,7 +1059,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1215,14 +1215,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1219 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
     
-#line 1226 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1296,7 +1296,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1304,20 +1304,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1327,37 +1327,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1366,34 +1366,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1401,7 +1401,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1410,13 +1410,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1424,13 +1424,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1445,13 +1445,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1497,7 +1497,7 @@ _match:
     }
   }
 	break;
-#line 1501 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
+ 
 		}
 	}
 
@@ -1514,7 +1514,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1560,7 +1560,7 @@ _again:
     }
   }
 	break;
-#line 1564 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
+ 
 		}
 	}
 	}
@@ -1568,7 +1568,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c gherkin-2.3.3/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c	2011-06-27 13:39:38.484379300 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c	2011-06-27 13:46:17.993339290 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -692,7 +692,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -848,14 +848,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 852 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
     
-#line 859 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -929,7 +929,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -937,20 +937,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -960,37 +960,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -999,34 +999,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1034,7 +1034,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1043,13 +1043,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1057,13 +1057,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1078,13 +1078,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1130,7 +1130,7 @@ _match:
     }
   }
 	break;
-#line 1134 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
+ 
 		}
 	}
 
@@ -1147,7 +1147,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1193,7 +1193,7 @@ _again:
     }
   }
 	break;
-#line 1197 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
+ 
 		}
 	}
 	}
@@ -1201,7 +1201,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_eo/gherkin_lexer_eo.c gherkin-2.3.3/ext/gherkin_lexer_eo/gherkin_lexer_eo.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_eo/gherkin_lexer_eo.c	2011-06-27 13:39:38.485379342 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_eo/gherkin_lexer_eo.c	2011-06-27 13:46:18.021340482 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -663,7 +663,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -819,14 +819,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 823 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
     
-#line 830 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -900,7 +900,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -908,20 +908,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -931,37 +931,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -970,34 +970,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1005,7 +1005,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1014,13 +1014,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1028,13 +1028,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1049,13 +1049,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1101,7 +1101,7 @@ _match:
     }
   }
 	break;
-#line 1105 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
+ 
 		}
 	}
 
@@ -1118,7 +1118,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/eo.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1164,7 +1164,7 @@ _again:
     }
   }
 	break;
-#line 1168 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
+ 
 		}
 	}
 	}
@@ -1172,7 +1172,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_es/gherkin_lexer_es.c gherkin-2.3.3/ext/gherkin_lexer_es/gherkin_lexer_es.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_es/gherkin_lexer_es.c	2011-06-27 13:39:38.485379342 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_es/gherkin_lexer_es.c	2011-06-27 13:46:18.042341376 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -805,7 +805,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -961,14 +961,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 965 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
     
-#line 972 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1042,7 +1042,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1050,20 +1050,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1073,37 +1073,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.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 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1147,7 +1147,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1156,13 +1156,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1170,13 +1170,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1191,13 +1191,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1243,7 +1243,7 @@ _match:
     }
   }
 	break;
-#line 1247 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
+ 
 		}
 	}
 
@@ -1260,7 +1260,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/es.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1306,7 +1306,7 @@ _again:
     }
   }
 	break;
-#line 1310 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
+ 
 		}
 	}
 	}
@@ -1314,7 +1314,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_et/gherkin_lexer_et.c gherkin-2.3.3/ext/gherkin_lexer_et/gherkin_lexer_et.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_et/gherkin_lexer_et.c	2011-06-27 13:39:38.485379342 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_et/gherkin_lexer_et.c	2011-06-27 13:46:18.073342695 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -661,7 +661,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -817,14 +817,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 821 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
     
-#line 828 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -898,7 +898,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -906,20 +906,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -929,37 +929,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -968,34 +968,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1003,7 +1003,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1012,13 +1012,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1026,13 +1026,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1047,13 +1047,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1099,7 +1099,7 @@ _match:
     }
   }
 	break;
-#line 1103 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
+ 
 		}
 	}
 
@@ -1116,7 +1116,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/et.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1162,7 +1162,7 @@ _again:
     }
   }
 	break;
-#line 1166 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
+ 
 		}
 	}
 	}
@@ -1170,7 +1170,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_fi/gherkin_lexer_fi.c gherkin-2.3.3/ext/gherkin_lexer_fi/gherkin_lexer_fi.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_fi/gherkin_lexer_fi.c	2011-06-27 13:39:38.485379342 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_fi/gherkin_lexer_fi.c	2011-06-27 13:46:18.105344053 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -640,7 +640,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -796,14 +796,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 800 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
     
-#line 807 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -877,7 +877,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -885,20 +885,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -908,37 +908,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -947,34 +947,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -982,7 +982,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -991,13 +991,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1005,13 +1005,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1026,13 +1026,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1078,7 +1078,7 @@ _match:
     }
   }
 	break;
-#line 1082 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
+ 
 		}
 	}
 
@@ -1095,7 +1095,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fi.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1141,7 +1141,7 @@ _again:
     }
   }
 	break;
-#line 1145 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
+ 
 		}
 	}
 	}
@@ -1149,7 +1149,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_fr/gherkin_lexer_fr.c gherkin-2.3.3/ext/gherkin_lexer_fr/gherkin_lexer_fr.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_fr/gherkin_lexer_fr.c	2011-06-27 13:39:38.486379385 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_fr/gherkin_lexer_fr.c	2011-06-27 13:46:18.159346356 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -878,7 +878,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1034,14 +1034,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1038 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
     
-#line 1045 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1115,7 +1115,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1123,20 +1123,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1146,37 +1146,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1185,34 +1185,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1220,7 +1220,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1229,13 +1229,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1243,13 +1243,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1264,13 +1264,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1316,7 +1316,7 @@ _match:
     }
   }
 	break;
-#line 1320 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
+ 
 		}
 	}
 
@@ -1333,7 +1333,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/fr.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1379,7 +1379,7 @@ _again:
     }
   }
 	break;
-#line 1383 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
+ 
 		}
 	}
 	}
@@ -1387,7 +1387,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_he/gherkin_lexer_he.c gherkin-2.3.3/ext/gherkin_lexer_he/gherkin_lexer_he.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_he/gherkin_lexer_he.c	2011-06-27 13:39:38.486379385 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_he/gherkin_lexer_he.c	2011-06-27 13:46:18.210348524 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -801,7 +801,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -957,14 +957,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 961 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
     
-#line 968 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1038,7 +1038,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1046,20 +1046,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1069,37 +1069,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1108,34 +1108,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1143,7 +1143,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1152,13 +1152,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1166,13 +1166,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1187,13 +1187,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1239,7 +1239,7 @@ _match:
     }
   }
 	break;
-#line 1243 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
+ 
 		}
 	}
 
@@ -1256,7 +1256,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/he.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1302,7 +1302,7 @@ _again:
     }
   }
 	break;
-#line 1306 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
+ 
 		}
 	}
 	}
@@ -1310,7 +1310,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_hr/gherkin_lexer_hr.c gherkin-2.3.3/ext/gherkin_lexer_hr/gherkin_lexer_hr.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_hr/gherkin_lexer_hr.c	2011-06-27 13:39:38.486379385 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_hr/gherkin_lexer_hr.c	2011-06-27 13:46:18.260350654 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -750,7 +750,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -906,14 +906,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 910 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
     
-#line 917 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -987,7 +987,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -995,20 +995,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1018,37 +1018,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1057,34 +1057,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1092,7 +1092,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1101,13 +1101,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1115,13 +1115,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1136,13 +1136,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1188,7 +1188,7 @@ _match:
     }
   }
 	break;
-#line 1192 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
+ 
 		}
 	}
 
@@ -1205,7 +1205,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hr.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1251,7 +1251,7 @@ _again:
     }
   }
 	break;
-#line 1255 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
+ 
 		}
 	}
 	}
@@ -1259,7 +1259,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_hu/gherkin_lexer_hu.c gherkin-2.3.3/ext/gherkin_lexer_hu/gherkin_lexer_hu.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_hu/gherkin_lexer_hu.c	2011-06-27 13:39:38.487379427 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_hu/gherkin_lexer_hu.c	2011-06-27 13:46:18.327353508 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -801,7 +801,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -957,14 +957,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 961 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
     
-#line 968 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1038,7 +1038,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1046,20 +1046,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1069,37 +1069,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1108,34 +1108,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1143,7 +1143,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1152,13 +1152,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1166,13 +1166,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1187,13 +1187,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1239,7 +1239,7 @@ _match:
     }
   }
 	break;
-#line 1243 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
+ 
 		}
 	}
 
@@ -1256,7 +1256,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/hu.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1302,7 +1302,7 @@ _again:
     }
   }
 	break;
-#line 1306 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
+ 
 		}
 	}
 	}
@@ -1310,7 +1310,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_id/gherkin_lexer_id.c gherkin-2.3.3/ext/gherkin_lexer_id/gherkin_lexer_id.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_id/gherkin_lexer_id.c	2011-06-27 13:39:38.487379427 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_id/gherkin_lexer_id.c	2011-06-27 13:46:18.388356104 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -630,7 +630,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -786,14 +786,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 790 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
     
-#line 797 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -867,7 +867,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -875,20 +875,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -898,37 +898,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -937,34 +937,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -972,7 +972,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -981,13 +981,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -995,13 +995,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1016,13 +1016,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1068,7 +1068,7 @@ _match:
     }
   }
 	break;
-#line 1072 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
+ 
 		}
 	}
 
@@ -1085,7 +1085,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/id.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1131,7 +1131,7 @@ _again:
     }
   }
 	break;
-#line 1135 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
+ 
 		}
 	}
 	}
@@ -1139,7 +1139,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_it/gherkin_lexer_it.c gherkin-2.3.3/ext/gherkin_lexer_it/gherkin_lexer_it.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_it/gherkin_lexer_it.c	2011-06-27 13:39:38.487379427 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_it/gherkin_lexer_it.c	2011-06-27 13:46:18.421357507 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -759,7 +759,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -915,14 +915,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 919 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
     
-#line 926 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -996,7 +996,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1004,20 +1004,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1027,37 +1027,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1066,34 +1066,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1101,7 +1101,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1110,13 +1110,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1124,13 +1124,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1145,13 +1145,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1197,7 +1197,7 @@ _match:
     }
   }
 	break;
-#line 1201 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
+ 
 		}
 	}
 
@@ -1214,7 +1214,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/it.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1260,7 +1260,7 @@ _again:
     }
   }
 	break;
-#line 1264 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
+ 
 		}
 	}
 	}
@@ -1268,7 +1268,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_ja/gherkin_lexer_ja.c gherkin-2.3.3/ext/gherkin_lexer_ja/gherkin_lexer_ja.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_ja/gherkin_lexer_ja.c	2011-06-27 13:39:38.488379469 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_ja/gherkin_lexer_ja.c	2011-06-27 13:46:18.461359207 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -1126,7 +1126,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1282,14 +1282,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1286 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
     
-#line 1293 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1363,7 +1363,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1371,20 +1371,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1394,37 +1394,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1433,34 +1433,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1468,7 +1468,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1477,13 +1477,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1491,13 +1491,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1512,13 +1512,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1564,7 +1564,7 @@ _match:
     }
   }
 	break;
-#line 1568 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
+ 
 		}
 	}
 
@@ -1581,7 +1581,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1627,7 +1627,7 @@ _again:
     }
   }
 	break;
-#line 1631 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
+ 
 		}
 	}
 	}
@@ -1635,7 +1635,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_ko/gherkin_lexer_ko.c gherkin-2.3.3/ext/gherkin_lexer_ko/gherkin_lexer_ko.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_ko/gherkin_lexer_ko.c	2011-06-27 13:39:38.488379469 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_ko/gherkin_lexer_ko.c	2011-06-27 13:46:18.520361720 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -787,7 +787,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -943,14 +943,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 947 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
     
-#line 954 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1024,7 +1024,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1032,20 +1032,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1055,37 +1055,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1094,34 +1094,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1129,7 +1129,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1138,13 +1138,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1152,13 +1152,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1173,13 +1173,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1225,7 +1225,7 @@ _match:
     }
   }
 	break;
-#line 1229 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
+ 
 		}
 	}
 
@@ -1242,7 +1242,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ko.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1288,7 +1288,7 @@ _again:
     }
   }
 	break;
-#line 1292 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
+ 
 		}
 	}
 	}
@@ -1296,7 +1296,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_lt/gherkin_lexer_lt.c gherkin-2.3.3/ext/gherkin_lexer_lt/gherkin_lexer_lt.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_lt/gherkin_lexer_lt.c	2011-06-27 13:39:38.488379469 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_lt/gherkin_lexer_lt.c	2011-06-27 13:46:18.602365214 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -722,7 +722,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -878,14 +878,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 882 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
     
-#line 889 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -959,7 +959,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -967,20 +967,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -990,37 +990,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1029,34 +1029,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1064,7 +1064,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1073,13 +1073,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1087,13 +1087,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1108,13 +1108,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1160,7 +1160,7 @@ _match:
     }
   }
 	break;
-#line 1164 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
+ 
 		}
 	}
 
@@ -1177,7 +1177,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lt.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1223,7 +1223,7 @@ _again:
     }
   }
 	break;
-#line 1227 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
+ 
 		}
 	}
 	}
@@ -1231,7 +1231,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_lu/gherkin_lexer_lu.c gherkin-2.3.3/ext/gherkin_lexer_lu/gherkin_lexer_lu.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_lu/gherkin_lexer_lu.c	2011-06-27 13:39:38.489379512 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_lu/gherkin_lexer_lu.c	2011-06-27 13:46:18.640366824 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -814,7 +814,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -970,14 +970,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 974 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
     
-#line 981 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1051,7 +1051,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1059,20 +1059,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1082,37 +1082,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1121,34 +1121,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1156,7 +1156,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1165,13 +1165,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1179,13 +1179,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1200,13 +1200,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1252,7 +1252,7 @@ _match:
     }
   }
 	break;
-#line 1256 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
+ 
 		}
 	}
 
@@ -1269,7 +1269,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lu.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1315,7 +1315,7 @@ _again:
     }
   }
 	break;
-#line 1319 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
+ 
 		}
 	}
 	}
@@ -1323,7 +1323,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_lv/gherkin_lexer_lv.c gherkin-2.3.3/ext/gherkin_lexer_lv/gherkin_lexer_lv.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_lv/gherkin_lexer_lv.c	2011-06-27 13:39:38.489379512 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_lv/gherkin_lexer_lv.c	2011-06-27 13:46:18.680368531 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -852,7 +852,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1008,14 +1008,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1012 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
     
-#line 1019 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1089,7 +1089,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1097,20 +1097,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1120,37 +1120,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1159,34 +1159,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1194,7 +1194,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1203,13 +1203,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1217,13 +1217,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1238,13 +1238,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1290,7 +1290,7 @@ _match:
     }
   }
 	break;
-#line 1294 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
+ 
 		}
 	}
 
@@ -1307,7 +1307,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/lv.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1353,7 +1353,7 @@ _again:
     }
   }
 	break;
-#line 1357 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
+ 
 		}
 	}
 	}
@@ -1361,7 +1361,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_nl/gherkin_lexer_nl.c gherkin-2.3.3/ext/gherkin_lexer_nl/gherkin_lexer_nl.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_nl/gherkin_lexer_nl.c	2011-06-27 13:39:38.489379512 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_nl/gherkin_lexer_nl.c	2011-06-27 13:46:18.698369298 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -790,7 +790,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -946,14 +946,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 950 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
     
-#line 957 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1027,7 +1027,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1035,20 +1035,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1058,37 +1058,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1097,34 +1097,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1132,7 +1132,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1141,13 +1141,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1155,13 +1155,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1176,13 +1176,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1228,7 +1228,7 @@ _match:
     }
   }
 	break;
-#line 1232 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
+ 
 		}
 	}
 
@@ -1245,7 +1245,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/nl.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1291,7 +1291,7 @@ _again:
     }
   }
 	break;
-#line 1295 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
+ 
 		}
 	}
 	}
@@ -1299,7 +1299,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_no/gherkin_lexer_no.c gherkin-2.3.3/ext/gherkin_lexer_no/gherkin_lexer_no.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_no/gherkin_lexer_no.c	2011-06-27 13:39:38.490379554 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_no/gherkin_lexer_no.c	2011-06-27 13:46:18.727370528 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -738,7 +738,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -894,14 +894,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 898 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
     
-#line 905 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -975,7 +975,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -983,20 +983,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1006,37 +1006,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1045,34 +1045,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1080,7 +1080,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1089,13 +1089,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1103,13 +1103,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1124,13 +1124,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1176,7 +1176,7 @@ _match:
     }
   }
 	break;
-#line 1180 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
+ 
 		}
 	}
 
@@ -1193,7 +1193,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/no.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1239,7 +1239,7 @@ _again:
     }
   }
 	break;
-#line 1243 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
+ 
 		}
 	}
 	}
@@ -1247,7 +1247,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_pl/gherkin_lexer_pl.c gherkin-2.3.3/ext/gherkin_lexer_pl/gherkin_lexer_pl.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_pl/gherkin_lexer_pl.c	2011-06-27 13:39:38.490379554 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_pl/gherkin_lexer_pl.c	2011-06-27 13:46:18.780372783 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -904,7 +904,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1060,14 +1060,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1064 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
     
-#line 1071 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1141,7 +1141,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1149,20 +1149,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1172,37 +1172,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1211,34 +1211,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1246,7 +1246,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1255,13 +1255,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1269,13 +1269,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1290,13 +1290,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1342,7 +1342,7 @@ _match:
     }
   }
 	break;
-#line 1346 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
+ 
 		}
 	}
 
@@ -1359,7 +1359,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pl.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1405,7 +1405,7 @@ _again:
     }
   }
 	break;
-#line 1409 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
+ 
 		}
 	}
 	}
@@ -1413,7 +1413,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_pt/gherkin_lexer_pt.c gherkin-2.3.3/ext/gherkin_lexer_pt/gherkin_lexer_pt.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_pt/gherkin_lexer_pt.c	2011-06-27 13:39:38.490379554 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_pt/gherkin_lexer_pt.c	2011-06-27 13:46:18.824374657 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -754,7 +754,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -910,14 +910,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 914 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
     
-#line 921 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -991,7 +991,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -999,20 +999,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1022,37 +1022,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.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 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1096,7 +1096,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1105,13 +1105,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1119,13 +1119,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1140,13 +1140,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1192,7 +1192,7 @@ _match:
     }
   }
 	break;
-#line 1196 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
+ 
 		}
 	}
 
@@ -1209,7 +1209,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/pt.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1255,7 +1255,7 @@ _again:
     }
   }
 	break;
-#line 1259 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
+ 
 		}
 	}
 	}
@@ -1263,7 +1263,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_ro/gherkin_lexer_ro.c gherkin-2.3.3/ext/gherkin_lexer_ro/gherkin_lexer_ro.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_ro/gherkin_lexer_ro.c	2011-06-27 13:39:38.490379555 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_ro/gherkin_lexer_ro.c	2011-06-27 13:46:18.880377039 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -751,7 +751,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.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_ro/gherkin_lexer_ro.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
     
-#line 918 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -988,7 +988,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -996,20 +996,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1019,37 +1019,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1058,34 +1058,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1093,7 +1093,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1102,13 +1102,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1116,13 +1116,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1137,13 +1137,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1189,7 +1189,7 @@ _match:
     }
   }
 	break;
-#line 1193 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
+ 
 		}
 	}
 
@@ -1206,7 +1206,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1252,7 +1252,7 @@ _again:
     }
   }
 	break;
-#line 1256 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
+ 
 		}
 	}
 	}
@@ -1260,7 +1260,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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 -urp gherkin-2.3.3.orig/ext/gherkin_lexer_ro_ro/gherkin_lexer_ro_ro.c gherkin-2.3.3/ext/gherkin_lexer_ro_ro/gherkin_lexer_ro_ro.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_ro_ro/gherkin_lexer_ro_ro.c	2011-06-27 13:39:38.490379555 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_ro_ro/gherkin_lexer_ro_ro.c	2011-06-27 13:46:18.990381723 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "ext/gherkin_lexer_ro_ro/gherkin_lexer_ro_ro.c"
+ 
 static const char _lexer_actions[] = {
 	0, 1, 0, 1, 1, 1, 2, 1, 
 	3, 1, 4, 1, 5, 1, 6, 1, 
@@ -795,7 +795,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -951,14 +951,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 955 "ext/gherkin_lexer_ro_ro/gherkin_lexer_ro_ro.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
     
-#line 962 "ext/gherkin_lexer_ro_ro/gherkin_lexer_ro_ro.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1032,7 +1032,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1040,20 +1040,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     lexer->current_line = lexer->line_number;
     lexer->start_col = p - data - lexer->last_newline;
   }
 	break;
 	case 3:
-#line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1063,37 +1063,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1102,34 +1102,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1137,7 +1137,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1146,13 +1146,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1160,13 +1160,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1181,13 +1181,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1233,7 +1233,7 @@ _match:
     }
   }
 	break;
-#line 1237 "ext/gherkin_lexer_ro_ro/gherkin_lexer_ro_ro.c"
+ 
 		}
 	}
 
@@ -1250,7 +1250,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1296,7 +1296,7 @@ _again:
     }
   }
 	break;
-#line 1300 "ext/gherkin_lexer_ro_ro/gherkin_lexer_ro_ro.c"
+ 
 		}
 	}
 	}
@@ -1304,7 +1304,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ro_ro.c.rl"
+ 
 
     assert(p <= pe && "data overflow after parsing execute");
     assert(lexer->content_start <= len && "content starts after data end");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_ru/gherkin_lexer_ru.c gherkin-2.3.3/ext/gherkin_lexer_ru/gherkin_lexer_ru.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_ru/gherkin_lexer_ru.c	2011-06-27 13:39:38.490379555 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_ru/gherkin_lexer_ru.c	2011-06-27 13:46:19.102386487 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -1355,7 +1355,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1511,14 +1511,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1515 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
     
-#line 1522 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1592,7 +1592,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1600,20 +1600,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1623,37 +1623,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1662,34 +1662,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1697,7 +1697,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1706,13 +1706,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1720,13 +1720,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1741,13 +1741,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1793,7 +1793,7 @@ _match:
     }
   }
 	break;
-#line 1797 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
+ 
 		}
 	}
 
@@ -1810,7 +1810,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1856,7 +1856,7 @@ _again:
     }
   }
 	break;
-#line 1860 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
+ 
 		}
 	}
 	}
@@ -1864,7 +1864,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_sk/gherkin_lexer_sk.c gherkin-2.3.3/ext/gherkin_lexer_sk/gherkin_lexer_sk.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_sk/gherkin_lexer_sk.c	2011-06-27 13:39:38.490379555 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_sk/gherkin_lexer_sk.c	2011-06-27 13:46:19.155388746 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -725,7 +725,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -881,14 +881,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 885 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
     
-#line 892 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -962,7 +962,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -970,20 +970,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -993,37 +993,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1032,34 +1032,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1067,7 +1067,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1076,13 +1076,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1090,13 +1090,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1111,13 +1111,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1163,7 +1163,7 @@ _match:
     }
   }
 	break;
-#line 1167 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
+ 
 		}
 	}
 
@@ -1180,7 +1180,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sk.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1226,7 +1226,7 @@ _again:
     }
   }
 	break;
-#line 1230 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
+ 
 		}
 	}
 	}
@@ -1234,7 +1234,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c gherkin-2.3.3/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c	2011-06-27 13:39:38.492379637 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c	2011-06-27 13:46:19.214391258 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -1537,7 +1537,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1693,14 +1693,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1697 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
     
-#line 1704 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1774,7 +1774,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1782,20 +1782,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1805,37 +1805,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1844,34 +1844,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1879,7 +1879,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1888,13 +1888,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1902,13 +1902,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1923,13 +1923,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1975,7 +1975,7 @@ _match:
     }
   }
 	break;
-#line 1979 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
+ 
 		}
 	}
 
@@ -1992,7 +1992,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -2038,7 +2038,7 @@ _again:
     }
   }
 	break;
-#line 2042 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
+ 
 		}
 	}
 	}
@@ -2046,7 +2046,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c gherkin-2.3.3/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c	2011-06-27 13:39:38.492379637 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c	2011-06-27 13:46:19.280394067 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -994,7 +994,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1150,14 +1150,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1154 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
     
-#line 1161 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1231,7 +1231,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1239,20 +1239,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1262,37 +1262,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1301,34 +1301,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1336,7 +1336,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1345,13 +1345,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1359,13 +1359,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1380,13 +1380,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1432,7 +1432,7 @@ _match:
     }
   }
 	break;
-#line 1436 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
+ 
 		}
 	}
 
@@ -1449,7 +1449,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1495,7 +1495,7 @@ _again:
     }
   }
 	break;
-#line 1499 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
+ 
 		}
 	}
 	}
@@ -1503,7 +1503,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_sv/gherkin_lexer_sv.c gherkin-2.3.3/ext/gherkin_lexer_sv/gherkin_lexer_sv.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_sv/gherkin_lexer_sv.c	2011-06-27 13:39:38.493379679 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_sv/gherkin_lexer_sv.c	2011-06-27 13:46:19.309395298 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -749,7 +749,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -905,14 +905,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 909 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
     
-#line 916 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -986,7 +986,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -994,20 +994,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1017,37 +1017,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1056,34 +1056,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1091,7 +1091,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1100,13 +1100,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1114,13 +1114,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1135,13 +1135,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1187,7 +1187,7 @@ _match:
     }
   }
 	break;
-#line 1191 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
+ 
 		}
 	}
 
@@ -1204,7 +1204,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sv.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1250,7 +1250,7 @@ _again:
     }
   }
 	break;
-#line 1254 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
+ 
 		}
 	}
 	}
@@ -1258,7 +1258,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_tr/gherkin_lexer_tr.c gherkin-2.3.3/ext/gherkin_lexer_tr/gherkin_lexer_tr.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_tr/gherkin_lexer_tr.c	2011-06-27 13:39:38.493379679 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_tr/gherkin_lexer_tr.c	2011-06-27 13:46:19.351397089 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -767,7 +767,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.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_tr/gherkin_lexer_tr.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
     
-#line 934 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1004,7 +1004,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1012,20 +1012,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1035,37 +1035,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1074,34 +1074,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1109,7 +1109,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1118,13 +1118,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1132,13 +1132,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1153,13 +1153,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1205,7 +1205,7 @@ _match:
     }
   }
 	break;
-#line 1209 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
+ 
 		}
 	}
 
@@ -1222,7 +1222,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/tr.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1268,7 +1268,7 @@ _again:
     }
   }
 	break;
-#line 1272 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
+ 
 		}
 	}
 	}
@@ -1276,7 +1276,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_uk/gherkin_lexer_uk.c gherkin-2.3.3/ext/gherkin_lexer_uk/gherkin_lexer_uk.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_uk/gherkin_lexer_uk.c	2011-06-27 13:39:38.493379679 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_uk/gherkin_lexer_uk.c	2011-06-27 13:46:19.401399217 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -1368,7 +1368,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1524,14 +1524,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1528 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
     
-#line 1535 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1605,7 +1605,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1613,20 +1613,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1636,37 +1636,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1675,34 +1675,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1710,7 +1710,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1719,13 +1719,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1733,13 +1733,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1754,13 +1754,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1806,7 +1806,7 @@ _match:
     }
   }
 	break;
-#line 1810 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
+ 
 		}
 	}
 
@@ -1823,7 +1823,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uk.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1869,7 +1869,7 @@ _again:
     }
   }
 	break;
-#line 1873 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
+ 
 		}
 	}
 	}
@@ -1877,7 +1877,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_uz/gherkin_lexer_uz.c gherkin-2.3.3/ext/gherkin_lexer_uz/gherkin_lexer_uz.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_uz/gherkin_lexer_uz.c	2011-06-27 13:39:38.494379722 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_uz/gherkin_lexer_uz.c	2011-06-27 13:46:19.452401387 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -1078,7 +1078,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.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_uz/gherkin_lexer_uz.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
     
-#line 1245 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1315,7 +1315,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1323,20 +1323,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1346,37 +1346,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -1385,34 +1385,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1420,7 +1420,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1429,13 +1429,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1443,13 +1443,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1464,13 +1464,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1516,7 +1516,7 @@ _match:
     }
   }
 	break;
-#line 1520 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
+ 
 		}
 	}
 
@@ -1533,7 +1533,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/uz.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1579,7 +1579,7 @@ _again:
     }
   }
 	break;
-#line 1583 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
+ 
 		}
 	}
 	}
@@ -1587,7 +1587,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_vi/gherkin_lexer_vi.c gherkin-2.3.3/ext/gherkin_lexer_vi/gherkin_lexer_vi.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_vi/gherkin_lexer_vi.c	2011-06-27 13:39:38.494379722 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_vi/gherkin_lexer_vi.c	2011-06-27 13:46:19.551405601 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -883,7 +883,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -1039,14 +1039,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 1043 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
     
-#line 1050 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -1120,7 +1120,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -1128,20 +1128,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -1151,37 +1151,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.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 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1225,7 +1225,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1234,13 +1234,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1248,13 +1248,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1269,13 +1269,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1321,7 +1321,7 @@ _match:
     }
   }
 	break;
-#line 1325 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
+ 
 		}
 	}
 
@@ -1338,7 +1338,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/vi.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1384,7 +1384,7 @@ _again:
     }
   }
 	break;
-#line 1388 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
+ 
 		}
 	}
 	}
@@ -1392,7 +1392,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c gherkin-2.3.3/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c	2011-06-27 13:39:38.494379722 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c	2011-06-27 13:46:19.574406580 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -650,7 +650,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -806,14 +806,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 810 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
     
-#line 817 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -887,7 +887,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -895,20 +895,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -918,37 +918,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -957,34 +957,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -992,7 +992,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1001,13 +1001,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1015,13 +1015,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1036,13 +1036,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1088,7 +1088,7 @@ _match:
     }
   }
 	break;
-#line 1092 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
+ 
 		}
 	}
 
@@ -1105,7 +1105,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1151,7 +1151,7 @@ _again:
     }
   }
 	break;
-#line 1155 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
+ 
 		}
 	}
 	}
@@ -1159,7 +1159,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");
diff -urp gherkin-2.3.3.orig/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c gherkin-2.3.3/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c
--- gherkin-2.3.3.orig/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c	2011-06-27 13:39:38.495379765 -0400
+++ gherkin-2.3.3/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c	2011-06-27 13:46:19.615408324 -0400
@@ -1,5 +1,5 @@
 
-#line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 #include <assert.h>
 #include <ruby.h>
 
@@ -78,12 +78,12 @@ static VALUE rb_eGherkinLexingError;
       lexer->line_number)
 
 
-#line 241 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 
 
 /** Data **/
 
-#line 87 "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, 
@@ -692,7 +692,7 @@ static const int lexer_error = 0;
 static const int lexer_en_main = 1;
 
 
-#line 245 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 
 static VALUE 
 unindent(VALUE con, int start_col)
@@ -848,14 +848,14 @@ static VALUE CLexer_scan(VALUE self, VAL
     assert(*pe == '\0' && "pointer does not end on NULL");
     
     
-#line 852 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
+ 
 	{
 	cs = lexer_start;
 	}
 
-#line 400 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
     
-#line 859 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
+ 
 	{
 	int _klen;
 	unsigned int _trans;
@@ -929,7 +929,7 @@ _match:
 		switch ( *_acts++ )
 		{
 	case 0:
-#line 81 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
 		MARK(content_start, p);
     lexer->current_line = lexer->line_number;
@@ -937,20 +937,20 @@ _match:
   }
 	break;
 	case 1:
-#line 87 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     MARK(content_start, p);
   }
 	break;
 	case 2:
-#line 91 "/Users/ahellesoy/scm/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 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     int len = LEN(content_start, PTR_TO(final_newline));
 
@@ -960,37 +960,37 @@ _match:
   }
 	break;
 	case 4:
-#line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     STORE_KW_END_CON(feature);
   }
 	break;
 	case 5:
-#line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     STORE_KW_END_CON(background);
   }
 	break;
 	case 6:
-#line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario);
   }
 	break;
 	case 7:
-#line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     STORE_KW_END_CON(scenario_outline);
   }
 	break;
 	case 8:
-#line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     STORE_KW_END_CON(examples);
   }
 	break;
 	case 9:
-#line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     store_kw_con(listener, "step",
       PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
@@ -999,34 +999,34 @@ _match:
   }
 	break;
 	case 10:
-#line 131 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     STORE_ATTR(comment);
     lexer->mark = 0;
   }
 	break;
 	case 11:
-#line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     STORE_ATTR(tag);
     lexer->mark = 0;
   }
 	break;
 	case 12:
-#line 141 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     lexer->line_number += 1;
     MARK(final_newline, p);
   }
 	break;
 	case 13:
-#line 146 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     MARK(last_newline, p + 1);
   }
 	break;
 	case 14:
-#line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     if (lexer->mark == 0) {
       MARK(mark, p);
@@ -1034,7 +1034,7 @@ _match:
   }
 	break;
 	case 15:
-#line 156 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     MARK(keyword_end, p);
     MARK(keyword_start, PTR_TO(mark));
@@ -1043,13 +1043,13 @@ _match:
   }
 	break;
 	case 16:
-#line 163 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     MARK(content_end, p);
   }
 	break;
 	case 17:
-#line 167 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     p = p - 1;
     lexer->current_line = lexer->line_number;
@@ -1057,13 +1057,13 @@ _match:
   }
 	break;
 	case 18:
-#line 173 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
 		MARK(content_start, p);
   }
 	break;
 	case 19:
-#line 177 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
     rb_funcall(con, rb_intern("strip!"), 0);
@@ -1078,13 +1078,13 @@ _match:
   }
 	break;
 	case 20:
-#line 190 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
   }
 	break;
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1130,7 +1130,7 @@ _match:
     }
   }
 	break;
-#line 1134 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
+ 
 		}
 	}
 
@@ -1147,7 +1147,7 @@ _again:
 	while ( __nacts-- > 0 ) {
 		switch ( *__acts++ ) {
 	case 21:
-#line 194 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
+ 
 	{
     if (cs < lexer_first_final) {
       if (raise_lexer_error != NULL) {
@@ -1193,7 +1193,7 @@ _again:
     }
   }
 	break;
-#line 1197 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
+ 
 		}
 	}
 	}
@@ -1201,7 +1201,7 @@ _again:
 	_out: {}
 	}
 
-#line 401 "/Users/ahellesoy/scm/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");