py-to-js

Penerjemah skrip python sederhana dalam JS


Halo! Secara umum, saya berusia 14 tahun, saya memperhitungkan semua kekeliruan masa lalu dan karenanya mencoba lagi. Penerjemah ditulis dalam Python ╕


Github - github.com/hoopengo/py-to-js


Apa yang saya kerjakan:

1. py-to-js
2. ryno
3. Editor kode

Untuk memulainya, saya akan segera mengatakan bahwa ini adalah kode yang tidak lengkap dengan nama variabel yang bodoh, bug, dan sebagainya. Sekarang mari kita pergi, buat file interp.pyatau sesuatu yang lain dan tulis ini di sana:

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''')

Untuk saat ini, hanya untuk pengujian, kami akan menulis file statis di bidang terbuka. Bagi yang tidak mengerti apa yang tertulis di sini, saya bisa jelaskan di komentar. Ngomong-ngomong, pada akhirnya saya menulis apa yang menurut saya harus diperbaiki pada giliran pertama, dan baru setelah itu menyelesaikan pembuatan variabel, dll. Jika kode ini dapat ditampung dalam jumlah baris yang lebih sedikit, tulis di komentar. Buat testpy.pyskrip dan masukkan ini ke dalamnya:

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')

Kami meluncurkan under-py-to-js kami dan mendapatkan hasil ini:

"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