概述
以下程序用于规范Matlab代码,仅为备用。
原作者:打浦桥程序员
function formatMcode
try %#ok
document = matlab.desktop.editor.getActive;
position = document.Selection;
document.Text = format(document.Text);
document.goToPositionInLine(position(1), position(2)) % 还原光标位置
document.smartIndentContents();
end
function code = format(code)
code = regexprep(code, {'(S)[ fvt]+n', '([^n])$'}, '$1n');
tree = mtree(code, '-comments');
assert(isempty(tree.mtfind('Kind', 'ERR')))
% a(:) 不替换为 a( : )
colons = tree.mtfind('Kind', 'COLON');
colonPos = colons.position();
colonPos = colonPos(colons.lefttreepos == colons.righttreepos);
% 字符串、注释、数值中的符号以及一元操作符不处理
exc = tree.mtfind('Kind', 'CHARVECTOR') | tree.mtfind('Kind', 'STRING') | ...
tree.mtfind('Kind', 'DOUBLE') | tree.mtfind('Kind', 'COMMENT') | ...
tree.mtfind('Kind', 'UPLUS') | tree.mtfind('Kind', 'UMINUS');
excPos = [colonPos' ...
cell2mat(arrayfun(@colon, exc.lefttreepos, exc.righttreepos, 'un', 0)')];
[ops, code, start] = regexp(string(code), ...
'(.(^|*|/|\)|<=|>=|==|~=|&&||||+|-|*|\|/|^|||&|<|>|=|,|;|:)', ...
'match', 'split', 'start');
idx = ~ismember(start, excPos);
code(idx) = regexprep(code(idx), '[ frtv]+$', '');
code([false idx]) = regexprep(code([false idx]), '^[ frtv]+', '');
ops(idx) = ops(idx) + " ";
idx = idx & ~ops.startsWith(["," ";"]);
ops(idx) = " " + ops(idx);
code = char(strjoin([code; ops ""], ''));
最后
以上就是成就荷花为你收集整理的规范Matlab代码的全部内容,希望文章能够帮你解决规范Matlab代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复