22 个版本
0.3.4 | 2024年6月5日 |
---|---|
0.3.3 | 2023年10月24日 |
0.3.2 | 2023年8月24日 |
0.3.1 | 2023年6月30日 |
0.1.0 | 2021年12月31日 |
#9 in #solidity
154,460 每月下载量
在 53 个crate中使用 (14 个直接使用)
315KB
7.5K SLoC
Hyperledger Solang Solidity 解析器
这个crate是Hyperledger Solang的一部分。它包含了用于Solidity的解析器,包括Solang用于Solana和Polkadot使用的方言。
此解析器与Ethereum Solidity v0.8.22 兼容。
solang-parser
仍处于 0.*.*
版本,因此可能会随时出现破坏性更改。如果您必须依赖于 solang-parser
,我们建议锁定到特定版本,即 =0.y.z
。
use solang_parser::{pt::{SourceUnitPart, ContractPart}, parse};
let (tree, comments) = parse(r#"
contract flipper {
bool private value;
/// Constructor that initializes the `bool` value to the given `init_value`.
constructor(bool initvalue) {
value = initvalue;
}
/// A message that can be called on instantiated contracts.
/// This one flips the value of the stored `bool` from `true`
/// to `false` and vice versa.
function flip() public {
value = !value;
}
/// Simply returns the current value of our `bool`.
function get() public view returns (bool) {
return value;
}
}
"#, 0).unwrap();
for part in &tree.0 {
match part {
SourceUnitPart::ContractDefinition(def) => {
println!("found contract {:?}", def.name);
for part in &def.parts {
match part {
ContractPart::VariableDefinition(def) => {
println!("variable {:?}", def.name);
}
ContractPart::FunctionDefinition(def) => {
println!("function {:?}", def.name);
}
_ => (),
}
}
}
_ => (),
}
}
依赖项
~1.2–3.5MB
~59K SLoC