import re


def normalize_token(token):
    """
    Convert symbols to avoid collisions with reserved punctuation
    in NLTK and coq.
    To avoid collisions with reserved words, we prefix each token
    with an underscore '_'.
    """
    normalized = token
    normalized = re.sub(r'\.', '_DOT', normalized)
    normalized = re.sub(r',', '_COMMA', normalized)
    normalized = re.sub(r'\(', '_LEFTB', normalized)
    normalized = re.sub(r'\)', '_RIGHTB', normalized)
    normalized = re.sub(r'^-$', '_HYPHEN', normalized)
    normalized = re.sub(r'^&$', '_AMPERSAND', normalized)
    normalized = re.sub(r'-', '_dash_', normalized)
    if not normalized.startswith('_'):
        normalized = '_' + normalized
    return normalized