use super::error::ParseError;
use proc_macro2::Ident;
use quote::format_ident;
pub static AUGMENTED_NAME: &str = "Augmented";
pub static EOF_NAME: &str = "eof";
pub static ERROR_NAME: &str = "error";
pub static USER_DATA_PARAMETER_NAME: &str = "data";
pub static TERMINAL_STACK_NAME: &str = "__rustylr_generated_terminal_stack";
pub static OTHERS_TERMINAL_NAME: &str = "__rustylr_other_terminals";
pub static LOOKAHEAD_PARAMETER_NAME: &str = "lookahead";
pub(crate) fn check_reserved_name(ident: &Ident) -> Result<(), ParseError> {
if ident == AUGMENTED_NAME {
return Err(ParseError::ReservedName(ident.clone()));
}
if ident == EOF_NAME {
return Err(ParseError::ReservedName(ident.clone()));
}
if ident == ERROR_NAME {
return Err(ParseError::ReservedName(ident.clone()));
}
Ok(())
}
pub(crate) fn location_variable_name(varname: &Ident) -> Ident {
format_ident!("__rustylr_location_{}", varname)
}