我的“值”输入错误:我的 Ada 程序出错

I am getting a bad input for 'value: error in my Ada program

这是 Ada 2012,使用 GNAT IDE。

我正在尝试测试我的项目,但出现以下错误

bad input for 'Value: "x         "

作为控制台的唯一输出。我认为问题出在这个函数上;

function get_next_id(lex: in out Lexical_Analyzer) return Id is
  tok: Token := get_lookahead_token(lex);
  tok_type: Token_Type := get_token_type(tok);
  theId: Id;
begin
  match(tok, ID_TOK);
  get_next_token(lex, tok);
  theId := create_id(Character'Value(String(get_lexeme(tok)))); -- Problem caused here?
  return theId;
end get_next_id;

我认为这是我的问题,它似乎试图转换 x 和后面的白色 space。如何让它只读取第一个元素?

正确的解决方案是使用长度为 1 的子串。

declare
    S : constant String := Get_Lexeme (Tok);
begin
    theId := Create_Id (S (S'First));
end;

注意使用 'First 而不是假设第一个字符位于索引 1。