solidity-parser-diligence
A Solidity parser built on top of a robust ANTLR4 grammar.
Now maintained by the ConsenSys Diligence team! 🎉
You can find this new package in NPM at solidity-parser-diligence
(https://www.npmjs.com/package/solidity-parser-diligence).
Usage
; var input = ` contract test { uint256 a; function f() {} }`try parser catch e if e instanceof parserParserError console
The parse
method also accepts a second argument which lets you specify the
following options, in a style similar to the esprima API:
Key | Type | Default | Description |
---|---|---|---|
tolerant | Boolean | false | When 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 . |
loc | Boolean | false | When 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. |
range | Boolean | false | When 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 // { 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 // output the path of each import foundparser
Authors
Gonçalo Sá (@gnsps)
Federico Bond (@federicobond)
License
MIT