我在《编程概念》中所做的一些事情超出了我父亲的想象,因为预计下一代会比上一代更聪明。无论如何,我一直在做一个需要在 12 月 2 日之前完成的项目。它相当复杂。它应该是一种称为 Eiffel 的基本语言的解析器和词法分析器。到目前为止,我已经在教授的网站和示例文件的帮助下修复了所有编译错误(我认为任何关于 Ada 的书籍都没有介绍如何创建解析器或词法分析器)。我构建了 exe,运行它,结果发现我收到如下错误:
raised SYSTEM.ASSERTIONS.ASSERT_FAILURE : failed precondition from lexical_analyzers.ads:20
在此 zip 文件中的 lexical_analyzers.ads 中的代码中指定:
https://drive.google.com/file/d/0B3ZPyNRv7C3heEN1cnU3dVFOZmM/view?usp=sharing
第 20 行,甚至可能是它上面的第 17 行,都出现了错误。这可能与我编写 parser.adb 文件的方式有关。这种语言的工作方式与 C 语言非常相似,因为您需要在编写主体文件之前编写一个规范文件,有时在我编写代码时来回切换。我是否还应该在 parser.ads 文件中指定我在 parser.adb 文件中编写的每个方法?我想是的,这就是语言的工作方式。你们对我为什么会收到此错误有任何其他想法吗?