635 lines
19 KiB
Java
635 lines
19 KiB
Java
|
|
// line 1 "JavaScanner.rl"
|
|
|
|
// line 84 "JavaScanner.rl"
|
|
|
|
|
|
package radius.parser;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.LinkedList;
|
|
import org.jruby.Ruby; // runtime
|
|
import org.jruby.RubyObject;
|
|
import org.jruby.runtime.builtin.IRubyObject;
|
|
import org.jruby.RubyArray;
|
|
import org.jruby.RubyString;
|
|
import org.jruby.RubyHash;
|
|
import org.jruby.RubySymbol;
|
|
|
|
public class JavaScanner {
|
|
|
|
Ruby runtime = null;
|
|
RubyArray rv = null;
|
|
|
|
void pass_through(String str) {
|
|
RubyObject last = ((RubyObject)rv.last());
|
|
if ( rv.size() > 0 && last != null && (last instanceof RubyString) ){
|
|
// XXX concat changes for ruby 1.9
|
|
((RubyString) last).concat(RubyString.newString(runtime, str));
|
|
} else {
|
|
rv.append(RubyString.newString(runtime, str));
|
|
}
|
|
}
|
|
|
|
void tag(String prefix, String name, RubyHash attr, RubySymbol flavor) {
|
|
RubyHash tag = RubyHash.newHash(runtime);
|
|
tag.op_aset(
|
|
runtime.getCurrentContext(),
|
|
RubySymbol.newSymbol(runtime, "prefix"),
|
|
RubyString.newString(runtime, prefix)
|
|
);
|
|
tag.op_aset(
|
|
runtime.getCurrentContext(),
|
|
RubySymbol.newSymbol(runtime, "name"),
|
|
RubyString.newString(runtime, name)
|
|
);
|
|
tag.op_aset(
|
|
runtime.getCurrentContext(),
|
|
RubySymbol.newSymbol(runtime, "attrs"),
|
|
attr
|
|
);
|
|
tag.op_aset(
|
|
runtime.getCurrentContext(),
|
|
RubySymbol.newSymbol(runtime, "flavor"),
|
|
flavor
|
|
);
|
|
rv.append(tag);
|
|
}
|
|
|
|
public JavaScanner(Ruby runtime) {
|
|
this.runtime = runtime;
|
|
}
|
|
|
|
|
|
// line 65 "JavaScanner.java"
|
|
private static byte[] init__parser_actions_0()
|
|
{
|
|
return new byte [] {
|
|
0, 1, 0, 1, 3, 1, 4, 1, 5, 1, 6, 1,
|
|
7, 1, 8, 1, 9, 1, 10, 1, 14, 1, 15, 1,
|
|
19, 1, 21, 1, 22, 1, 23, 2, 1, 2, 2, 5,
|
|
6, 2, 6, 7, 2, 9, 5, 2, 9, 10, 2, 10,
|
|
9, 2, 11, 20, 2, 12, 20, 2, 13, 20, 2, 16,
|
|
17, 2, 16, 18, 3, 5, 6, 7, 3, 9, 5, 6,
|
|
3, 16, 6, 17, 4, 9, 5, 6, 7, 4, 16, 5,
|
|
6, 17, 5, 16, 9, 5, 6, 17
|
|
};
|
|
}
|
|
|
|
private static final byte _parser_actions[] = init__parser_actions_0();
|
|
|
|
|
|
private static short[] init__parser_key_offsets_0()
|
|
{
|
|
return new short [] {
|
|
0, 0, 11, 21, 34, 47, 61, 65, 70, 72, 74, 87,
|
|
100, 101, 103, 118, 133, 149, 155, 161, 176, 179, 182, 185,
|
|
200, 202, 204, 219, 235, 241, 247, 250, 253, 269, 285, 302,
|
|
309, 315, 331, 335, 351, 366, 369, 371, 381, 392, 402, 416,
|
|
420, 420, 421, 430, 430, 430, 432, 434, 437, 440, 442, 444
|
|
};
|
|
}
|
|
|
|
private static final short _parser_key_offsets[] = init__parser_key_offsets_0();
|
|
|
|
|
|
private static char[] init__parser_trans_keys_0()
|
|
{
|
|
return new char [] {
|
|
58, 63, 95, 45, 46, 48, 57, 65, 90, 97, 122, 63,
|
|
95, 45, 46, 48, 58, 65, 90, 97, 122, 32, 47, 62,
|
|
63, 95, 9, 13, 45, 58, 65, 90, 97, 122, 32, 47,
|
|
62, 63, 95, 9, 13, 45, 58, 65, 90, 97, 122, 32,
|
|
61, 63, 95, 9, 13, 45, 46, 48, 58, 65, 90, 97,
|
|
122, 32, 61, 9, 13, 32, 34, 39, 9, 13, 34, 92,
|
|
34, 92, 32, 47, 62, 63, 95, 9, 13, 45, 58, 65,
|
|
90, 97, 122, 32, 47, 62, 63, 95, 9, 13, 45, 58,
|
|
65, 90, 97, 122, 62, 34, 92, 32, 34, 47, 62, 63,
|
|
92, 95, 9, 13, 45, 58, 65, 90, 97, 122, 32, 34,
|
|
47, 62, 63, 92, 95, 9, 13, 45, 58, 65, 90, 97,
|
|
122, 32, 34, 61, 63, 92, 95, 9, 13, 45, 46, 48,
|
|
58, 65, 90, 97, 122, 32, 34, 61, 92, 9, 13, 32,
|
|
34, 39, 92, 9, 13, 32, 34, 47, 62, 63, 92, 95,
|
|
9, 13, 45, 58, 65, 90, 97, 122, 34, 62, 92, 34,
|
|
39, 92, 34, 39, 92, 32, 39, 47, 62, 63, 92, 95,
|
|
9, 13, 45, 58, 65, 90, 97, 122, 39, 92, 39, 92,
|
|
32, 39, 47, 62, 63, 92, 95, 9, 13, 45, 58, 65,
|
|
90, 97, 122, 32, 39, 61, 63, 92, 95, 9, 13, 45,
|
|
46, 48, 58, 65, 90, 97, 122, 32, 39, 61, 92, 9,
|
|
13, 32, 34, 39, 92, 9, 13, 34, 39, 92, 34, 39,
|
|
92, 32, 34, 39, 47, 62, 63, 92, 95, 9, 13, 45,
|
|
58, 65, 90, 97, 122, 32, 34, 39, 47, 62, 63, 92,
|
|
95, 9, 13, 45, 58, 65, 90, 97, 122, 32, 34, 39,
|
|
61, 63, 92, 95, 9, 13, 45, 46, 48, 58, 65, 90,
|
|
97, 122, 32, 34, 39, 61, 92, 9, 13, 32, 34, 39,
|
|
92, 9, 13, 32, 34, 39, 47, 62, 63, 92, 95, 9,
|
|
13, 45, 58, 65, 90, 97, 122, 34, 39, 62, 92, 32,
|
|
34, 39, 47, 62, 63, 92, 95, 9, 13, 45, 58, 65,
|
|
90, 97, 122, 32, 39, 47, 62, 63, 92, 95, 9, 13,
|
|
45, 58, 65, 90, 97, 122, 39, 62, 92, 39, 92, 63,
|
|
95, 45, 46, 48, 57, 65, 90, 97, 122, 58, 63, 95,
|
|
45, 46, 48, 57, 65, 90, 97, 122, 63, 95, 45, 46,
|
|
48, 58, 65, 90, 97, 122, 32, 62, 63, 95, 9, 13,
|
|
45, 46, 48, 58, 65, 90, 97, 122, 32, 62, 9, 13,
|
|
60, 47, 63, 95, 45, 57, 65, 90, 97, 122, 34, 92,
|
|
34, 92, 34, 39, 92, 34, 39, 92, 39, 92, 39, 92,
|
|
0
|
|
};
|
|
}
|
|
|
|
private static final char _parser_trans_keys[] = init__parser_trans_keys_0();
|
|
|
|
|
|
private static byte[] init__parser_single_lengths_0()
|
|
{
|
|
return new byte [] {
|
|
0, 3, 2, 5, 5, 4, 2, 3, 2, 2, 5, 5,
|
|
1, 2, 7, 7, 6, 4, 4, 7, 3, 3, 3, 7,
|
|
2, 2, 7, 6, 4, 4, 3, 3, 8, 8, 7, 5,
|
|
4, 8, 4, 8, 7, 3, 2, 2, 3, 2, 4, 2,
|
|
0, 1, 3, 0, 0, 2, 2, 3, 3, 2, 2, 0
|
|
};
|
|
}
|
|
|
|
private static final byte _parser_single_lengths[] = init__parser_single_lengths_0();
|
|
|
|
|
|
private static byte[] init__parser_range_lengths_0()
|
|
{
|
|
return new byte [] {
|
|
0, 4, 4, 4, 4, 5, 1, 1, 0, 0, 4, 4,
|
|
0, 0, 4, 4, 5, 1, 1, 4, 0, 0, 0, 4,
|
|
0, 0, 4, 5, 1, 1, 0, 0, 4, 4, 5, 1,
|
|
1, 4, 0, 4, 4, 0, 0, 4, 4, 4, 5, 1,
|
|
0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
};
|
|
}
|
|
|
|
private static final byte _parser_range_lengths[] = init__parser_range_lengths_0();
|
|
|
|
|
|
private static short[] init__parser_index_offsets_0()
|
|
{
|
|
return new short [] {
|
|
0, 0, 8, 15, 25, 35, 45, 49, 54, 57, 60, 70,
|
|
80, 82, 85, 97, 109, 121, 127, 133, 145, 149, 153, 157,
|
|
169, 172, 175, 187, 199, 205, 211, 215, 219, 232, 245, 258,
|
|
265, 271, 284, 289, 302, 314, 318, 321, 328, 336, 343, 353,
|
|
357, 358, 360, 367, 368, 369, 372, 375, 379, 383, 386, 389
|
|
};
|
|
}
|
|
|
|
private static final short _parser_index_offsets[] = init__parser_index_offsets_0();
|
|
|
|
|
|
private static byte[] init__parser_indicies_0()
|
|
{
|
|
return new byte [] {
|
|
2, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3,
|
|
3, 3, 0, 4, 6, 7, 5, 5, 4, 5, 5, 5,
|
|
0, 8, 10, 11, 9, 9, 8, 9, 9, 9, 0, 13,
|
|
15, 14, 14, 13, 14, 14, 14, 14, 12, 16, 17, 16,
|
|
12, 17, 18, 19, 17, 12, 21, 22, 20, 24, 25, 23,
|
|
26, 28, 29, 27, 27, 26, 27, 27, 27, 12, 30, 32,
|
|
33, 31, 31, 30, 31, 31, 31, 12, 34, 12, 35, 25,
|
|
23, 36, 24, 38, 39, 37, 25, 37, 36, 37, 37, 37,
|
|
23, 40, 24, 42, 43, 41, 25, 41, 40, 41, 41, 41,
|
|
23, 44, 24, 46, 45, 25, 45, 44, 45, 45, 45, 45,
|
|
23, 47, 24, 48, 25, 47, 23, 48, 49, 50, 25, 48,
|
|
23, 51, 21, 53, 54, 52, 22, 52, 51, 52, 52, 52,
|
|
20, 24, 55, 25, 23, 57, 58, 59, 56, 61, 35, 62,
|
|
60, 64, 24, 66, 67, 65, 68, 65, 64, 65, 65, 65,
|
|
63, 24, 68, 63, 61, 68, 63, 69, 24, 71, 72, 70,
|
|
68, 70, 69, 70, 70, 70, 63, 73, 24, 75, 74, 68,
|
|
74, 73, 74, 74, 74, 74, 63, 76, 24, 77, 68, 76,
|
|
63, 77, 78, 79, 68, 77, 63, 80, 58, 59, 56, 81,
|
|
81, 62, 60, 82, 61, 35, 84, 85, 83, 62, 83, 82,
|
|
83, 83, 83, 60, 86, 61, 35, 88, 89, 87, 62, 87,
|
|
86, 87, 87, 87, 60, 90, 61, 35, 92, 91, 62, 91,
|
|
90, 91, 91, 91, 91, 60, 93, 61, 35, 94, 62, 93,
|
|
60, 94, 95, 96, 62, 94, 60, 97, 80, 58, 99, 100,
|
|
98, 59, 98, 97, 98, 98, 98, 56, 61, 35, 101, 62,
|
|
60, 97, 57, 58, 99, 100, 98, 59, 98, 97, 98, 98,
|
|
98, 56, 103, 21, 105, 106, 104, 107, 104, 103, 104, 104,
|
|
104, 102, 24, 108, 68, 63, 21, 107, 102, 109, 109, 109,
|
|
109, 109, 109, 0, 111, 110, 110, 110, 110, 110, 110, 0,
|
|
112, 112, 112, 112, 112, 112, 0, 113, 115, 114, 114, 113,
|
|
114, 114, 114, 114, 0, 116, 117, 116, 0, 118, 120, 119,
|
|
123, 122, 122, 122, 122, 122, 121, 124, 125, 24, 25, 23,
|
|
24, 25, 23, 61, 35, 62, 60, 61, 35, 62, 60, 24,
|
|
68, 63, 24, 68, 63, 126, 0
|
|
};
|
|
}
|
|
|
|
private static final byte _parser_indicies[] = init__parser_indicies_0();
|
|
|
|
|
|
private static byte[] init__parser_trans_targs_0()
|
|
{
|
|
return new byte [] {
|
|
49, 1, 2, 3, 4, 3, 12, 52, 4, 5, 12, 52,
|
|
49, 6, 5, 7, 6, 7, 8, 42, 9, 10, 13, 9,
|
|
10, 13, 11, 5, 12, 52, 11, 5, 12, 52, 51, 14,
|
|
15, 16, 20, 54, 15, 16, 20, 54, 17, 16, 18, 17,
|
|
18, 19, 21, 15, 16, 20, 54, 53, 22, 23, 14, 31,
|
|
22, 23, 31, 24, 26, 27, 41, 58, 25, 26, 27, 41,
|
|
58, 28, 27, 29, 28, 29, 30, 40, 23, 32, 33, 34,
|
|
38, 56, 33, 34, 38, 56, 35, 34, 36, 35, 36, 37,
|
|
39, 33, 34, 38, 56, 55, 24, 26, 27, 41, 58, 25,
|
|
57, 44, 44, 45, 46, 47, 46, 59, 47, 59, 0, 49,
|
|
50, 49, 1, 43, 49, 49, 49
|
|
};
|
|
}
|
|
|
|
private static final byte _parser_trans_targs[] = init__parser_trans_targs_0();
|
|
|
|
|
|
private static byte[] init__parser_trans_actions_0()
|
|
{
|
|
return new byte [] {
|
|
27, 0, 31, 3, 5, 0, 5, 5, 0, 11, 0, 0,
|
|
29, 13, 0, 13, 0, 0, 0, 0, 15, 43, 15, 0,
|
|
17, 0, 7, 64, 34, 34, 0, 37, 9, 9, 0, 17,
|
|
7, 64, 34, 81, 0, 37, 9, 72, 13, 0, 13, 0,
|
|
0, 17, 0, 40, 76, 68, 86, 58, 15, 46, 43, 15,
|
|
0, 17, 0, 0, 7, 64, 34, 81, 0, 0, 37, 9,
|
|
72, 13, 0, 13, 0, 0, 0, 17, 43, 17, 7, 64,
|
|
34, 81, 0, 37, 9, 72, 13, 0, 13, 0, 0, 17,
|
|
17, 40, 76, 68, 86, 58, 15, 40, 76, 68, 86, 15,
|
|
58, 1, 0, 31, 3, 5, 0, 5, 0, 0, 0, 23,
|
|
61, 25, 1, 0, 52, 49, 55
|
|
};
|
|
}
|
|
|
|
private static final byte _parser_trans_actions[] = init__parser_trans_actions_0();
|
|
|
|
|
|
private static byte[] init__parser_to_state_actions_0()
|
|
{
|
|
return new byte [] {
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
};
|
|
}
|
|
|
|
private static final byte _parser_to_state_actions[] = init__parser_to_state_actions_0();
|
|
|
|
|
|
private static byte[] init__parser_from_state_actions_0()
|
|
{
|
|
return new byte [] {
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
};
|
|
}
|
|
|
|
private static final byte _parser_from_state_actions[] = init__parser_from_state_actions_0();
|
|
|
|
|
|
private static short[] init__parser_eof_trans_0()
|
|
{
|
|
return new short [] {
|
|
0, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13,
|
|
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
|
|
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
|
|
13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 1, 1,
|
|
0, 0, 122, 125, 126, 125, 126, 125, 126, 125, 126, 127
|
|
};
|
|
}
|
|
|
|
private static final short _parser_eof_trans[] = init__parser_eof_trans_0();
|
|
|
|
|
|
static final int parser_start = 49;
|
|
static final int parser_first_final = 49;
|
|
static final int parser_error = 0;
|
|
|
|
static final int parser_en_Closeout = 48;
|
|
static final int parser_en_main = 49;
|
|
|
|
|
|
// line 143 "JavaScanner.rl"
|
|
|
|
public RubyArray operate(String tag_prefix, String input) {
|
|
char[] data = input.toCharArray();
|
|
String disposable_string;
|
|
|
|
String name = "";
|
|
String prefix = "";
|
|
RubySymbol flavor = RubySymbol.newSymbol(runtime, "tasteless".intern());
|
|
RubyHash attributes = RubyHash.newHash(runtime);
|
|
|
|
int tagstart = 0;
|
|
int mark_pfx = 0;
|
|
int mark_stg = 0;
|
|
int mark_attr = 0;
|
|
int mark_nat = 0;
|
|
int mark_vat = 0;
|
|
|
|
String nat = "";
|
|
String vat = "";
|
|
|
|
int cs;
|
|
int p = 0;
|
|
int pe = data.length;
|
|
int eof = pe;
|
|
int act;
|
|
int ts;
|
|
int te;
|
|
|
|
rv = RubyArray.newArray(runtime);
|
|
char[] remainder = data;
|
|
|
|
|
|
// line 351 "JavaScanner.java"
|
|
{
|
|
cs = parser_start;
|
|
ts = -1;
|
|
te = -1;
|
|
act = 0;
|
|
}
|
|
|
|
// line 175 "JavaScanner.rl"
|
|
|
|
// line 361 "JavaScanner.java"
|
|
{
|
|
int _klen;
|
|
int _trans = 0;
|
|
int _acts;
|
|
int _nacts;
|
|
int _keys;
|
|
int _goto_targ = 0;
|
|
|
|
_goto: while (true) {
|
|
switch ( _goto_targ ) {
|
|
case 0:
|
|
if ( p == pe ) {
|
|
_goto_targ = 4;
|
|
continue _goto;
|
|
}
|
|
if ( cs == 0 ) {
|
|
_goto_targ = 5;
|
|
continue _goto;
|
|
}
|
|
case 1:
|
|
_acts = _parser_from_state_actions[cs];
|
|
_nacts = (int) _parser_actions[_acts++];
|
|
while ( _nacts-- > 0 ) {
|
|
switch ( _parser_actions[_acts++] ) {
|
|
case 15:
|
|
// line 1 "NONE"
|
|
{ts = p;}
|
|
break;
|
|
// line 390 "JavaScanner.java"
|
|
}
|
|
}
|
|
|
|
_match: do {
|
|
_keys = _parser_key_offsets[cs];
|
|
_trans = _parser_index_offsets[cs];
|
|
_klen = _parser_single_lengths[cs];
|
|
if ( _klen > 0 ) {
|
|
int _lower = _keys;
|
|
int _mid;
|
|
int _upper = _keys + _klen - 1;
|
|
while (true) {
|
|
if ( _upper < _lower )
|
|
break;
|
|
|
|
_mid = _lower + ((_upper-_lower) >> 1);
|
|
if ( data[p] < _parser_trans_keys[_mid] )
|
|
_upper = _mid - 1;
|
|
else if ( data[p] > _parser_trans_keys[_mid] )
|
|
_lower = _mid + 1;
|
|
else {
|
|
_trans += (_mid - _keys);
|
|
break _match;
|
|
}
|
|
}
|
|
_keys += _klen;
|
|
_trans += _klen;
|
|
}
|
|
|
|
_klen = _parser_range_lengths[cs];
|
|
if ( _klen > 0 ) {
|
|
int _lower = _keys;
|
|
int _mid;
|
|
int _upper = _keys + (_klen<<1) - 2;
|
|
while (true) {
|
|
if ( _upper < _lower )
|
|
break;
|
|
|
|
_mid = _lower + (((_upper-_lower) >> 1) & ~1);
|
|
if ( data[p] < _parser_trans_keys[_mid] )
|
|
_upper = _mid - 2;
|
|
else if ( data[p] > _parser_trans_keys[_mid+1] )
|
|
_lower = _mid + 2;
|
|
else {
|
|
_trans += ((_mid - _keys)>>1);
|
|
break _match;
|
|
}
|
|
}
|
|
_trans += _klen;
|
|
}
|
|
} while (false);
|
|
|
|
_trans = _parser_indicies[_trans];
|
|
case 3:
|
|
cs = _parser_trans_targs[_trans];
|
|
|
|
if ( _parser_trans_actions[_trans] != 0 ) {
|
|
_acts = _parser_trans_actions[_trans];
|
|
_nacts = (int) _parser_actions[_acts++];
|
|
while ( _nacts-- > 0 )
|
|
{
|
|
switch ( _parser_actions[_acts++] )
|
|
{
|
|
case 0:
|
|
// line 4 "JavaScanner.rl"
|
|
{ mark_pfx = p; }
|
|
break;
|
|
case 1:
|
|
// line 5 "JavaScanner.rl"
|
|
{
|
|
prefix = input.substring(mark_pfx, p);
|
|
}
|
|
break;
|
|
case 2:
|
|
// line 8 "JavaScanner.rl"
|
|
{
|
|
if ( !prefix.equals(tag_prefix) ) {
|
|
// have to manually add ':' / Sep
|
|
// pass the text through & reset state
|
|
pass_through(input.substring(tagstart, p) + ":");
|
|
prefix = "";
|
|
{cs = 49; _goto_targ = 2; if (true) continue _goto;}
|
|
}
|
|
}
|
|
break;
|
|
case 3:
|
|
// line 18 "JavaScanner.rl"
|
|
{ mark_stg = p; }
|
|
break;
|
|
case 4:
|
|
// line 19 "JavaScanner.rl"
|
|
{ name = input.substring(mark_stg, p); }
|
|
break;
|
|
case 5:
|
|
// line 20 "JavaScanner.rl"
|
|
{ mark_attr = p; }
|
|
break;
|
|
case 6:
|
|
// line 21 "JavaScanner.rl"
|
|
{
|
|
attributes.op_aset(
|
|
runtime.getCurrentContext(),
|
|
RubyString.newString(runtime, nat),
|
|
RubyString.newString(runtime, vat)
|
|
);
|
|
}
|
|
break;
|
|
case 7:
|
|
// line 29 "JavaScanner.rl"
|
|
{ mark_nat = p; }
|
|
break;
|
|
case 8:
|
|
// line 30 "JavaScanner.rl"
|
|
{ nat = input.substring(mark_nat, p); }
|
|
break;
|
|
case 9:
|
|
// line 31 "JavaScanner.rl"
|
|
{ mark_vat = p; }
|
|
break;
|
|
case 10:
|
|
// line 32 "JavaScanner.rl"
|
|
{ vat = input.substring(mark_vat, p); }
|
|
break;
|
|
case 11:
|
|
// line 34 "JavaScanner.rl"
|
|
{ flavor = RubySymbol.newSymbol(runtime, "open".intern()); }
|
|
break;
|
|
case 12:
|
|
// line 35 "JavaScanner.rl"
|
|
{ flavor = RubySymbol.newSymbol(runtime, "self".intern()); }
|
|
break;
|
|
case 13:
|
|
// line 36 "JavaScanner.rl"
|
|
{ flavor = RubySymbol.newSymbol(runtime, "close".intern()); }
|
|
break;
|
|
case 16:
|
|
// line 1 "NONE"
|
|
{te = p+1;}
|
|
break;
|
|
case 17:
|
|
// line 72 "JavaScanner.rl"
|
|
{act = 1;}
|
|
break;
|
|
case 18:
|
|
// line 79 "JavaScanner.rl"
|
|
{act = 2;}
|
|
break;
|
|
case 19:
|
|
// line 79 "JavaScanner.rl"
|
|
{te = p+1;{
|
|
pass_through(input.substring(p, p + 1));
|
|
tagstart = p + 1;
|
|
}}
|
|
break;
|
|
case 20:
|
|
// line 72 "JavaScanner.rl"
|
|
{te = p;p--;{
|
|
tag(prefix, name, attributes, flavor);
|
|
prefix = "";
|
|
name = "";
|
|
attributes = RubyHash.newHash(runtime);
|
|
flavor = RubySymbol.newSymbol(runtime, "tasteless".intern());
|
|
}}
|
|
break;
|
|
case 21:
|
|
// line 79 "JavaScanner.rl"
|
|
{te = p;p--;{
|
|
pass_through(input.substring(p, p + 1));
|
|
tagstart = p + 1;
|
|
}}
|
|
break;
|
|
case 22:
|
|
// line 79 "JavaScanner.rl"
|
|
{{p = ((te))-1;}{
|
|
pass_through(input.substring(p, p + 1));
|
|
tagstart = p + 1;
|
|
}}
|
|
break;
|
|
case 23:
|
|
// line 1 "NONE"
|
|
{ switch( act ) {
|
|
case 1:
|
|
{{p = ((te))-1;}
|
|
tag(prefix, name, attributes, flavor);
|
|
prefix = "";
|
|
name = "";
|
|
attributes = RubyHash.newHash(runtime);
|
|
flavor = RubySymbol.newSymbol(runtime, "tasteless".intern());
|
|
}
|
|
break;
|
|
case 2:
|
|
{{p = ((te))-1;}
|
|
pass_through(input.substring(p, p + 1));
|
|
tagstart = p + 1;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
// line 590 "JavaScanner.java"
|
|
}
|
|
}
|
|
}
|
|
|
|
case 2:
|
|
_acts = _parser_to_state_actions[cs];
|
|
_nacts = (int) _parser_actions[_acts++];
|
|
while ( _nacts-- > 0 ) {
|
|
switch ( _parser_actions[_acts++] ) {
|
|
case 14:
|
|
// line 1 "NONE"
|
|
{ts = -1;}
|
|
break;
|
|
// line 604 "JavaScanner.java"
|
|
}
|
|
}
|
|
|
|
if ( cs == 0 ) {
|
|
_goto_targ = 5;
|
|
continue _goto;
|
|
}
|
|
if ( ++p != pe ) {
|
|
_goto_targ = 1;
|
|
continue _goto;
|
|
}
|
|
case 4:
|
|
if ( p == eof )
|
|
{
|
|
if ( _parser_eof_trans[cs] > 0 ) {
|
|
_trans = _parser_eof_trans[cs] - 1;
|
|
_goto_targ = 3;
|
|
continue _goto;
|
|
}
|
|
}
|
|
|
|
case 5:
|
|
}
|
|
break; }
|
|
}
|
|
|
|
// line 176 "JavaScanner.rl"
|
|
|
|
return rv;
|
|
}
|
|
}
|