compiler for custom python based language designed to reduce the amount of typing required to code:
Code:
Code:
src=input('code: ')
code=''
def pseudo_to_real(pseudo, controls):
lines = pseudo.split('\n')
real_code = []
indent_level = 0
for line in lines:
stripped = line.strip()
if any(stripped.startswith(control) for control in controls):
real_code.append(' ' * indent_level + stripped + ':')
indent_level += 4
elif stripped == 'end':
indent_level -= 4
else:
real_code.append(' ' * indent_level + stripped)
return '\n'.join(real_code)
controls=['while','if','for','def','class','else','elif']
def replace_for_loop(pseudo):
lines = pseudo.split('\n')
updated_code = []
for line in lines:
stripped = line.strip()
if stripped.startswith('for('):
has_colon = stripped.endswith(':')
if has_colon:
stripped = stripped[:-1] # Remove the trailing colon
content = stripped[4:] # Remove 'for('
components = content.split(',')
if len(components) == 4:
var, upr, lwr, step = map(str.strip, components)
stripped = f"for {var} in range({lwr}, {upr}, {step})"
elif len(components) == 3:
var, upr, lwr = map(str.strip, components)
stripped = f"for {var} in range({lwr}, {upr})"
elif len(components) == 2:
var, upr = map(str.strip, components)
stripped = f"for {var} in range(0, {upr})"
if has_colon:
stripped += ':'
line = line.replace(line.strip(), stripped)
updated_code.append(line)
return '\n'.join(updated_code)
src=src.replace(':',chr(10))
pseudo = src
src = pseudo_to_real(pseudo, controls)
src = replace_for_loop(src)
src=src.replace('`',':')
print(src)