Skip to content

Instantly share code, notes, and snippets.

@epicsagas
Forked from BlueNexus/python2pseudo.py
Created February 8, 2022 12:04
Show Gist options
  • Save epicsagas/0a84bbc7cd9f825d156e96302c05343b to your computer and use it in GitHub Desktop.
Save epicsagas/0a84bbc7cd9f825d156e96302c05343b to your computer and use it in GitHub Desktop.
Python to Pseudocode converter
import re
'''
Make sure to put
#F
as a comment at the end of lines that contain a function call that don't also contain an assignment (=).
'''
python_file = 'file.py'
work_file = None
basic_conversion_rules = {"for": "FOR", "=": "TO", "if": "IF", "==": "EQUALS", "while": "WHILE", "until": "UNTIL", "import": "IMPORT", "class": "DEFINE CLASS", "def": "DEFINE FUNCTION", "else:": "ELSE:", "elif": "ELSEIF", "except:": "EXCEPT:", "try:": "TRY:", "pass": "PASS", "in": "IN"}
prefix_conversion_rules = {"=": "SET ", "#F": "CALL "}
advanced_conversion_rules = {"print": "OUTPUT", "return": "RETURN", "input": "INPUT"}
def f2list(to_list):
return to_list.readlines()
def l2pseudo(to_pseudo):
for line in to_pseudo:
line_index = to_pseudo.index(line)
line = str(line)
line = re.split(r'(\s+)', line)
for key, value in prefix_conversion_rules.items():
if key in line:
if not str(line[0]) == '':
line[0] = value + line[0]
else:
line[2] = value + line[2]
for key, value in basic_conversion_rules.items():
for word in line:
if key == str(word):
line[line.index(word)] = value
for key, value in advanced_conversion_rules.items():
for word in line:
line[line.index(word)] = word.replace(key, value)
for key, value in prefix_conversion_rules.items():
for word in line:
if word == key:
del line[line.index(word)]
to_pseudo[line_index]= "".join(line)
return(to_pseudo)
def p2file(to_file):
file = open(python_file + '_pseudo.txt', 'w')
for line in to_file:
print(line, file=file)
def main():
main_file = open(python_file, 'r+')
work_file = f2list(main_file)
work_file = l2pseudo(work_file)
p2file(work_file)
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment