@@ -20,6 +20,7 @@ use cfgrammar::{newlinecache::NewlineCache, Spanned};
20
20
use lazy_static:: lazy_static;
21
21
use lrpar:: { CTParserBuilder , Lexeme } ;
22
22
use num_traits:: { AsPrimitive , PrimInt , Unsigned } ;
23
+ use quote:: quote;
23
24
use regex:: Regex ;
24
25
use serde:: Serialize ;
25
26
use try_from:: TryFrom ;
@@ -416,12 +417,13 @@ pub fn lexerdef() -> {lexerdef_type} {{
416
417
417
418
outs. push_str ( " let start_states: Vec<StartState> = vec![" ) ;
418
419
for ss in lexerdef. iter_start_states ( ) {
420
+ let state_name = & ss. name ;
419
421
write ! (
420
422
outs,
421
423
"
422
- StartState::new({}, {:? }, {}, ::cfgrammar::Span::new({}, {}))," ,
424
+ StartState::new({}, {}, {}, ::cfgrammar::Span::new({}, {}))," ,
423
425
ss. id,
424
- ss . name ,
426
+ quote! ( #state_name ) ,
425
427
ss. exclusive,
426
428
ss. name_span. start( ) ,
427
429
ss. name_span. end( )
@@ -438,7 +440,7 @@ pub fn lexerdef() -> {lexerdef_type} {{
438
440
None => "None" . to_owned ( ) ,
439
441
} ;
440
442
let n = match r. name {
441
- Some ( ref n) => format ! ( "Some({:? }.to_string())" , n ) ,
443
+ Some ( ref n) => format ! ( "Some({}.to_string())" , quote! ( #n ) ) ,
442
444
None => "None" . to_owned ( ) ,
443
445
} ;
444
446
let target_state = match r. target_state {
@@ -450,15 +452,17 @@ pub fn lexerdef() -> {lexerdef_type} {{
450
452
r. name_span. start( ) ,
451
453
r. name_span. end( )
452
454
) ;
455
+ let regex = & r. re_str ;
456
+ let start_states = r. start_states . as_slice ( ) ;
453
457
write ! (
454
458
outs,
455
459
"
456
- Rule::new({}, {}, {}, \" {} \" .to_string(), {:? }.to_vec(), {}).unwrap()," ,
460
+ Rule::new({}, {}, {}, {} .to_string(), {}.to_vec(), {}).unwrap()," ,
457
461
tok_id,
458
462
n,
459
463
n_span,
460
- r . re_str . replace ( '\\' , " \\ \\ " ) . replace ( '"' , " \\ \" " ) ,
461
- r . start_states,
464
+ quote! ( #regex ) ,
465
+ quote! ( [ # ( # start_states) , * ] ) ,
462
466
target_state,
463
467
)
464
468
. ok ( ) ;
@@ -652,10 +656,12 @@ pub fn ct_token_map<StorageT: Display>(
652
656
// forces a recompile, this will change this value, causing anything which depends on this
653
657
// build of lrlex to be recompiled too.
654
658
let mut outs = String :: new ( ) ;
659
+ let timestamp = env ! ( "VERGEN_BUILD_TIMESTAMP" ) ;
655
660
write ! (
656
661
outs,
657
- "// lrlex build time: {:?}\n \n mod {} {{\n " ,
658
- env!( "VERGEN_BUILD_TIMESTAMP" ) ,
662
+ "// lrlex build time: {}\n \n mod {} {{\n " ,
663
+ quote!( #timestamp)
664
+ ,
659
665
mod_name
660
666
)
661
667
. ok ( ) ;
0 commit comments