我正在阿达做一个算术表达式翻译。
示例输入:“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;