TRu*_*ndi 5 windows bison text-files flex-lexer
我已在 C:\ 中正确下载并安装了 flex、bison 和 Dev C++。然后我尝试在命令提示符下编译 myfile.l,但出现错误:
Flex:无法打开 myfile.l。
问题是什么?
从你的问题中我可以看出你是一个初学者,需要一些指导,所以接下来的内容是教程风格的。我希望你不要介意这语气。我的许多学生在刚开始时都遇到了与您相同的问题。
包含flex、bison或编译器gcc(或g++ )代码的文件只是文本文件,而不是某种特殊编码形式的文件。按照惯例,它们仅被命名为something.l、something.y和something.c(或something.cpp )。如果我们愿意的话,我们可以将它们称为something.txt,甚至something.l.txt 。它们如此命名的原因是为了能够区分一个程序的所有不同组件,而不会使名称空间变得混乱。因此,如果我们有一个项目,例如在 flex 和 bison 中完成的一些作业,我们可以使用单词homework作为基本名称并设置以下文件:
homework.l <-- The lexer source file for flex created for the homework
homework.y <-- The parser source file for bison created for the homework
homework.cpp <-- The C++ source file for g++ created for the homework
homework.obj <-- The object file created by g++
homework.exe <-- The final windows executable created by g++
Run Code Online (Sandbox Code Playgroud)
(还有许多其他文件,但我现在将跳过它)。
由于源文件只是文本文件的形式,因此可以通过文本编辑器创建它们。您表示您正在使用Dev C++,这是一种 IDE(集成开发环境),它将文本编辑器、编译器和调试器组合到一个包中。文本编辑器部分的工作方式与任何其他文本编辑器一样,例如Notepad、NotePad++、vim、emacs或无数其他编辑器工具之一。
通常,默认情况下,Windows 上的文本编辑器工具会保存后缀语言代码为.txt. 以下是保存此类文件的示例对话:
您可以看到,如果我保存了我SOlexer.l通过按下 Save 按钮调用的文件,我会得到一个被调用的文件SOlexer.l.txt,因为默认情况下总是创建一个后缀为.txt.
现在这不再是问题了。如果我尝试像您一样调用flex :
$ flex SOlexer.l
flex: can't open SOlexer.l
Run Code Online (Sandbox Code Playgroud)
我会收到相同的错误消息。不过,我可以使用实际使用的文件名调用flex ,它会起作用:
$ flex SOlexer.l.txt
$
Run Code Online (Sandbox Code Playgroud)
或者,我可以重命名该文件,然后使用它:
$ rename SOlexer.l.txt SOlexer.l
$ flex SOlexer.l
$
Run Code Online (Sandbox Code Playgroud)
问题解决了!
但是,正如您所发现的,最好首先使用所需的(并且更方便的)名称创建文件。要做到这一点,只需在保存文件时从菜单中进行不同的选择,如下所示:
如果我们点击All types (*.*)我们可以创建没有后缀的文件.txt。这应该也适用于大多数类似的工具。
为了帮助在 Windows 上使用 flex 和 bison 遇到困难的学生,我制作了一系列视频教程。也欢迎您使用它们。
总之,虽然您在构建 Flex 文件时遇到了困难,但您的问题与 Flex 或 Bison 无关,而是学习如何在 Windows 系统上创建和编辑文件的简单初学者问题。
| 归档时间: |
|
| 查看次数: |
14899 次 |
| 最近记录: |