假设我想在我的Metalanguage中表示一个字符串,所以我有一个像“String”这样的字符串,以下代码将为我做以下代码
我有
REPL> “中的字符串”
将输出:
\ “字符串\”
我知道问题与toString有关,从我读过的它将双引号转换为反斜杠系列,我的问题是我可以有一个函数,所以我可以正常输出字符串。
答案 0 :(得分:1)
你可以试试这个:
| expression2string(String(X)) = X
答案 1 :(得分:1)
我不知道你的解析器做了什么,但通常我希望它不会在字符串值中包含引号字符,即x
中的String(x)
应该只包含字符串的实际内容。然后你只需要定义
| expression2string(String s) = "\"" ^ String.toString s ^ "\""
这会正确地转义字符串内容(例如换行符或内部引号),而不是周围的引号,它们是语言语法,而不是内容。