py-to-js

Interpréteur de script python simple dans JS


salut! En général, j'ai 14 ans, j'ai pris en compte toutes les oublis passés et donc réessaye. L'interprète est écrit en Python ╕


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


Ce sur quoi je travaille:

1. py-to-js
2. ryno
3. Éditeur de code

Pour commencer, je dirai immédiatement qu'il s'agit d'un code incomplet avec un nom de variable stupide, des bugs, etc. Maintenant, allons-y, créons un fichier interp.pyou quelque chose d'autre et écrivez ceci ici:

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

Pour l'instant, juste pour le test, nous allons écrire un fichier statique dans le champ ouvert. Pour ceux qui ne comprennent pas ce qui est écrit ici, je peux l'expliquer dans les commentaires. Soit dit en passant, à la fin, j'ai écrit ce qui, selon moi, devrait être réparé au premier tour, puis seulement terminer la création de variables, etc. Si ce code peut tenir dans un plus petit nombre de lignes, écrivez dans les commentaires. Créez un testpy.pyscript et mettez-le dedans:

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

Nous lançons nos sous-py-à-js et obtenons ce résultat:

"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