Exciting release!Introducing "safe npm". Learn more
Socket
Log inDemoInstall

solidity-parser-diligence

Package Overview
Dependencies
0
Maintainers
1
Versions
7
Issues
File Explorer

Advanced tools

solidity-parser-diligence

A Solidity parser built from a robust ANTLR 4 grammar

    0.4.18latest
    GitHub

Version published
Maintainers
1
Weekly downloads
906
increased by44.96%

Weekly downloads

Readme

Source

get in touch with Consensys Diligence
[ 🌐 📩 🔥 ]

solidity-parser-diligence

A Solidity parser built on top of a robust ANTLR4 grammar.

Now maintained by the ConsenSys Diligence team! :tada:

You can find this new package in NPM at solidity-parser-diligence (https://www.npmjs.com/package/solidity-parser-diligence).

Usage

import parser from 'solidity-parser-diligence'; var input = ` contract test { uint256 a; function f() {} } ` try { parser.parse(input) } catch (e) { if (e instanceof parser.ParserError) { console.log(e.errors) } }

The parse method also accepts a second argument which lets you specify the following options, in a style similar to the esprima API:

KeyTypeDefaultDescription
tolerantBooleanfalseWhen set to true it will collect syntax errors and place them in a list under the key errors inside the root node of the returned AST. Otherwise, it will raise a parser.ParserError.
locBooleanfalseWhen set to true, it will add location information to each node, with start and stop keys that contain the corresponding line and column numbers. Column numbers start from 0, lines start from 1.
rangeBooleanfalseWhen set to true, it will add range information to each node, which consists of a two-element array with start and stop character indexes in the input.
Example with location information
parser.parse('contract test { uint a; }', { loc: true }) // { type: 'SourceUnit', // children: // [ { type: 'ContractDefinition', // name: 'test', // baseContracts: [], // subNodes: [Array], // kind: 'contract', // loc: [Object] } ], // loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 24 } } }
Example using a visitor to walk over the AST
var ast = parser.parse('contract test { uint a; }') // output the path of each import found parser.visit(ast, { ImportDirective: function(node) { console.log(node.path) } })

Authors

Gonçalo Sá (@gnsps)

Federico Bond (@federicobond)

License

MIT

FAQs

Last updated on 13 Feb 2020

Did you know?

Socket installs a Github app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.

Install Socket
Socket
support@socket.devSocket SOC 2 Logo

Product

  • Package Issues
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc