X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=generation.py;h=99fd681f459c02687bcf873d8de0c9379da2e401;hp=bc2e2c1b104e2b4e012deb7d8f0eb90b9bd81a7d;hb=02d64def49065ad614fe0ee2a85060666552192e;hpb=151f60b119247efb1bcf05a664f4324b71fac782 diff --git a/generation.py b/generation.py index bc2e2c1..99fd681 100644 --- a/generation.py +++ b/generation.py @@ -168,6 +168,16 @@ def generate_function_definition(definition): ) return definition +C_ESCAPES = { + '"': r'\"', +} + +def escape_character(ch): + return C_ESCAPES.get(ch, ch) + +def escape_string_literal(string_literal): + return ''.join(escape_character(ch) for ch in string_literal) + def generate(program): template = ENV.get_template('program.c') return template.render( @@ -176,7 +186,7 @@ def generate(program): infix_declarations=program.operator_declarations, statements=list(generate_statement(s) for s in program.statements), standard_libraries=list(sorted(program.standard_libraries)), - string_literal_list=program.string_literal_list, + string_literal_list=list(escape_string_literal(s) for s in program.string_literal_list), symbol_list=program.symbol_list, )