@@ -519,7 +519,7 @@ impl Generator {
519519 }
520520
521521 fn add_non_terminal_alias_map ( & mut self ) {
522- let mut aliases_by_symbol = HashMap :: new ( ) ;
522+ let mut alias_ids_by_symbol = HashMap :: new ( ) ;
523523 for variable in & self . syntax_grammar . variables {
524524 for production in & variable. productions {
525525 for step in & production. steps {
@@ -528,10 +528,13 @@ impl Generator {
528528 && Some ( alias) != self . default_aliases . get ( & step. symbol )
529529 {
530530 if self . symbol_ids . contains_key ( & step. symbol ) {
531- let alias_ids =
532- aliases_by_symbol. entry ( step. symbol ) . or_insert ( Vec :: new ( ) ) ;
533- if let Err ( i) = alias_ids. binary_search ( & alias) {
534- alias_ids. insert ( i, alias) ;
531+ if let Some ( alias_id) = self . alias_ids . get ( & alias) {
532+ let alias_ids = alias_ids_by_symbol
533+ . entry ( step. symbol )
534+ . or_insert ( Vec :: new ( ) ) ;
535+ if let Err ( i) = alias_ids. binary_search ( & alias_id) {
536+ alias_ids. insert ( i, alias_id) ;
537+ }
535538 }
536539 }
537540 }
@@ -540,19 +543,19 @@ impl Generator {
540543 }
541544 }
542545
543- let mut aliases_by_symbol = aliases_by_symbol . iter ( ) . collect :: < Vec < _ > > ( ) ;
544- aliases_by_symbol . sort_unstable_by_key ( |e| e. 0 ) ;
546+ let mut alias_ids_by_symbol = alias_ids_by_symbol . iter ( ) . collect :: < Vec < _ > > ( ) ;
547+ alias_ids_by_symbol . sort_unstable_by_key ( |e| e. 0 ) ;
545548
546549 add_line ! ( self , "static uint16_t ts_non_terminal_alias_map[] = {{" ) ;
547550 indent ! ( self ) ;
548- for ( symbol, aliases ) in aliases_by_symbol {
551+ for ( symbol, alias_ids ) in alias_ids_by_symbol {
549552 let symbol_id = & self . symbol_ids [ symbol] ;
550553 let public_symbol_id = & self . symbol_ids [ & self . symbol_map [ & symbol] ] ;
551- add_line ! ( self , "{}, {}," , symbol_id, 1 + aliases . len( ) ) ;
554+ add_line ! ( self , "{}, {}," , symbol_id, 1 + alias_ids . len( ) ) ;
552555 indent ! ( self ) ;
553556 add_line ! ( self , "{}," , public_symbol_id) ;
554- for alias in aliases {
555- add_line ! ( self , "{}," , & self . alias_ids [ & alias ] ) ;
557+ for alias_id in alias_ids {
558+ add_line ! ( self , "{}," , alias_id ) ;
556559 }
557560 dedent ! ( self ) ;
558561 }
0 commit comments