我目前正在为我的玩具语言编写解析器,并作为解析器的一部分,我已经写好打印函数,以及...基本上打印它的论点。对于字符串常量,它是所有打印字符串(字符*)从文件加载没有逃脱特殊序列(如 n)
printf("%s", pointer);
所以
print("\n")
应
printf("%s", ptr_to_loaded_string);
执行(或多或少)
但是,我现在的问题是, C读取脚本文件时会转义特殊字符序列。因此,而不是“\ n”我得到“\\ n”。
我的问题是:有没有什么办法可以避免这个序列的转义,如果不是,处理它们的最好方法是什么?我目前正在考虑搜索和替换 - 用'\'替换2'\'的每个序列,但它可能有点问题(字符串长度变化,重新分配等) - 我想避免这种解决方案,除非它是绝对有必要。
编辑:哎呀,计算器逃过我的例子....
是否该脚本文件包含换行符,或字符''\''后面跟着一个字符'N'? –
当前脚本文件只包含1行:'print(“test \ n”)'并且导致打印'test \ n' – stollgrin
正确,因为转义序列仅在_literal_字符串中被替换,即在你的C源代码中。 –