Sean Young 3915917973 Bump solang-parser for crate publish 2 роки тому
..
src 3915917973 Bump solang-parser for crate publish 2 роки тому
testdata f2bbcbd954 test(parser): semantic & syntax tests from ethereum/solidity (#787) 3 роки тому
Cargo.toml 3915917973 Bump solang-parser for crate publish 2 роки тому
README.md 3915917973 Bump solang-parser for crate publish 2 роки тому
build.rs f2d5e6782a Add SPDX headers (#951) 3 роки тому

README.md

Hyperledger Solang Solidity parser

This crate is part of Hyperledger Solang. It contains the parser for Solidity, including the dialects used by Solang for Solana and Substrate.

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);
                    }
                    _ => (),
                }
            }
        }
        _ => (),
    }
}