< 返回版块

lithbitren 发表于 2024-09-20 13:51

Tags:rust,ast

在crates.io找到了rust-analyzer发布的账号,但里面只找到了ast的定义,好像说是通过一个grammar::parse函数生成的ast,但这个函数在哪个库下面却找不到了。

应该有rust官方的生成ast的方法吧?用其他语言的不算的啊。

以下是我找到的发布账号,应该没错吧: https://crates.io/teams/github:rust-lang:wg-rls-2

评论区

写评论
作者 lithbitren 2024-09-24 13:33

cargo项目里应该有对应的实现代码吧?不过没找到在哪。

aj3n 2024-09-20 22:52

我不确定“官方的”指的是啥,我理解起码也应该是rustc的parser,而不是ra; syn和rustc的parser就我所知不是同一个,rust句法也是在演进中的,原则上肯定是会出现不一致的,不过只要syn保持更新,这应该不是问题;

--
👇
lithbitren: 谢谢大佬指点,我先试试看。 写宏的时候都是当模板来引入syn的,理应想到其应该有解析ast的功能。

不过这个库和官方编译器的语法解析有什么关系啊,会出现两边语法判定不一致的情况吗?

--
👇
aj3n: https://github.com/dtolnay/syn/issues/374#issuecomment-373808976

用syn. dtolnay给的例子.

作者 lithbitren 2024-09-20 21:31

谢谢大佬指点,我先试试看。 写宏的时候都是当模板来引入syn的,理应想到其应该有解析ast的功能。

不过这个库和官方编译器的语法解析有什么关系啊,会出现两边语法判定不一致的情况吗?

--
👇
aj3n: https://github.com/dtolnay/syn/issues/374#issuecomment-373808976

用syn. dtolnay给的例子.

aj3n 2024-09-20 18:57
1 共 4 条评论, 1 页