5.4 Data

5.4.1 p_token_names

The p_token_names array contains the grammar-specified token names. It is indexed by the token ID.

C example:

p_context_t * context = p_context_new(input, input_length);
size_t result = p_parse(context);
if (p_parse(context) == P_UNEXPECTED_TOKEN)
{
    p_position_t error_position = p_position(context);
    fprintf(stderr, "Error: unexpected token `%s' at row %u column %u\n",
        p_token_names[context->token],
        error_position.row, error_position.col);
}

Rust example:

let mut context = p_context_new(input);
if p_parse(&mut context) == P_UNEXPECTED_TOKEN
{
    let error_position = p_position(&context);
    eprintln!("Error: unexpected token `{}' at row {} column {}",
        p_token_names[p_token(&context) as usize],
        error_position.row, error_position.col);
}