这是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和后面的空白区域。如何让它只读取第一个元素?
答案 0 :(得分:3)
正确的解决方案是使用长度为1的子字符串。
declare
S : constant String := Get_Lexeme (Tok);
begin
theId := Create_Id (S (S'First));
end;
请注意使用'First而不是假设第一个字符位于索引1。