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