首页 > 解决方案 > MATLAB如何确定表达式的有效性/检查括号是否平衡?

问题描述

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

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

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

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

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

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

标签: matlabvalidation

解决方案


MATLAB 基本上checkcode是即时运行的,在您键入时会产生那些红色的摆动,并且当您尝试运行带有不平衡括号和/或方/花括号的代码时确实会产生这些错误。checkcode()只需edit 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,因为其余部分大多是封闭源代码。


推荐阅读