pub fn bsv_whitespace(c: char) -> bool {
c.is_ascii_whitespace()
}
pub fn bsv_horizontal_whitespace(c: char) -> bool {
matches!(c, ' ' | '\t')
}
pub fn bsv_ident_start(c: char) -> bool {
match c {
'_' => true,
c if c.is_alphabetic() && !c.is_numeric() => true,
_ => false,
}
}
pub fn bsv_ident(c: char) -> bool {
match c {
'$' => true,
c if c.is_ascii_digit() => true,
c => bsv_ident_start(c),
}
}
pub fn bsv_symbol(c: char) -> bool {
match c {
#[rustfmt::skip]
'!' | '*' | '/' | '=' | '|' | '(' | '[' | '{' | '`' |
'%' | '+' | '<' | '?' | '~' | ')' | ']' | '}' | ':' |
'&' | '-' | '>' | '^' | '.' | ',' | ';' | '#' | '\'' => true,
_ => false,
}
}
pub fn bsv_decimal_underscore(c: char) -> bool {
match c {
'_' => true,
c if c.is_ascii_digit() => true,
_ => false,
}
}
pub fn bsv_hexadecimal_underscore(c: char) -> bool {
match c {
'_' => true,
c if c.is_ascii_hexdigit() => true,
_ => false,
}
}
pub fn bsv_octal_underscore(c: char) -> bool {
matches!(c, '_' | '0'..='7')
}
pub fn bsv_binary_underscore(c: char) -> bool {
matches!(c, '_' | '0' | '1')
}
pub fn vpp_malformed_param(c: char) -> bool {
match c {
c if bsv_ident(c) => false,
c if bsv_whitespace(c) => false,
',' | ')' | '\\' => false,
_ => true,
}
}