我用ml-ulex和ml-antlr写了一个词法分析器和解析器。 (运行sml / nj) 我的词法分析器中有以下规则:
<TRUSTED> [\"] => ( YYBEGIN INQUOTE ; Tokens.ValidText yytext );
它已被正确识别,但是yytext还有几个额外的&#39; \&#39;字符串中的(反斜杠)。我得到了\\\\\\\#34;而不是\&#34;。
为了让事情变得更加困惑,我用这句话取代了我的词法分析器中的规则:
<TRUSTED> [\"] => ( YYBEGIN INQUOTE ; Tokens.DBLQUOTE );
在我的语法中,我有了令牌 prod:DBLQUOTE =&gt; (&#34; \&#34;&#34;);
与之前的结果相同.... 如果我用
替换规则prod: DBLQUOTE => ( "*test*" );
然后我得到一个 test 作为我的字符串。
我已尝试在结果字符串上使用String.fromString,但它并没有做到这一点。我不确定发生了什么或为什么。