我的“值”输入错误:我的 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。
这是 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。