0.3.4 • Published 4 years ago

@sooho/parser v0.3.4

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

@sooho/parser

This project is hardly forked from the federicobond's awesome project(solidity-parser-antlr/)

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

Usage

import 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:

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.
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)
  }
})

Author

Jisu Park (@jisupark)

And thanks to Federico Bond (@federicobond) for the previous projects

License

MIT

0.3.4

4 years ago

0.3.0

5 years ago

0.2.0

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago

0.1.0-alpha.0

6 years ago

0.0.2-alpha.0

6 years ago

0.0.1-alpha.0

6 years ago