我得到了一个错误的输入';值:我的Ada程序中出现错误

我得到了一个错误的输入';值:我的Ada程序中出现错误,ada,Ada,这是ADA2012,使用GNAT IDE 我试图测试我的项目,我得到以下错误 bad input for 'Value: "x " 作为控制台的唯一输出。我认为问题来自这个功能 函数get_next_id(lex:in-out词法分析器)返回id为 tok:Token:=get_lookahead_Token(lex); tok类型:Token类型:=获取Token类型(tok); theId:Id; 开始 匹配(tok,ID_-tok); 获取下一个令牌(lex,tok);

这是ADA2012,使用GNAT IDE

我试图测试我的项目,我得到以下错误

bad input for 'Value: "x         "
作为控制台的唯一输出。我认为问题来自这个功能

函数get_next_id(lex:in-out词法分析器)返回id为 tok:Token:=get_lookahead_Token(lex); tok类型:Token类型:=获取Token类型(tok); theId:Id; 开始 匹配(tok,ID_-tok); 获取下一个令牌(lex,tok); theId:=创建id(字符值(字符串(get_lexeme(tok)));--这里出了什么问题? 返回theId; 结束获取下一个id;
我认为这是造成我的问题的原因,它似乎试图转换x和后面的空白。如何使其仅读取第一个元素?

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

声明
S:常量字符串:=Get_Lexeme(Tok);
开始
theId:=创建一个Id(S(S'First));
结束;

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

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

声明
S:常量字符串:=Get_Lexeme(Tok);
开始
theId:=创建一个Id(S(S'First));
结束;

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

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

声明
S:常量字符串:=Get_Lexeme(Tok);
开始
theId:=创建一个Id(S(S'First));
结束;

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

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

声明
S:常量字符串:=Get_Lexeme(Tok);
开始
theId:=创建一个Id(S(S'First));
结束;
注意使用“First”而不是假设第一个字符位于索引1