pseudo-lang / pseudo-python Goto Github PK
View Code? Open in Web Editor NEWa restricted python to javascript / c# / go / ruby compiler
License: MIT License
a restricted python to javascript / c# / go / ruby compiler
License: MIT License
in
is useful for all collections: convert e in s
to a standard method call to <SequenceType>#contains?
Compiling the following program to Go produces no error handling logic:
import sys
print(int(sys.argv[1]))
package main
import (
"strconv"
"os"
"fmt"
)
func main() {
_int, _ := strconv.Atoi(os.Args[1]) // error handling missing
fmt.Println(_int)
}
When we go run foo.go "not_an_int"
, the program prints 0
and exists successfully. When we python3 foo.py "not_an_int"
, we see:
Traceback (most recent call last):
File "foo.py", line 3, in <module>
print(int(sys.argv[1]))
ValueError: invalid literal for int() with base 10: 'not_an_int'
Python's pow operator (x**2
) produces math.Pow(x, 2)
in Go; however, in Go, math.Pow()
only accepts floats, but in Python, **
handles ints as well as floats. This means the Python program:
x = 2
print(x**2)
Translates to
// package decl and imports elided
func main() {
x := 2 // int
fmt.Println(math.Pow(x, 2))
}
Which fails to compile with error: ./foo.go:10: cannot use x (type int) as type float64 in argument to math.Pow
import sys
print(sys.stdin.readline())
Error:
Traceback (most recent call last):
File "/usr/local/bin/pseudo-python", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/site-packages/pseudo_python/main.py", line 45, in main
clj = yaml.dump(pseudo_python.translate(source))
File "/usr/local/lib/python3.5/site-packages/pseudo_python/__init__.py", line 5, in translate
return pseudo_python.ast_translator.ASTTranslator(pseudo_python.parser.parse(source), source).translate()
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 104, in translate
main = self._translate_main()
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 142, in _translate_main
return self._translate_node(self.main)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 280, in _translate_node
x = self._translate_node(n)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 656, in _translate_expr
return self._translate_node(value)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 419, in _translate_call
arg_nodes = self._translate_node(args)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 280, in _translate_node
x = self._translate_node(n)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 423, in _translate_call
func_node = self._translate_node(func, in_call=True)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 898, in _translate_attribute
if value_node['name'] == 'sys' and attr == 'argv':
KeyError: 'name'
import sys
sys.stdout.write("123")
Error:
Traceback (most recent call last):
File "/usr/local/bin/pseudo-python", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/site-packages/pseudo_python/main.py", line 45, in main
clj = yaml.dump(pseudo_python.translate(source))
File "/usr/local/lib/python3.5/site-packages/pseudo_python/__init__.py", line 5, in translate
return pseudo_python.ast_translator.ASTTranslator(pseudo_python.parser.parse(source), source).translate()
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 104, in translate
main = self._translate_main()
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 142, in _translate_main
return self._translate_node(self.main)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 280, in _translate_node
x = self._translate_node(n)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 656, in _translate_expr
return self._translate_node(value)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 423, in _translate_call
func_node = self._translate_node(func, in_call=True)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 898, in _translate_attribute
if value_node['name'] == 'sys' and attr == 'argv':
KeyError: 'name'
The links under the section examples
are dead.
I can't get it to read a file (I wanted to see the AST generated).
I'm on Mac OS 10.10.4 using Python 3.5.1 from homebrew.
Versions:
ivan@probook ~> pip3 freeze
pseudo==0.2.3
pseudo-python==0.2.6
Sample file;
ivan@probook ~> cat fib.py
def fib(n):
if n <= 1:
return 1
else:
return fib(n - 1) + fib(n - 2)
print(fib(4))
Expected to produce AST, but instead:
ivan@probook ~> pseudo-python fib.py
Traceback (most recent call last):
File "/usr/local/bin/pseudo-python", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/site-packages/pseudo_python/main.py", line 45, in main
clj = yaml.dump(pseudo_python.translate(source))
File "/usr/local/lib/python3.5/site-packages/pseudo_python/__init__.py", line 5, in translate
return pseudo_python.ast_translator.ASTTranslator(pseudo_python.parser.parse(source), source).translate()
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 104, in translate
main = self._translate_main()
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 142, in _translate_main
return self._translate_node(self.main)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 280, in _translate_node
x = self._translate_node(n)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 647, in _translate_expr
return self._translate_node(value)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
TypeError: _translate_call() missing 2 required positional arguments: 'starargs' and 'kwargs'
test.py:
a = map(lambda x: x + 1, [1, 2, 3])
When I try to convert test.py
, the program throws the following error:
Traceback (most recent call last):
File "/usr/local/bin/pseudo-python", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/site-packages/pseudo_python/main.py", line 61, in main
node = pseudo_python.translate(source)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/__init__.py", line 5, in translate
return pseudo_python.ast_translator.ASTTranslator(pseudo_python.parser.parse(source), source).translate()
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 104, in translate
main = self._translate_main()
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 142, in _translate_main
return self._translate_node(self.main)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 280, in _translate_node
x = self._translate_node(n)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 969, in _translate_assign
value_node = self._translate_node(value)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 422, in _translate_call
arg_nodes = [arg if not isinstance(arg, ast.AST) else self._translate_node(arg) for arg in args]
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 422, in <listcomp>
arg_nodes = [arg if not isinstance(arg, ast.AST) else self._translate_node(arg) for arg in args]
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
AttributeError: 'ASTTranslator' object has no attribute '_translate_lambda'
test.py:
def foo():
return [x + 1 for x in [1,2,3]]
Error:
Traceback (most recent call last):
File "/usr/local/bin/pseudo-python", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/site-packages/pseudo_python/main.py", line 45, in main
clj = yaml.dump(pseudo_python.translate(source))
File "/usr/local/lib/python3.5/site-packages/pseudo_python/__init__.py", line 5, in translate
return pseudo_python.ast_translator.ASTTranslator(pseudo_python.parser.parse(source), source).translate()
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 103, in translate
self._translate_pure_functions()
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 1667, in _translate_pure_functions
self._definition_index['functions'][f[1]] = self._translate_function(self._definition_index['functions'][f[1]], 'functions', None, f[1], [])
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 622, in _translate_function
child_ = self._translate_node(child)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 276, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/usr/local/lib/python3.5/site-packages/pseudo_python/ast_translator.py", line 660, in _translate_return
whiplash = self.type_env.top[self.current_class][self.function_name]
KeyError: 'list comprehension'
Getting the above error when running the latest pseudo-python
on the fib.py
example:
$ pseudo-python original.py
Traceback (most recent call last):
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/bin/pseudo-python", line 33, in <module>
sys.exit(load_entry_point('pseudo-python==0.2.34', 'console_scripts', 'pseudo-python')())
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/main.py", line 45, in main
clj = pseudo_python.translate_to_yaml(source)
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/__init__.py", line 10, in translate_to_yaml
return yaml.dump(translate(source))
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/__init__.py", line 6, in translate
return pseudo_python.ast_translator.ASTTranslator(pseudo_python.parser.parse(source), source).translate()
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 106, in translate
main = self._translate_main()
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 144, in _translate_main
return self._translate_node(self.main)
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 282, in _translate_node
x = self._translate_node(n)
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 278, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 718, in _translate_expr
return self._translate_node(value)
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 278, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 486, in _translate_call
arg_nodes = self._translate_node(args)
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 282, in _translate_node
x = self._translate_node(n)
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 278, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 489, in _translate_call
arg_nodes = [arg if not isinstance(arg, ast.AST) else self._translate_node(arg) for arg in args]
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 489, in <listcomp>
arg_nodes = [arg if not isinstance(arg, ast.AST) else self._translate_node(arg) for arg in args]
File "/Users/rix0rrr/Dev/transpilation/pseudolang/.env/lib/python3.8/site-packages/pseudo_python/ast_translator.py", line 278, in _translate_node
return getattr(self, '_translate_%s' % type(node).__name__.lower())(**fields)
AttributeError: 'ASTTranslator' object has no attribute '_translate_constant'
I using Python 3.5.1 in ubuntu. I installed version of pseudo-python.
a.py
data1 = int(input("Num : "))
max = 12
min = 1
while min<=max:
print("%d * %d = %d" % (data1,min,data1*min))
min+=1
$ pseudo-python a.py csharp
Traceback (most recent call last):
File "/usr/local/bin/pseudo-python", line 9, in <module>
load_entry_point('pseudo-python==0.2.28', 'console_scripts', 'pseudo-python')()
File "/usr/local/lib/python3.5/dist-packages/pseudo_python/main.py", line 60, in main
node = pseudo_python.translate(source)
File "/usr/local/lib/python3.5/dist-packages/pseudo_python/__init__.py", line 6, in translate
return pseudo_python.ast_translator.ASTTranslator(pseudo_python.parser.parse(source), source).translate()
File "/usr/local/lib/python3.5/dist-packages/pseudo_python/parser.py", line 5, in parse
x = ast.parse(source)
File "/usr/lib/python3.5/ast.py", line 35, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "<unknown>", line 1
data1 = int(input("Num : "))
^
SyntaxError: invalid character in identifier
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.