A Solidity parser built on top of a robust ANTLR4 grammar.
Usageimport parser from 'solidity-parser-antlr';
Â
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:
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
Example using a visitor to walk over the ASTparser.parse('contract test { uint a; }', { loc: true })
Â
Â
Authorvar ast = parser.parse('contract test { uint a; }')
Â
parser.visit(ast, {
  ImportDirective: function(node) {
    console.log(node.path)
  }
})
Federico Bond (@federicobond)
LicenseMIT
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4