【问题标题】:toString and Backslash in MLML 中的 toString 和反斜杠
【发布时间】:2014-04-30 11:41:48
【问题描述】:

假设我想在我的元语言中表示一个字符串,所以我有一个类似“String”的字符串,下面的代码将为我执行以下操作

我有

repl>“字符串”

将输出:

\"字符串\"

我知道问题与 toString 有关,从我读过的内容来看,它会将双引号转换为一系列反斜杠,我的问题是我可以使用一个函数,这样我就可以正常输出字符串。

【问题讨论】:

    标签: types functional-programming ocaml ml


    【解决方案1】:

    你可以试试这个:

    | expression2string(String(X)) = X
    

    【讨论】:

    • 哇,我觉得自己很笨。不过谢谢!
    【解决方案2】:

    我不知道您的解析器做了什么,但通常我希望它不会在字符串值中包含引号字符,即String(x) 中的x 应该只包含字符串的实际内容。然后你只需定义

    | expression2string(String s) = "\"" ^ String.toString s ^ "\""
    

    这会正确转义字符串内容(例如换行符或内引号),但不会转义周围的引号,这是语言语法,而不是内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2012-02-10
      • 2021-05-20
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      相关资源
      最近更新 更多