$ npm install pegis-solidity
Ideal for AST use-cases
pegis-solidity
original consensys/solidity-parser with additional project specific grammar rules
- Main change is adoption of peggyas thepeg.jsframework has been stagnant, this is a drop in replacement.
- Added support for gweiunits.uint256 gas = 10 gwei; 
- Fixed a bug that didn't recognize empty TryCatch statements with a return expresion.
try Foo.bar() returns (uint result) {} catch {} 
- Fixed a bug that didn't recognize Enum declarations
enum Foo { bar }
Thanks to https://github.com/wrong7
v2 changes start here: 18 August 2021
- feat(refactor): migrate to peggy and various improvements
87b594a
- build(refactor): improve build process
0de7a77
- chore(repo): remove dead and legacy artifacts
012fec1
import { solidityparser } from 'pegis-solidity';$ ./node_modules/.boin/pegis-solidity $PWD/file_name.js
Consider this solidity code as input:
import "Foo.sol";
contract MyContract {
  mapping (uint => address) public addresses;
}Generated output as AST output:
{
  "type": "Program",
  "body": [
    {
      "type": "ImportStatement",
      "value": "Foo.sol"
    },
    {
      "type": "ContractStatement",
      "name": "MyContract",
      "is": [],
      "body": [
        {
          "type": "ExpressionStatement",
          "expression": {
            "type": "DeclarativeExpression",
            "name": "addresses",
            "literal": {
              "type": "Type",
              "literal": {
                "type": "MappingExpression",
                "from": {
                  "type": "Type",
                  "literal": "uint",
                  "members": [],
                  "array_parts": []
                },
                "to": {
                  "type": "Type",
                  "literal": "address",
                  "members": [],
                  "array_parts": []
                }
              },
              "members": [],
              "array_parts": []
            },
            "is_constant": false,
            "is_public": true
          }
        }
      ]
    }
  ]
}var SolidityParser = require('pegis-solidity');
// Parse Solidity code as a string:
var result = SolidityParser.parse('contract { ... }');
// Or, parse a file:
var result = SolidityParser.parseFile('./path/to/file.sol');A full list can be found under the
DIFF.mddocument here
 HexStringLiteral
-  = HexToken StringLiteral
+  = HexToken val:StringLiteral {
+    return {
+      type: "HexLiteral",
+      value: val,
+      start: location().start.offset,
+      end: location().end.offset
+    };
+  }ISC / MIT