小编ahe*_*wer的帖子

在树保护语法中,如何匹配标识符中除保留关键字之外的字符串?

这可能与我不理解关键字提取功能有关,从文档来看,该功能似乎是为了避免关键字和以下表达式之间不存在空格的问题。但是假设我有一个相当标准的变量名、函数名等标识符正则表达式:

/\w*[A-Za-z]\w*/

如何防止它与保留关键字(例如IForELSE或类似的东西)匹配?所以这个表达式会产生错误:

int IF = 5;

虽然这不会:

int x = 5;

grammar parsing context-free-grammar treesitter

7
推荐指数
1
解决办法
2057
查看次数

我可以加载使用 Rust 的地址清理程序构建的 C++ 共享库吗?

在tree-sitter 中,语法从C 和C++ 编译为共享库。然后,这些库由 tree-sitter CLI(一个 Rust 程序)动态加载。树守护者 CLI 通常负责编译语法,尽管它没有-fsanitize标志。我手动编译了我的语法-fsanitize=address(最终想要添加undefined)来帮助调试我作为外部扫描器的一部分编写的一些 C++ 代码。然而,当我尝试使用 tree-sitter CLI rust 程序加载它时,我得到:

打开动态库“~/.cache/tree-sitter/lib/tlaplus.so”时出错

引起:~/.cache/tree-sitter/lib/tlaplus.so:未定义符号:__asan_report_store4

所以 Rust 没有加载 ASAN。我尝试使用 nightly rust 工具链重建树守护者 CLI,并且:

RUSTFLAGS="-Z sanitizer=address" cargo build --target x86_64-unknown-linux-gnu --release
Run Code Online (Sandbox Code Playgroud)

但这仍然给出相同的未定义符号错误。有没有办法从 rust 加载使用 ASAN 编译的 C++ 库,或者我应该将自己的 C++ 前端编写到语法中?

c++ rust address-sanitizer treesitter

6
推荐指数
1
解决办法
554
查看次数

在 Windows 上如何将路径格式标准化为 Unix 风格?

我使用 python 脚本将路径存储在 json 文件中。我希望无论脚本在哪个操作系统上运行,路径都以相同的格式(Unix 样式)存储。所以基本上我想运行该os.path.normpath函数,但它仅将路径转换为 ​​Unix 风格,而不是根据主机操作系统更改其函数。做这个的最好方式是什么?

python path

4
推荐指数
1
解决办法
922
查看次数