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

Download history 29795/week @ 2024-05-01 31509/week @ 2024-05-08 32747/week @ 2024-05-15 30988/week @ 2024-05-22 32630/week @ 2024-05-29 36112/week @ 2024-06-05 37603/week @ 2024-06-12 37870/week @ 2024-06-19 35049/week @ 2024-06-26 30559/week @ 2024-07-03 33778/week @ 2024-07-10 35789/week @ 2024-07-17 37888/week @ 2024-07-24 37104/week @ 2024-07-31 39413/week @ 2024-08-07 33326/week @ 2024-08-14

154,460 每月下载量
53 个crate中使用 (14 个直接使用)

Apache-2.0

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