Compiler/AST interpreter: Difference between revisions

m
Fix embedded // in string handling
m (Fix embedded // in string handling)
m (Fix embedded // in string handling)
Line 560:
 
elif x.node_type == nd_Prts:
print(interp(x.left).replace("\\n", "\n"), end='')
return None
 
Line 569:
else:
error("error in code generator - found %d, expecting operator" % (x.node_type))
 
def str_trans(srce):
dest = ""
i = 0
srce = srce[1:-1]
while i < len(srce):
if srce[i] == '\\' and i + 1 < len(srce):
if srce[i + 1] == 'n':
dest += '\n'
i += 2
elif srce[i + 1] == '\\':
dest += '\\'
i += 2
else:
dest += srce[i]
i += 1
 
return dest
 
def load_ast():
line = input_file.readline()
line_list = shlex.split(line, False, False)
 
text = line_list[0]
Line 586 ⟶ 604:
node_type = all_syms[text]
if value != None:
if node_type == nd_String:
value = str_trans(value)
 
return make_leaf(node_type, value)
left = load_ast()
155

edits