我正在构建自己的脚本语言,只是为了好玩(是的,我知道这样做的困难),在 Linux 上的 C++ 中。这种脚本语言将有一个导入机制,用于在解释器传递阶段包含相关文件名。
所以/home/michael/foo/bar
可能会加载../bar/baz
哪个可能会加载../foo/baz
等等。我得到的问题是我最终不得不加载这样的文件名:(/home/michael/foo/../bar/../foo/baz
递归地添加到当前目录的相对文件名)。这在错误输出中看起来很傻,我想以后会引起其他问题,更不用说效率很低了。
我如何(除了编写我自己的文件名解析器)“优化”或“压缩”文件名以便我只需要加载/home/michael/foo/baz
?
我并不反对使用库,但如果可能的话,我更喜欢使用 POSIX/GNU C 库/扩展或 Boost,尽管从初步的角度来看,我在其中任何一个中都找不到任何我想要的东西,虽然也许我只是不知道要搜索什么。