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 |