Sha256: c6943b23d162eb4dd37679768388dbf21e3bf8f9c482a7e0c0dc1fc1b6fe945c

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

# python3-parser-rb

A Python 3 parser for Ruby.

## Usage

Parse some Python 3 code and walk over the parse tree with a visitor:

```ruby
require 'python3-parser'

# from https://rosettacode.org/wiki/Roman_numerals/Decode#Python
python_code = <<~END
  _rdecode = dict(zip('MDCLXVI', (1000, 500, 100, 50, 10, 5, 1)))

  def decode(roman):
      result = 0
      for r, r1 in zip(roman, roman[1:]):
          rd, rd1 = _rdecode[r], _rdecode[r1]
          result += -rd if rd < rd1 else rd
      return result + _rdecode[roman[-1]]

  if __name__ == '__main__':
      for r in 'MCMXC MMVIII MDCLXVI'.split():
          print(r, decode(r))
END

class MyFuncVisitor < Python3Parser::Visitor
  def visit_funcdef(ctx)
    puts ctx.NAME.text
    visit_children(ctx)
  end
end

parser = Python3Parser::Parser.parse(python_code)
parser.visit(MyFuncVisitor.new)
```

The script above should print `"decode"` when executed, since `decode` is the only function defined in the Python code snippet.

## Technology

Want to target Ruby with your own ANTLR grammars? Check out the [antlr-gemerator](https://github.com/camertron/antlr-gemerator).

## Caveats

See the caveats listed in [antlr4-native's README](https://github.com/camertron/antlr4-native-rb#caveats).

## System Requirements

See the system requirements listed in [antlr4-native's README](https://github.com/camertron/antlr4-native-rb#system-requirements).

## License

Licensed under the MIT license. See LICENSE.txt for details.

## Authors

* Cameron C. Dutro: http://github.com/camertron

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
python3-parser-1.0.0 README.md