Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Phodal
scie
提交
c7eab902
S
scie
项目概览
Phodal
/
scie
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
scie
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
c7eab902
编写于
9月 08, 2020
作者:
P
Phodal Huang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: add basic logic for scope dep collector
上级
ddf04378
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
6 deletion
+14
-6
scie-grammar/src/scope_dependency.rs
scie-grammar/src/scope_dependency.rs
+14
-6
未找到文件。
scie-grammar/src/scope_dependency.rs
浏览文件 @
c7eab902
use
std
::
collections
::
HashSet
;
use
std
::
collections
::
{
HashSet
,
HashMap
}
;
use
crate
::
inter
::
IRawRule
;
#[derive(Clone,
Debug,
Serialize)]
...
...
@@ -28,7 +28,7 @@ pub enum ScopeDependency {
pub
struct
ScopeDependencyCollector
{
pub
full
:
Vec
<
FullScopeDependency
>
,
pub
partial
:
Vec
<
PartialScopeDependency
>
,
// pub visited_rule: HashSet<
IRawRule>,
pub
visited_rule
:
HashMap
<
String
,
IRawRule
>
,
pub
_
seen_full
:
HashSet
<
String
>
,
pub
_
seen_partial
:
HashSet
<
String
>
,
}
...
...
@@ -38,7 +38,7 @@ impl ScopeDependencyCollector {
ScopeDependencyCollector
{
full
:
vec!
[],
partial
:
vec!
[],
//
visited_rule: Default::default(),
visited_rule
:
Default
::
default
(),
_
seen_full
:
Default
::
default
(),
_
seen_partial
:
Default
::
default
()
}
...
...
@@ -47,10 +47,18 @@ impl ScopeDependencyCollector {
pub
fn
add
(
&
mut
self
,
dep
:
ScopeDependency
)
{
match
dep
{
ScopeDependency
::
FullScopeDependency
(
full_dep
)
=>
{
// self._seen_full.get(&*full_dep.scope_name.clone());
let
scope_name
=
&*
full_dep
.scope_name
.clone
();
if
let
None
=
self
._seen_full
.get
(
scope_name
.clone
())
{
self
._seen_full
.insert
(
String
::
from
(
scope_name
));
self
.full
.push
(
full_dep
);
}
},
ScopeDependency
::
PartialScopeDependency
(
_
)
=>
{
ScopeDependency
::
PartialScopeDependency
(
partial_dep
)
=>
{
let
key
=
&*
partial_dep
.to_key
();
if
let
None
=
self
._seen_partial
.get
(
key
)
{
self
._seen_partial
.insert
(
String
::
from
(
key
));
self
.partial
.push
(
partial_dep
);
}
},
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录