py-рдЯреВ-js

рдЬреЗрдПрд╕ рдореЗрдВ рд╕рд░рд▓ рдЕрдЬрдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреБрднрд╛рд╖рд┐рдпрд╛


рдирдорд╕реНрдХрд╛рд░! рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ 14 рд╕рд╛рд▓ рдХрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕рднреА рдУрд╡рд░рд╕рд╛рдЗрдЯреНрд╕ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред рд╡реНрдпрд╛рдЦреНрдпрд╛рдХрд╛рд░ рдкрд╛рдпрдерди written рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ


рдЧрд┐рддреБрдм - github.com/hoopengo/py-to-js


рдореИрдВ рдХрд┐рд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

1. py-to-js
2. ryno
3. рдХреЛрдб рд╕рдВрдкрд╛рджрдХ

рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рддреБрд░рдВрдд рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдбрдВрдм рд╡реИрд░рд┐рдПрдмрд▓ рдирд╛рдо, рдмрдЧ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЕрдзреВрд░рд╛ рдХреЛрдб рд╣реИред рдЕрдм рдЪрд▓рддреЗ рд╣реИрдВ, рдПрдХ рдлрд╛рдЗрд▓ interp.pyрдпрд╛ рдХреБрдЫ рдФрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

pyfile = open('testpy.py', 'r', encoding = 'UTF-8')
count = -1
with open('open.js', 'w', encoding = 'UTF-8') as f:
	py = pyfile.readlines()
	cc, c, tab, local = 1, 0, 0, 0
	variables = []
	f.write('"use strict";' + '\n' * 2)
	f.write('''// Thanks for using py-to-js
// I develop this with hearth''' + '\n' * 2)
	for num in py:
		count += 1
		tab = py[count].count('\t')
		# basic concepts
		if '=' in num and not 'print' in num and not '==' in num and not '!=' in num:
			name = num.replace('\n', '')
			let = 'let '
			if name.startswith('\t'):
				let = '\tlet '
				name = name.replace('\t', '')
			if name in variables:
				let = ''
			variables.append(name)
			f.write( let + f"{name}" + ';' + '\n' * 2)
		elif 'if' in num:
			condition = num.replace('\n', '').replace('if', '').replace(':', '')
			if_ = 'if '
			if condition.startswith('\t'):
				condition = condition.replace('\t', '')
				if_ = '\tif '
				cc += 1
			else:
				cc = 1
			f.write( if_ + '(' + f'{condition}' + ' )' + ' {' + '\n')
		elif 'def' in num:
			con = num.replace('\n', '').replace('def', '').replace(':', '')
			def_ = 'function'
			if con.startswith('\t'):
				con = condition.replace('\t', '')
				def_ = '\tfunction'
				cc += 1
			else:
				cc = 1
			f.write( def_  + f'{con}' + ' {' + '\n')
		# basic commands
		elif 'print' in num:
			command = num.replace('\n', '')
			if command.startswith('\t'):
				command = command.replace('\t', '')
			f.write('\t' + f'{ command.replace("print", "console.log")}'+ ';' + '\n')
		try:
			if py[count + 1].count('\t') < tab and py[count + 1] != '\n':
				if local == 0:
					f.write('}' + '\n')
					c += 1
				elif local > 0:
					f.write('}' * local + '\n')
					c += 1 * local
					local = 0
			elif py[count + 1].count('\t') >= tab and py[count + 1].count('\t') != 0 and py[count + 1] != '\n':
				if 'def' in py[count + 1] or 'if' in py[count + 1]:
					local += 1
		except:
			pass
		try:
			if '\t' in py[count] and not '\t' in py[count + 1] and py[count + 1] != '\n':
				f.write('}' * (cc - c) + '\n' * 2)
				c = 0
		except:
			f.write('}' * (cc - c))
			c = 0
print('''Programm has been compiled..
1.def tests
2.add class''')

рдЕрднреА рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЦреБрд▓реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВрдЧреЗред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рд╡реИрд╕реЗ, рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░реА рдореЗрдВ рдорд░рдореНрдордд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЪрд░, рдЖрджрд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред рдпрджрд┐ рдпрд╣ рдХреЛрдб рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред рдПрдХ testpy.pyрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕рдореЗрдВ рдбрд╛рд▓реЗрдВ:

i = 0
b = 0
c = 0
if i == 0:
	print('i = 0')
	if b == 0:
		print('b = 0')
		if c == 0:
			print('c = 0')
	if b != 0:
		print('b != 0')
		if c != 0:
			print('c != 0')

рд╣рдо рдЕрдкрдиреЗ рдЕрдВрдбрд░-рдкреА-рдЯреВ-рдЬреЗрдПрд╕ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

"use strict";

// Thanks for using py-to-js
// I develop this with hearth

let i = 0;

let b = 0;

let c = 0;

if (i == 0) {
    console.log('i = 0');
    if (b == 0) {
        console.log('b = 0');
        if (c == 0) {
            console.log('c = 0');
        }
    }
    if (b != 0) {
        console.log('b != 0');
        if (c != 0) {
            console.log('c != 0');
        }
    }
}

All Articles