【发布时间】:2014-04-30 11:41:48
【问题描述】:
假设我想在我的元语言中表示一个字符串,所以我有一个类似“String”的字符串,下面的代码将为我执行以下操作
我有
repl>“字符串”
将输出:
\"字符串\"
我知道问题与 toString 有关,从我读过的内容来看,它会将双引号转换为一系列反斜杠,我的问题是我可以使用一个函数,这样我就可以正常输出字符串。
【问题讨论】:
标签: types functional-programming ocaml ml
假设我想在我的元语言中表示一个字符串,所以我有一个类似“String”的字符串,下面的代码将为我执行以下操作
我有
repl>“字符串”
将输出:
\"字符串\"
我知道问题与 toString 有关,从我读过的内容来看,它会将双引号转换为一系列反斜杠,我的问题是我可以使用一个函数,这样我就可以正常输出字符串。
【问题讨论】:
标签: types functional-programming ocaml ml
你可以试试这个:
| expression2string(String(X)) = X
【讨论】:
我不知道您的解析器做了什么,但通常我希望它不会在字符串值中包含引号字符,即String(x) 中的x 应该只包含字符串的实际内容。然后你只需定义
| expression2string(String s) = "\"" ^ String.toString s ^ "\""
这会正确转义字符串内容(例如换行符或内引号),但不会转义周围的引号,这是语言语法,而不是内容。
【讨论】: