我在 MATLAB 中创建了一个类:
classdef Compiler
%UNTITLED2 Summary of this class goes here
% Detailed explanation goes here
properties(Access = public)
in='' %a line of string of MATLAB code
out={} %several lines of string(cell array) of Babbage Code
end
methods(Access = private)
%compile(compiler);
expression(compiler);
term(compiler);
end
methods(Access = public)
function compiler = Compiler(str)
compiler.in = str;
expression(compiler);
compiler.out
end
end
我的表达功能为:
function expression(compiler)
%Compile(Parse and Generate Babbage code)one line of MATLAB code
term(compiler);
end
term
功能为:
function term(compiler)
% Read Number/Variable terms
num = regexp(compiler.in, '[0-9]+','match');
len = length(compiler.out);
compiler.out(len+1,:) = {['Number ' num{1} ' in V0 in Store']};
compiler.out(len+2,:) = {['Number ' num{2} ' in V1 in Store']};
end
当我尝试运行Compiler('3+1')
时,输出为空。我尝试一步一步调试它,我发现当term
函数完成并跳回表达式函数时,compiler.out
从2 x 1
单元格数组变为空。
我对此感到困惑。我已经实现了与此类似的其他类,并且它们的所有属性都可以通过我的类的私有函数进行更改。