From fc4d7bd9958fd1eb450b3e6fe4b4aeff57ab5657 Mon Sep 17 00:00:00 2001 From: Amaan Qureshi Date: Sun, 25 Aug 2024 16:08:40 -0400 Subject: [PATCH] fix(cli): dedup `preceding_auxiliary_symbols` --- cli/src/generate/build_tables/build_parse_table.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cli/src/generate/build_tables/build_parse_table.rs b/cli/src/generate/build_tables/build_parse_table.rs index 2d22e210..bb6d10bd 100644 --- a/cli/src/generate/build_tables/build_parse_table.rs +++ b/cli/src/generate/build_tables/build_parse_table.rs @@ -32,7 +32,7 @@ type SymbolSequence = Vec; type AuxiliarySymbolSequence = Vec; pub type ParseStateInfo<'a> = (SymbolSequence, ParseItemSet<'a>); -#[derive(Clone)] +#[derive(Clone, PartialEq)] struct AuxiliarySymbolInfo { auxiliary_symbol: Symbol, parent_symbols: Vec, @@ -193,7 +193,7 @@ impl<'a> ParseTableBuilder<'a> { fn add_actions( &mut self, mut preceding_symbols: SymbolSequence, - mut preceding_auxiliary_symbols: Vec, + mut preceding_auxiliary_symbols: AuxiliarySymbolSequence, state_id: ParseStateId, item_set: &ParseItemSet<'a>, ) -> Result<()> { @@ -311,6 +311,8 @@ impl<'a> ParseTableBuilder<'a> { } } + preceding_auxiliary_symbols.dedup(); + // Having computed the successor item sets for each symbol, add a new // parse state for each of these item sets, and add a corresponding Shift // action to this state.