Newer
Older
%% check_matlab_syntax
% this function will check that a string is valid matlab syntax
% for the context that it is in. we need to build up the
% expression which involves initiallizeing the input variables to
% a dummy value and wraping an if statement around conditionals
% inputs:
% object:GUI - current GUI object
% string:string - string to be checked
% result:boolean - false if the string is a conditoin true if
% the string is an output statement
% outputs:
% error:string - string containing the error message, empty if
% there is no error
% Author: Colin Eles elesc@mcmaster.ca
% Organization: McMaster Centre for Software Certification
function error = check_matlab_syntax_condition(object,string,result)
% split the list of inputs to get inputs seperatly
%TODO FIX THIS!
error = [];
return ;
parsed_input = EMLGenerator.parse_inputs(get(object.function_inputs_control,'string'));
check_string = [];
% initialize inputs to zero
% functions are assumed to be total, so 0 is just for
% convienence
for i=1:size(parsed_input,2)
% set to zero
check_string = [check_string sprintf('%s=0;\n',char(parsed_input{i}(1)))];
end
if ~result
% the string is a condition we need to evaulate it as it
% will be used in the code, as in order for an if statement
% to be valid the condition must evaulate to a numeric
% value not a structure or something else. we need to have
% the 1 in there as a dummy output, which is necesary for
% an if statement to be valid in matlab.
check_string = [check_string 'if (' string sprintf(')\n1;\nend')];
else
% the string is an output statement we can just evaulate the
% string on its own.
check_string = [check_string string ';' sprintf('\n')];
end
% attempt to evaluate the string catch the error.
try
eval(check_string);
error = [];
catch exception
error = exception.message;
% attempt to make one of the common errors slightly less
% cryptic.
if(strcmp(exception.identifier,'MATLAB:m_invalid_lhs_of_assignment'))
error = [error sprintf('\nTo check equality use ==')];
end
end
end