带有“索引检查失败”的CONSTRAINT_ERROR

问题描述 投票:1回答:1

我正在阿达做一个算术表达式翻译。

示例输入:“ADD a b; ADD b c; PRN c; SUB c a; PRN c;”

我有一个很长的代码,所以我不想复制所有这些,而是​​我试着解释那个短片,我得到了错误。

's'是一个状态,由记录表示,字段'Size'和一个名为Expressions的数组。表达式由记录表示,其字段为:Op(枚举类型),LHS和RHS(字符)。 函数notSpaceLinSearch找到输入字符串中不是空格的第一个元素的索引。

所以我的问题是,为什么错误可以提出,为什么只是在索引引用的第5次?

感谢您提前的答案。

while loopIndex <= numOfExpressions loop
         s.Size := s.Size + 1;
         notSpaceLinSearch(charArray, ' ', contains, notSpaceIndex);
         foundChar := charArray(notSpaceIndex);
         case foundChar is
            when 'A' => s.Expressions(s.Size).Op := ADD;
            when 'S' => s.Expressions(s.Size).Op := SUB;
            when 'M' => s.Expressions(s.Size).Op := MUL;
            when 'P' => s.Expressions(s.Size).Op := PRN;
            when 'I' => s.Expressions(s.Size).Op := INI; -- raised CONSTRAINT_ERROR .... index check failed
            when others => null;
         end case;
....
....
...
end loop;
ada gnat
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.