以下语句正确编译:
procedure test ;
var xx : string;
begin
xx := 'a' + '}' + 'b';
end;
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用块注释进行注释,则编译器会错误地将文本中的右括号视为注释的结尾.
procedure test ;
var xx : string;
begin
{ xx := 'a' + '}' + 'b'; }
end;
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
当您打开注释时,解析器只会忽略后面的文本,直到找到相应的注释终止.
//终止的情况下是行的结束.(*终止的情况下是下一个实例*).{终止的情况下是下一个实例}.由于编译器不解析注释掉的文本,因此它发生在您}的字符串内并确定注释已终止.
你说:
编译器错误地将文本中的右括号视为注释的结尾.
在我强调的文本中可以看到本声明中的错误思考.评论开始后,解析器不关心语法,引用或任何事情.它只是读取源,直到它找到注释终止.它不关注评论终止符存在的上下文.
因此,这不是编译器错误.正如设计的那样,编译器的行为正确.
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |