我在Ada程序中输入了错误的输入错误:错误

时间:2015-07-19 04:56:45

标签: ada

这是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和后面的空白区域。如何让它只读取第一个元素?

1 个答案:

答案 0 :(得分:3)

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

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

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