-
-
Save epicsagas/0a84bbc7cd9f825d156e96302c05343b to your computer and use it in GitHub Desktop.
Python to Pseudocode converter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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