fn get_token_names()

in cli/src/generate/mod.rs [176:203]


fn get_token_names(
    syntax_grammar: &SyntaxGrammar,
    lexical_grammar: &LexicalGrammar,
) -> HashSet<String> {
    let mut result = HashSet::new();
    for variable in &lexical_grammar.variables {
        if variable.kind == VariableType::Named {
            result.insert(variable.name.clone());
        }
    }
    for token in &syntax_grammar.external_tokens {
        if token.kind == VariableType::Named {
            result.insert(token.name.clone());
        }
    }
    for variable in &syntax_grammar.variables {
        for production in &variable.productions {
            for step in &production.steps {
                if let Some(alias) = &step.alias {
                    if !step.symbol.is_non_terminal() && alias.is_named {
                        result.insert(alias.value.clone());
                    }
                }
            }
        }
    }
    result
}