@@ -4,32 +4,24 @@ use std::collections::HashMap;
4
4
use std:: fmt:: Write as _;
5
5
use std:: ops:: Range ;
6
6
7
-
8
7
impl RawEmitter {
9
8
pub fn emit_cascading_map ( & mut self , ranges : & [ Range < u32 > ] ) -> bool {
10
-
11
9
let mut map: [ u8 ; 256 ] = [
12
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
13
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
14
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
15
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
16
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
17
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
18
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
19
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
20
- 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 , 0 , 0 , 0 , 0 , 0 , 0 ,
22
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
23
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
24
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
25
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
26
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
27
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
10
+ 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 ,
11
+ 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 ,
12
+ 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 ,
13
+ 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 ,
14
+ 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 ,
15
+ 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 ,
16
+ 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 ,
17
+ 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 ,
18
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
28
19
] ;
29
20
30
- let points = ranges. iter ( ) . flat_map (
31
- |r| ( r. start ..r. end ) . into_iter ( ) . collect :: < Vec < u32 > > ( )
32
- ) . collect :: < Vec < u32 > > ( ) ;
21
+ let points = ranges
22
+ . iter ( )
23
+ . flat_map ( |r| ( r. start ..r. end ) . into_iter ( ) . collect :: < Vec < u32 > > ( ) )
24
+ . collect :: < Vec < u32 > > ( ) ;
33
25
34
26
println ! ( "there are {} points" , points. len( ) ) ;
35
27
@@ -46,7 +38,8 @@ impl RawEmitter {
46
38
let mut bit_for_high_byte = 1u8 ;
47
39
let mut arms = Vec :: < String > :: new ( ) ;
48
40
49
- let mut high_bytes: Vec < usize > = codepoints_by_high_bytes. keys ( ) . map ( |k| k. clone ( ) ) . collect ( ) ;
41
+ let mut high_bytes: Vec < usize > =
42
+ codepoints_by_high_bytes. keys ( ) . map ( |k| k. clone ( ) ) . collect ( ) ;
50
43
high_bytes. sort ( ) ;
51
44
for high_byte in high_bytes {
52
45
let codepoints = codepoints_by_high_bytes. get_mut ( & high_byte) . unwrap ( ) ;
@@ -61,21 +54,15 @@ impl RawEmitter {
61
54
}
62
55
arms. push ( format ! (
63
56
"{} => WHITESPACE_MAP[c as usize & 0xff] & {} != 0" ,
64
- high_byte,
65
- bit_for_high_byte)
66
- ) ;
57
+ high_byte, bit_for_high_byte
58
+ ) ) ;
67
59
bit_for_high_byte <<= 1 ;
68
60
}
69
61
70
- writeln ! (
71
- & mut self . file,
72
- "static WHITESPACE_MAP: [u8; 256] = [{}];" ,
73
- fmt_list( map. iter( ) )
74
- )
75
- . unwrap ( ) ;
62
+ writeln ! ( & mut self . file, "static WHITESPACE_MAP: [u8; 256] = [{}];" , fmt_list( map. iter( ) ) )
63
+ . unwrap ( ) ;
76
64
self . bytes_used += 256 ;
77
65
78
-
79
66
writeln ! ( & mut self . file, "pub fn lookup(c: char) -> bool {{" ) . unwrap ( ) ;
80
67
writeln ! ( & mut self . file, " match c as u32 >> 8 {{" ) . unwrap ( ) ;
81
68
for arm in arms {
0 commit comments