MATLAB 如何确定表达式的有效性/检查括号是否平衡?



如果您尝试运行缺少括号的代码(()[]{}),脚本或函数会抛出错误:

错误: 文件: XXX.m 行: 1337 列: 42

无效的表达式。调用函数或为变量编制索引时,请使用括号。否则,请检查分隔符是否不匹配。

它似乎在执行之前执行此操作。我将编辑器设置为"错误时暂停",但与其他错误(例如引用不存在的变量)相反,它不会"跳转到"带有错误的行。

这让我很纳闷。起初我想,MATLAB 可能会计算所有类型的括号,并检查左括号的数量是否与特定类型的闭括号数量一样多。然而,情况似乎并非如此,因为:

  • 该错误标识正确的行和列。如上所述的过程将无法做到这一点 - 因为它在文件级别查看括号,而不是成对。

  • 这将包括字符串中使用的括号,这当然可能是不平衡的。

我的问题:MATLAB 如何检查括号是否平衡,或者更一般地说,MATLAB 如何确定表达式的有效性

MATLAB 基本上是动态运行checkcode,当您键入时会生成那些红色摆动,并且当您尝试运行带有不平衡括号和/或方括号/大括号的代码时,实际上会产生这些错误。只需在命令窗口中键入edit checkcode即可查看checkcode()的功能。我不会在这里粘贴它的代码,因为它可能是专有的,但帮助文件说:

若要强制代码分析器忽略一行代码%#ok,请在 线。此标记后可以跟注释。 例如:

unsuppressed1 = 10   % This line will get caught
suppressed2 = 20     %#ok  These next two lines will not get caught
suppressed3 = 30     %#ok

,因此其代码分析器(原文如此)会进行检查。可能它每行运行一些类似正则表达式的检查。

有关更详细的答案,应直接联系The MathWorks,因为其余的大多是闭源的。

最新更新