gpt4 book ai didi

matlab - 如何判断 Matlab 代码在语法上是否有效?

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:41 24 4
gpt4 key购买 nike

我正在为 Matlab 开发一个解析器,使用来自 Matlab Central File Exchange 的一大堆代码作为测试数据。在筛选其中一些代码时,我发现我合法下载的一些代码不应该解析(即 Matlab 本身不会接受它)。

是否有一种简单的方法来检查 m 文件(函数或脚本)是否包含语法错误——也许是某些库函数?我不想运行代码,只是看看它是否应该解析。

最佳答案

如果您愿意使用未记录的函数,请考虑以下事项:

function isValid = checkValidMFile(file_name)
% make sure file can be found
fname = which(file_name);
assert(~isempty(fname) && exist(fname,'file')~=0, 'file not found');

% parse M-file and validate
t = mtree(fname, '-file');
if count(t) == 0 || (count(t)==1 && iskind(t,'ERR'))
isValid = false;
else
isValid = true;
end
end

(您也可以向它传递一串 MATLAB 语言代码,而不是保存的文件名)。

当然 mtree 会提供更多信息,它实际上可以返回解析树,以及任何警告或错误。我以前用它来 differentiate between scripts vs. functions , 和 strip all comments来自 M 文件。

不幸的是,它没有得到官方支持,所以你必须浏览它的源代码来弄清楚它的含义(谢天谢地,它有很好的注释)。该函数使用内部 mtreemex MEX 函数。


其他(未记录的)方式:

builtin('_mcheck', 'some_file.m')

checkSyntacticWarnings('./path/to/folder/')

关于matlab - 如何判断 Matlab 代码在语法上是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669286/

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