编译原理实验错误排查指南

……持续更新中

 0. 显示找不到make

可能的原因1: 没有装上make, 在msys2 x64中重新安装对应环境的make。重装后要重启vs, 否则没有更新到

可能的原因2: 排除问题1后, 确认在cmd环境下可以打开make, 如果不行, 可能是没有加环境变量, 也可能是

可能的原因3: (来自21网安1班周家锋同学的回答) 因为make不叫make, 改了叫mingw-make64之类的名字。

对于原因2,3, 可以通过everything查找make*.exe, 再筛选和msys64有关的路径, 从而判定到底有没有make, 以及是否因为环境变量缺乏对应的地址导致的。

 

来自"墲⃠穹芜烬"同学的吐槽: 不嫌慢也能让网站的工作流编译

来自老师对这条吐槽的吐槽: 确实, 但这个环境其实是我故意的让我大家去配的, 原因是更加贴近基本的编译环境. 如果全都一键就能搞好, 这个实验要填的又只有那么一两句代码, 对你们的锻炼根本为零. 下面一个例子正好是讲调试过程对人思路的锻炼

 

1.项目1在自己电脑上能有90或100分, 但在系统上总是60分, 能make, 但第一个case显示第一个符号识别出为ERROR.

问题核心: 输入文件中的\n被各种原因替换成\r\n了, 而源代码的逻辑中没有识别\r的部分, 因此出错.

解决方案: 1. 在scan.c中增加相应处理; 2. 把readfile中的\r全部去掉.

 

发现的思路: 既然读到ERROR, 那就是读到奇怪的字符, 然后我就想办法在服务器端输出他到底读到了什么字符. 找到了之后, 就只要加一个额外处理就行. 服务器显示对应的符号十六进制是d, 因此就是13号ascii码, 也就是\r. 

 

2.项目2 (LEX) 出现如下错误:

 

错误原因:因为gcc路径不对找不到 libfl.a。

解决思路:根据gcc的帮助文件,它会去检索库的路径,但比较繁杂。特别地,它会在一个名为LIBRARY_PATH的环境变量中找库的路径。win下面一般没有,因此要手动添加。

解决办法:在系统变量中,增加名为LIBRARY_PATH的变量,值为你装msys64的路径下的usr\lib文件夹,比如我的是默认地址:“C:\msys64\usr\lib”。

 

错误原因:应该是没有装好flex

解决思路:估计是没有按照我的官方配置方法来做, 需要手动安装flex   pacman -S flex. 之后别忘了修改Path变量

 

 3. 显示找不到comtool

 故障原因: 由于Path变量没设置好, 让msys的内置python路径比外部python的要优先, 进而导致找不到comtool这个脚本

解决方法: 编辑Path, 让自己装的python的路径位置比msys64的要前。

 

4.项目5 

错误原因:应该是没有装好bison, 或者bison的路径不正确

解决思路:需要手动安装bison  pacman -S bison, 之后别忘了修改Path变量

 

5. VSCode内调试出现莫名其妙的情况

这是我上课时候翻车遇到的。检查后发现我在Watch中添加了一个函数getToken(), 估计vs为了计算这个函数, 反复去读取缓冲区, 导致后面的都拿不到正确的值了。

修正方法: 把watch中监视的函数删掉。

 

4. bj平台提示领取任务失败

 联系我,然后我会把你移出班级再重新加进来。注意保存已有数据。

 

 

(已彻底消灭的问题) 

1. 找不到colorama模块

注意: 这个问题已被我通过注释掉test.py中所有用到这个库的语句解决, 所以后面的同学基本上不会遇到。下文仅作留档使用

首先要吐槽的是,这个模块其实根本没有太大作用,只是因为这个平台提供的test脚本为了好看,非要引入这坨东西。

错误原因:有很多可能,这里列举最常见的几个。1.python版本建议在3.8以下,因为理论上这个模块只支持到这个版本。(但事实上有些超出3.8的版本一样可以运行。)2.装了msys之后,里面的python和自己装的冲突了。msys里面的python没有pip,导致一直找不到相关模块。(具体原理有待进一步研究)3.系统装了好几个python,然后script路径也有好几个,也是互相冲突。

解决方案:(一一对应)1.换python。2.移到msys64装python的目录下面,把python移走。3.利用where命令找到当前的默认python路径,然后在它的目录下找到script目录,打开cmd切到这个目录下,再运行pip安装colorama模块。

 

……持续更新中

 

posted @ 2022-06-30 10:35  lynnzixing  阅读(642)  评论(0编辑  收藏  举报