#
# Definitions
#
rl xml_digit / (0x30..0x39) /
rl base_char / 0x41..0x5A | 0x61..0x7A /
rl char / 0x9 | 0xA | 0xD | 0x20..0x7f /
rl letter / base_char /
rl name_char / letter | digit | '.' | '-' | '_' | ':' | 0xb7 /
rl name / (letter | '_' | ':') name_char* /
#
# Reference definitions. These appear in the
# top level and also in strings.
#
rl entity_ref_pat / '&' name ';' /
rl char_ref_pat / '' [0-9]+ ';' | '&0x' [0-9a-fA-F]+ ';' /
#
# Single quotes.
#
lex
token sq_close /'\''/
# References in single quotes
token sq_entity_ref /entity_ref_pat/
token sq_char_ref /char_ref_pat/
token sq_data / [^<&']+ /
def sq_item
[ sq_data ]
| [ sq_entity_ref ]
| [ sq_char_ref ]
# The opening quote belongs to the tag region.
def sq_string
[ `' sq_item* sq_close ]
end
#
# Double quotes.
#
lex
token dq_close /'"'/
# References in double quotes
token dq_entity_ref /entity_ref_pat/
token dq_char_ref /char_ref_pat/
token dq_data / [^<&"]+ /
def dq_item
[ dq_data ]
| [ dq_entity_ref ]
| [ dq_char_ref ]
# The opening quote belongs to the tag region.
def dq_string
[ `" dq_item* dq_close ]
end
#
# Tag elements.
#
lex
literal `' `" `= `/
# Within this region whitespace is not significant.
ignore xml_space / (0x20 | 0x9 | 0xD | 0xA)+ /
#
# Attributes
#
token attr_name / name /
end
literal `>
#
# Top Level
#
lex
#
# Comments
#
# Cannot contain '--'
rl char_no_dash / char - '-' /
token comment / '' /
# Opening a tag.
literal `<
#
# Character Data
#
token cdata / ' ']]>'/
token char_data / [^<&]+ /
token entity_ref /entity_ref_pat/
token char_ref /char_ref_pat/
end
def attribute_value
[ sq_string ]
| [ dq_string ]
def attribute
[ attr_name `= attribute_value ]
def empty_tag
[ `< attr_name attribute* `/ `> ]
def close_tag
[ `< `/ attr_name `> ]
def open_tag
[ `< attr_name attribute* `> ]
def tag
[open_tag content close_tag]
def content_item
[tag]
| [empty_tag]
| [char_data]
| [entity_ref]
| [char_ref]
| [cdata]
| [comment]
def content
[content_item*]
def document
[content]
def start
[document]
parse S: start[stdin]
for Switch:tag in S {
if match Switch
["" SwitchContent:content ""]
{
print( 'SWITCH\n' )
for Text:tag in SwitchContent {
if match Text
["" TextContent:content ""]
{
print( ' ' TextContent '\n' )
}
}
}
}
##### IN #####
char
lastnl = p;
column = 0;
line++;
1
1 token( RE_Char, '\0' );
1 token( RE_Char, '\a' );
1 token( RE_Char, '\b' );
1 token( RE_Char, '\t' );
1 token( RE_Char, '\n' );
1 token( RE_Char, '\v' );
1 token( RE_Char, '\f' );
1 token( RE_Char, '\r' );
1 updateCol();
1 token( RE_Char, tokstart+1, tokend );
1 token( RE_Dash, 0, 0 );
1 token( RE_SqClose );
1
scan_error() << "unterminated OR literal" << endl;
1 token( RE_Char, tokstart, tokend );
15
16
17
18
19
20
21
1 token( TK_Literal, tokstart, tokend );
1 token( RE_SqOpenNeg ); 166
1 token( '/');
1 updateCol();
1 token( TK_ColonEquals );
1 token( TK_StartToState );
1 token( TK_AllToState );
1 token( TK_FinalToState );
1 token( TK_NotStartToState );
1 token( TK_NotFinalToState );
1 token( TK_MiddleToState );
1 token( TK_StartFromState );
1 token( TK_AllFromState );
1 token( TK_FinalFromState );
1 token( TK_NotStartFromState );
1 token( TK_NotFinalFromState );
1 token( TK_MiddleFromState );
1 token( TK_StartEOF );
1 token( TK_AllEOF );
1 token( TK_FinalEOF );
1 token( TK_NotStartEOF );
1 token( TK_NotFinalEOF );
1 token( TK_MiddleEOF );
1 token( TK_StartGblError );
1 token( TK_AllGblError );
1 token( TK_FinalGblError );
1 token( TK_NotStartGblError );
1 token( TK_NotFinalGblError );
1 token( TK_MiddleGblError );
1 token( TK_StartLocalError );
1 token( TK_AllLocalError );
1 token( TK_FinalLocalError );
1 token( TK_NotStartLocalError );
1 token( TK_NotFinalLocalError );
1 token( TK_MiddleLocalError );
1 token( TK_StartCond );
1 token( TK_AllCond );
1 token( TK_LeavingCond );
1 token( TK_DotDot );
1 token( TK_StarStar );
1 token( TK_DashDash );
1 token( TK_Arrow );
1 token( TK_ColonGtGt );
1 token( TK_LtColon );
1 updateCol();
1
1 token( *tokstart );
0 token( TK_Word, tokstart, tokend );
0 token( TK_UInt, tokstart, tokend );
0 token( TK_Hex, tokstart, tokend );
0 token( TK_Literal, tokstart, tokend );
0 token( RE_SqOpen ); 166
0 token( TK_Middle );
0 token( TK_ColonGt );
0 updateCol();
0 token( *tokstart );
token( TK_UInt, tokstart, tokend );
token( KW_When );
token( KW_Eof );
token( KW_Err );
token( KW_Lerr );
token( KW_To );
token( KW_From );
token( TK_Word, tokstart, tokend );
1 litBuf.append( '\a' );
1 litBuf.append( '\b' );
1 litBuf.append( '\t' );
1 litBuf.append( '\n' );
1 litBuf.append( '\v' );
1 litBuf.append( '\f' );
1 litBuf.append( '\r' );
1
litBuf.append( tokstart[1] );
1
if ( litBuf.length > 0 ) {
token( TK_LitPat, litBuf.data, litBuf.data+litBuf.length );
litBuf.clear();
}
token( '"' );
1
if ( litBuf.length > 0 ) {
litBuf.append( '\n' );
token( TK_LitPat, litBuf.data, litBuf.data+litBuf.length );
litBuf.clear();
}
token( '"' );
1
if ( litBuf.length > 0 ) {
token( TK_LitPat, litBuf.data, litBuf.data+litBuf.length );
litBuf.clear();
}
token( '[' );
10
1
litBuf.append( *tokstart );
87
88
89
90
91
92
93
94
95
96
97
98
99
101
102
103
104
105
106
107
108
109
110
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
1
token( '/' );
168
1
token( '"' );
token( TK_LitPat, tokstart+1, tokend );
token( '"' );
1
token( TK_Literal, tokstart, tokend );
1
token( '"' );
litBuf.clear();
203
1
token( '[' );
10
1
token( ']' );
if ( top > 0 )
1 updateCol();
1 token( TK_ColonEquals );
1 token( TK_DoubleArrow );
1 token( TK_DoubleEquals );
1 token( TK_NotEquals );
1 token( TK_DoubleColon );
1 token( TK_LessEquals );
1 token( TK_GreaterEquals );
1 token( TK_LeftArrow );
1 token( TK_AmpAmp );
1 token( TK_BarBar );
1 token( *tokstart );
1 updateCol();
1
1 token( *tokstart );
0 token( KW_Pri );
0 token( KW_Print );
0 token( TK_Word, tokstart, tokend );
0 token( TK_Number, tokstart, tokend );
0 updateCol();
0 token( *tokstart );
token( KW_Lex );
token( KW_Action );
token( KW_AlphType );
token( KW_Commit );
token( KW_Undo );
token( KW_Final );
token( KW_Translate );
token( KW_Token );
token( KW_Literal );
token( KW_NonTerm );
token( KW_Uses );
token( KW_Parser );
token( KW_Include );
token( KW_Write );
token( KW_Nfa );
token( KW_Pda );
token( KW_Rl );
token( KW_Cfl );
token( KW_Ignore );
token( KW_End );
token( KW_Pattern );
token( KW_Construct );
token( KW_Red );
token( KW_TypeId );
token( KW_TypeDef );
token( KW_If );
token( KW_Init );
token( KW_Reject );
token( KW_While );
token( KW_Else );
token( KW_SubParser );
token( KW_Next );
token( KW_Match );
token( KW_For );
token( KW_Iter );
token( KW_Find );
token( KW_Root );
token( KW_PrintXML );
token( KW_Then );
token( KW_Do );
token( KW_Namespace );
token( KW_Scanner );
token( TK_Word, tokstart, tokend );
0 144
0
140
0 139
0 28
81
1
2
158
157
0 156
141
3
155
138
3 137
142
143
163
164
148
153
162
149
145
152
150
147
146
151
165
161
3 96
3 97
3 112
3 98
3 116
3 134
3 124
3 114
3 130
3 100
3 128
3 120
3 113
3 107
3 121
3 129
3 95
3 103
3 127
3 135
3 126
3 109
3 104
3 106
3 115
3 110
159
160
3 132
3 111
3 117
3 122
3 131
3 136
3 125
3 133
3 102
3 101
3 119
3 118
3 99
3 105
3 123
3 108
154
17
16
14
15
13
12
4
5
6
10
8
11
7
9
71
70
0 69
27
3 24
79
75
25
80
49
37
43
61
55
31
50
38
44
62
56
32
64
65
66
63
73
74
29
78
67
51
39
45
68
57
33
77
53
41
47
59
35
48
36
42
60
54
30
52
40
46
58
34
82
76
26
72
3 19
3 20
3 23
3 21
3 22
3 18
94
0 92
91
93
90
83
84
88
86
89
85
87
10
166
168
203
10
-128 9 0 x
10 10 10 0
11 127 0 x
-128 9 1 x
10 10 1 1
11 38 1 x
39 39 10 2
40 91 1 x
92 92 2 x
93 127 1 x
-128 9 1 x
10 10 1 1
11 127 1 x
-128 9 3 x
10 10 10 3
11 127 3 x
-128 9 4 x
10 10 4 1
11 33 4 x
34 34 171 x
35 91 4 x
92 92 5 x
93 127 4 x
-128 9 4 x
10 10 4 1
11 127 4 x
-128 9 6 x
10 10 168 4
11 127 6 x
-128 9 7 x
10 10 7 1
11 38 7 x
39 39 171 x
40 91 7 x
92 92 8 x
93 127 7 x
-128 9 7 x
10 10 7 1
11 127 7 x
-128 47 168 5
48 57 181 x
58 64 168 5
65 70 181 x
71 96 168 5
97 102 181 x
103 127 168 5
6 7 x
-128 -1 10 8
0 0 10 9
1 8 10 8
9 9 11 x
10 10 10 10
11 12 10 8
13 13 11 x
14 31 10 8
32 32 11 x
33 33 12 x
34 34 10 11
35 35 13 12
36 37 10 8
38 38 14 x
39 39 15 12
40 43 10 13
44 44 10 8
45 45 10 13
46 46 10 8
47 47 10 14
48 57 16 x
58 58 17 x
59 59 10 8
60 60 18 x
61 61 19 x
62 62 20 x
63 64 10 8
65 90 21 15
91 91 10 16
92 92 10 8
93 93 10 17
94 94 10 8
95 95 21 15
96 96 10 8
97 97 22 x
98 98 21 15
99 99 33 x
100 100 45 x
101 101 46 x
102 102 50 x
103 104 21 15
105 105 55 x
106 107 21 15
108 108 68 x
109 109 75 x
110 110 79 x
111 111 21 15
112 112 95 x
113 113 21 15
114 114 112 x
115 115 119 x
116 116 132 x
117 117 152 x
118 118 21 15
119 119 157 x
120 122 21 15
123 123 10 8
124 124 164 x
125 125 10 8
126 126 165 12
127 127 10 8
-128 8 10 18
9 9 11 x
10 12 10 18
13 13 11 x
14 31 10 18
32 32 11 x
33 127 10 18
-128 60 10 19
61 61 10 20
62 127 10 19
-128 9 0 x
10 10 10 0
11 127 0 x
-128 37 10 19
38 38 10 21
39 127 10 19
-128 9 1 x
10 10 1 1
11 38 1 x
39 39 10 2
40 91 1 x
92 92 2 x
93 127 1 x
-128 47 10 22
48 57 16 x
58 127 10 22
-128 57 10 19
58 58 10 23
59 60 10 19
61 61 10 24
62 127 10 19
-128 44 10 19
45 45 10 25
46 60 10 19
61 61 10 26
62 127 10 19
-128 60 10 19
61 61 10 27
62 62 10 28
63 127 10 19
-128 60 10 19
61 61 10 29
62 127 10 19
-128 47 10 30
48 57 21 15
58 64 10 30
65 90 21 15
91 94 10 30
95 95 21 15
96 96 10 30
97 122 21 15
123 127 10 30
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 98 21 15
99 99 23 x
100 107 21 15
108 108 27 x
109 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 24 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 104 21 15
105 105 25 x
106 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 110 21 15
111 111 26 x
112 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 21 32
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 111 21 15
112 112 28 x
113 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 103 21 15
104 104 29 x
105 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 30 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 120 21 15
121 121 31 x
122 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 111 21 15
112 112 32 x
113 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 21 33
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 101 21 15
102 102 34 x
103 110 21 15
111 111 35 x
112 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 107 21 15
108 108 21 34
109 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 108 21 15
109 109 36 x
110 110 39 x
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 108 21 15
109 109 37 x
110 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 104 21 15
105 105 38 x
106 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 21 35
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 114 21 15
115 115 40 x
116 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 41 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 42 x
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 116 21 15
117 117 43 x
118 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 98 21 15
99 99 44 x
100 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 21 36
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 110 21 15
111 111 21 37
112 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 107 21 15
108 108 47 x
109 109 21 15
110 110 49 x
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 114 21 15
115 115 48 x
116 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 21 38
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 99 21 15
100 100 21 39
101 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 104 21 15
105 105 51 x
106 110 21 15
111 111 54 x
112 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 52 x
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 53 x
98 99 21 15
100 100 21 40
101 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 107 21 15
108 108 21 41
109 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 21 42
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 101 21 15
102 102 21 43
103 103 56 x
104 109 21 15
110 110 60 x
111 115 21 15
116 116 66 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 57 x
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 110 21 15
111 111 58 x
112 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 59 x
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 21 44
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 98 21 15
99 99 61 x
100 104 21 15
105 105 65 x
106 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 107 21 15
108 108 62 x
109 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 116 21 15
117 117 63 x
118 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 99 21 15
100 100 64 x
101 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 21 45
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 21 46
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 67 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 21 47
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 69 x
102 104 21 15
105 105 70 x
106 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 119 21 15
120 120 21 48
121 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 71 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 72 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 73 x
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 74 x
98 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 107 21 15
108 108 21 49
109 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 76 x
98 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 77 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 98 21 15
99 99 78 x
100 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 103 21 15
104 104 21 50
105 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 80 x
98 100 21 15
101 101 87 x
102 102 89 x
103 110 21 15
111 111 90 x
112 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 108 21 15
109 109 81 x
110 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 82 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 114 21 15
115 115 83 x
116 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 111 21 15
112 112 84 x
113 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 85 x
98 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 98 21 15
99 99 86 x
100 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 21 51
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 119 21 15
120 120 88 x
121 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 21 52
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 21 53
98 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 91 x
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 92 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 93 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 94 x
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 108 21 15
109 109 21 54
110 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 96 x
98 99 21 15
100 100 104 x
101 113 21 15
114 114 105 x
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 97 x
115 115 21 15
116 116 100 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 114 21 15
115 115 98 x
116 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 99 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 21 55
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 101 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 102 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 103 x
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 21 56
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 21 57
98 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 104 21 15
105 105 106 x
106 122 21 15
123 127 10 31
-128 47 10 58
48 57 21 15
58 64 10 58
65 90 21 15
91 94 10 58
95 95 21 15
96 96 10 58
97 109 21 15
110 110 107 x
111 122 21 15
123 127 10 58
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 108 x
117 122 21 15
123 127 10 31
-128 47 10 59
48 57 21 15
58 64 10 59
65 90 21 15
91 94 10 59
95 95 109 x
96 96 10 59
97 122 21 15
123 127 10 59
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 119 21 15
120 120 110 x
121 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 108 21 15
109 109 111 x
110 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 107 21 15
108 108 21 60
109 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 113 x
102 107 21 15
108 108 21 61
109 110 21 15
111 111 117 x
112 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 99 21 15
100 100 21 62
101 105 21 15
106 106 114 x
107 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 115 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 98 21 15
99 99 116 x
100 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 21 63
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 110 21 15
111 111 118 x
112 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 21 64
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 98 21 15
99 99 120 x
100 116 21 15
117 117 125 x
118 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 121 x
98 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 122 x
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 123 x
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 124 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 21 65
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 21 15
98 98 126 x
99 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 111 21 15
112 112 127 x
113 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 128 x
98 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 129 x
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 114 21 15
115 115 130 x
116 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 131 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 113 21 15
114 114 21 66
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 103 21 15
104 104 133 x
105 110 21 15
111 111 135 x
112 113 21 15
114 114 138 x
115 120 21 15
121 121 145 x
122 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 134 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 21 67
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 106 21 15
107 107 136 x
108 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 137 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 21 68
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 139 x
98 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 140 x
111 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 114 21 15
115 115 141 x
116 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 107 21 15
108 108 142 x
109 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 97 143 x
98 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 144 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 21 69
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 111 21 15
112 112 146 x
113 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 147 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 148 x
96 96 10 31
97 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 99 21 15
100 100 149 x
101 104 21 15
105 105 151 x
106 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 150 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 101 21 15
102 102 21 70
103 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 99 21 15
100 100 21 71
101 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 109 21 15
110 110 153 x
111 114 21 15
115 115 155 x
116 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 99 21 15
100 100 154 x
101 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 110 21 15
111 111 21 72
112 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 156 x
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 114 21 15
115 115 21 73
116 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 103 21 15
104 104 158 x
105 113 21 15
114 114 161 x
115 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 104 21 15
105 105 159 x
106 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 107 21 15
108 108 160 x
109 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 21 74
102 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 104 21 15
105 105 162 x
106 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 115 21 15
116 116 163 x
117 122 21 15
123 127 10 31
-128 47 10 31
48 57 21 15
58 64 10 31
65 90 21 15
91 94 10 31
95 95 21 15
96 96 10 31
97 100 21 15
101 101 21 75
102 122 21 15
123 127 10 31
-128 123 10 19
124 124 10 76
125 127 10 19
-128 9 3 x
10 10 10 3
11 127 3 x
6 7 x
-128 -1 166 77
0 0 166 78
1 44 166 77
45 45 166 79
46 91 166 77
92 92 167 x
93 93 166 80
94 127 166 77
-128 9 166 81
10 10 166 82
11 47 166 81
48 48 166 83
49 96 166 81
97 97 166 84
98 98 166 85
99 101 166 81
102 102 166 86
103 109 166 81
110 110 166 87
111 113 166 81
114 114 166 88
115 115 166 81
116 116 166 89
117 117 166 81
118 118 166 90
119 127 166 81
6 7 x
-128 -1 168 91
0 0 168 92
1 8 168 91
9 9 169 x
10 10 168 93
11 12 168 91
13 13 169 x
14 31 168 91
32 32 169 x
33 33 168 91
34 34 170 12
35 35 172 12
36 36 173 x
37 37 174 x
38 38 168 91
39 39 175 12
40 41 168 91
42 42 176 x
43 44 168 91
45 45 177 x
46 46 178 x
47 47 168 94
48 48 179 12
49 57 180 x
58 58 182 x
59 59 168 91
60 60 184 x
61 61 168 91
62 62 186 x
63 63 168 91
64 64 187 x
65 90 188 95
91 91 189 x
92 94 168 91
95 95 188 95
96 96 168 91
97 100 188 95
101 101 190 x
102 102 193 x
103 107 188 95
108 108 196 x
109 115 188 95
116 116 199 x
117 118 188 95
119 119 200 x
120 122 188 95
123 127 168 91
-128 8 168 96
9 9 169 x
10 12 168 96
13 13 169 x
14 31 168 96
32 32 169 x
33 127 168 96
-128 9 4 x
10 10 4 1
11 33 4 x
34 34 171 x
35 91 4 x
92 92 5 x
93 127 4 x
-128 104 168 97
105 105 168 98
106 127 168 97
-128 9 6 x
10 10 168 4
11 127 6 x
-128 32 168 99
33 33 168 100
34 41 168 99
42 42 168 101
43 46 168 99
47 47 168 102
48 62 168 99
63 63 168 103
64 93 168 99
94 94 168 104
95 125 168 99
126 126 168 105
127 127 168 99
-128 32 168 99
33 33 168 106
34 41 168 99
42 42 168 107
43 46 168 99
47 47 168 108
48 62 168 99
63 63 168 109
64 93 168 99
94 94 168 110
95 125 168 99
126 126 168 111
127 127 168 99
-128 9 7 x
10 10 7 1
11 38 7 x
39 39 171 x
40 91 7 x
92 92 8 x
93 127 7 x
-128 41 168 99
42 42 168 112
43 127 168 99
-128 44 168 99
45 45 168 113
46 61 168 99
62 62 168 114
63 127 168 99
-128 45 168 99
46 46 168 115
47 127 168 99
-128 47 168 116
48 57 180 x
58 119 168 116
120 120 9 x
121 127 168 116
-128 47 168 116
48 57 180 x
58 127 168 116
-128 47 168 117
48 57 181 x
58 64 168 117
65 70 181 x
71 96 168 117
97 102 181 x
103 127 168 117
-128 60 168 99
61 61 168 118
62 62 183 x
63 127 168 99
-128 61 168 119
62 62 168 120
63 127 168 119
-128 32 168 99
33 33 168 121
34 41 168 99
42 42 168 122
43 46 168 99
47 47 168 123
48 57 168 99
58 58 168 124
59 61 168 99
62 62 185 x
63 93 168 99
94 94 168 125
95 125 168 99
126 126 168 126
127 127 168 99
-128 32 168 127
33 33 168 128
34 41 168 127
42 42 168 129
43 46 168 127
47 47 168 130
48 93 168 127
94 94 168 131
95 125 168 127
126 126 168 132
127 127 168 127
-128 32 168 99
33 33 168 133
34 41 168 99
42 42 168 134
43 46 168 99
47 47 168 135
48 62 168 99
63 63 168 136
64 93 168 99
94 94 168 137
95 125 168 99
126 126 168 138
127 127 168 99
-128 32 168 99
33 33 168 139
34 41 168 99
42 42 168 140
43 46 168 99
47 47 168 141
48 93 168 99
94 94 168 142
95 125 168 99
126 126 168 143
127 127 168 99
-128 47 168 144
48 57 188 95
58 64 168 144
65 90 188 95
91 94 168 144
95 95 188 95
96 96 168 144
97 122 188 95
123 127 168 144
-128 93 168 145
94 94 168 146
95 127 168 145
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 110 188 95
111 111 191 x
112 113 188 95
114 114 192 x
115 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 101 188 95
102 102 188 148
103 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 113 188 95
114 114 188 149
115 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 113 188 95
114 114 194 x
115 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 110 188 95
111 111 195 x
112 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 108 188 95
109 109 188 150
110 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 100 188 95
101 101 197 x
102 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 113 188 95
114 114 198 x
115 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 113 188 95
114 114 188 151
115 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 110 188 95
111 111 188 152
112 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 103 188 95
104 104 201 x
105 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 100 188 95
101 101 202 x
102 122 188 95
123 127 168 147
-128 47 168 147
48 57 188 95
58 64 168 147
65 90 188 95
91 94 168 147
95 95 188 95
96 96 168 147
97 109 188 95
110 110 188 153
111 122 188 95
123 127 168 147
6 7 x
-128 9 203 154
10 10 203 155
11 33 203 154
34 34 203 156
35 90 203 154
91 91 203 157
92 92 204 x
93 127 203 154
-128 96 203 158
97 97 203 159
98 98 203 160
99 101 203 158
102 102 203 161
103 109 203 158
110 110 203 162
111 113 203 158
114 114 203 163
115 115 203 158
116 116 203 164
117 117 203 158
118 118 203 165
119 127 203 158
int
word = lit = 0; word_len = lit_len = 0;
lit = tokdata; lit_len = toklen;
scan_error() << "bad include statement" << endl;
#if 0
char *inclSectionName = word;
char *inclFileName = 0;
/* Implement defaults for the input file and section name. */
if ( inclSectionName == 0 )
inclSectionName = parser->sectionName;
if ( lit != 0 )
inclFileName = prepareFileName( lit, lit_len );
else
inclFileName = fileName;
/* Check for a recursive include structure. Add the current file/section
* name then check if what we are including is already in the stack. */
includeStack.append( IncludeStackItem( fileName, parser->sectionName ) );
if ( recursiveInclude( inclFileName, inclSectionName ) )
scan_error() << "include: this is a recursive include operation" << endl;
else {
/* Open the input file for reading. */
ifstream *inFile = new ifstream( inclFileName );
if ( ! inFile->is_open() ) {
scan_error() << "include: could not open " <<
inclFileName << " for reading" << endl;
}
Scanner scanner( inclFileName, *inFile, output, parser,
inclSectionName, includeDepth+1 );
scanner.do_scan( );
delete inFile;
}
/* Remove the last element (len-1) */
includeStack.remove( -1 );
#endif
InputLoc loc;
#ifdef PRINT_TOKENS
cerr << "scanner:" << line << ":" << column <<
": sending token to the parser " << Parser_lelNames[*p];
cerr << " " << toklen;
if ( tokdata != 0 )
cerr << " " << tokdata;
cerr << endl;
#endif
loc.fileName = fileName;
loc.line = line;
loc.col = column;
parser->token( loc, type, tokdata, toklen );
2
0 1
3
4
3
0
3
x x 0
-2147483648 131 x 0
132 132 2 1
133 2147483647 x 0
x x 0
-2147483648 58 x 0
59 59 3 2
60 2147483647 x 0
-2147483648 128 3 3
129 129 1 x
130 2147483647 3 3
/*
* Copyright 2006-2007 Adrian Thurston <thurston@complang.org>
*/
/* This file is part of Ragel. */
#include <iostream>
#include <fstream>
#include <string.h>
#include "colm.h"
#include "lmscan.h"
#include "lmparse.h"
#include "parsedata.h"
#include "avltree.h"
#include "vector.h"
//#define PRINT_TOKENS
using std::ifstream;
using std::istream;
using std::ostream;
using std::cout;
using std::cerr;
using std::endl;
data
void Scanner::sectionParseInit()
{
init
}
ostream &Scanner::scan_error()
{
/* Maintain the error count. */
gblErrorCount += 1;
cerr << fileName << ":" << line << ":" << column << ": ";
return cerr;
}
bool Scanner::recursiveInclude( char *inclFileName, char *inclSectionName )
{
for ( IncludeStack::Iter si = includeStack; si.lte(); si++ ) {
if ( strcmp( si->fileName, inclFileName ) == 0 &&
strcmp( si->sectionName, inclSectionName ) == 0 )
{
return true;
}
}
return false;
}
void Scanner::updateCol()
{
char *from = lastnl;
if ( from == 0 )
from = tokstart;
//cerr << "adding " << tokend - from << " to column" << endl;
column += tokend - from;
lastnl = 0;
}
void Scanner::token( int type, char c )
{
token( type, &c, &c + 1 );
}
void Scanner::token( int type )
{
token( type, 0, 0 );
}
void Scanner::token( int type, char *start, char *end )
{
char *tokdata = 0;
int toklen = 0;
int *p = &type;
int *pe = &type + 1;
if ( start != 0 ) {
toklen = end-start;
tokdata = new char[toklen+1];
memcpy( tokdata, start, toklen );
tokdata[toklen] = 0;
}
exec
updateCol();
}
void Scanner::endSection( )
{
/* Execute the eof actions for the section parser. */
eof
}
data
void Scanner::do_scan()
{
int bufsize = 8;
char *buf = new char[bufsize];
const char last_char = 0;
int cs, act, have = 0;
int top, stack[32];
bool execute = true;
sectionParseInit();
init
while ( execute ) {
char *p = buf + have;
int space = bufsize - have;
if ( space == 0 ) {
/* We filled up the buffer trying to scan a token. Grow it. */
bufsize = bufsize * 2;
char *newbuf = new char[bufsize];
/* Recompute p and space. */
p = newbuf + have;
space = bufsize - have;
/* Patch up pointers possibly in use. */
if ( tokstart != 0 )
tokstart = newbuf + ( tokstart - buf );
tokend = newbuf + ( tokend - buf );
/* Copy the new buffer in. */
memcpy( newbuf, buf, have );
delete[] buf;
buf = newbuf;
}
input.read( p, space );
int len = input.gcount();
/* If we see eof then append the EOF char. */
if ( len == 0 ) {
p[0] = last_char, len = 1;
execute = false;
}
char *pe = p + len;
exec
/* Check if we failed. */
if ( cs == rlscan_error ) {
/* Machine failed before finding a token. I'm not yet sure if this
* is reachable. */
scan_error() << "scanner error" << endl;
exit(1);
}
/* Decide if we need to preserve anything. */
char *preserve = tokstart;
/* Now set up the prefix. */
if ( preserve == 0 )
have = 0;
else {
/* There is data that needs to be shifted over. */
have = pe - preserve;
memmove( buf, preserve, have );
unsigned int shiftback = preserve - buf;
if ( tokstart != 0 )
tokstart -= shiftback;
tokend -= shiftback;
preserve = buf;
}
}
delete[] buf;
InputLoc loc;
loc.fileName = "<EOF>";
loc.line = line;
loc.col = 1;
parser->token( loc, _eof, 0, 0 );
}
void scan( char *fileName, istream &input, ostream &output )
{
Scanner scanner( fileName, input, output, 0, 0, 0 );
}
##### EXP #####
SWITCH
token( KW_When );
token( KW_Eof );
token( KW_Err );
token( KW_Lerr );
token( KW_To );
token( KW_From );
token( TK_Word, tokstart, tokend );
SWITCH
token( KW_Lex );
token( KW_Action );
token( KW_AlphType );
token( KW_Commit );
token( KW_Undo );
token( KW_Final );
token( KW_Translate );
token( KW_Token );
token( KW_Literal );
token( KW_NonTerm );
token( KW_Uses );
token( KW_Parser );
token( KW_Include );
token( KW_Write );
token( KW_Nfa );
token( KW_Pda );
token( KW_Rl );
token( KW_Cfl );
token( KW_Ignore );
token( KW_End );
token( KW_Pattern );
token( KW_Construct );
token( KW_Red );
token( KW_TypeId );
token( KW_TypeDef );
token( KW_If );
token( KW_Init );
token( KW_Reject );
token( KW_While );
token( KW_Else );
token( KW_SubParser );
token( KW_Next );
token( KW_Match );
token( KW_For );
token( KW_Iter );
token( KW_Find );
token( KW_Root );
token( KW_PrintXML );
token( KW_Then );
token( KW_Do );
token( KW_Namespace );
token( KW_Scanner );
token( TK_Word, tokstart, tokend );