gpt4 book ai didi

parsing - 当不可避免的字符被转义时该怎么办?

转载 作者:行者123 更新时间:2023-12-04 06:22:16 26 4
gpt4 key购买 nike

在设计(迷你)语言时:当某些字符应该被转义以失去特殊含义时(如某些编程语言中的引号),当不可转义的字符(例如从不具有特殊含义的普通字符)出现时,应该做什么,尤其是从安全角度来看逃脱?错误应该被“错误”编辑,还是应该丢弃该字符,或者它是否应该像没有转义一样出现在输出中?

例子:在一种简单的语言中,字符串由双引号 (") 分隔,并且给定字符串中的任何引号都用反斜杠 (\) 转义:对于输入"We\said,\"We want Moshiach Now\"" -- 应该如何处理 said 中的字母 s 这是逃脱了?

最佳答案

发生这种情况时,我更喜欢词法分析器提示。词法分析器/解析器应该严格遵守语法;以后总是可以放松的。如果你马虎,你会发现你无法收回你认为不是你做出的决定。

假设您最初决定将“反斜杠 not-an-escape”视为那对字符,并且“T”是今天不是逃脱。一段时间后,您决定扩展该语言,并希望“\T”具有特殊含义,于是您更改了您的语言。

你会发现一群愤怒的程序员冲进了你的设计城堡,因为对他们来说,“\T”意味着“\”“T”(或“T”取决于您的默认决定),而你刚刚破坏了他们的代码。你羞愧地低下头,收回决定,然后意识到...哎呀,没有更多可用的转义字符了!

本类(class)适用于您的语言中未明确定义的任何语法。如果它不是明确合法的,它应该是隐式非法的,你的编译器应该检查它。否则您将永远无法扩展您成功的语言。

如果您的语言不会成功,您可能不会太在意。

关于parsing - 当不可避免的字符被转义时该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5085827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com