123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- function model = mttFetchApps(filename)
- if ~mttFileExists(filename)
- model = [] ;
- return ;
- end
- model.representation = 'apps' ;
- mttNotify(['...processing ',filename]) ;
- mttWriteNewLine ;
- model.source = mttCutText(filename,'_apps.txt') ;
- model_name = mttDetachText(model.source,'/') ;
- content = mttReadFile(filename) ;
- statements = mttExtractStatements(content) ;
- number_of_statements = length(statements) ;
- apps_declared = 0 ;
- next = 0 ;
- parsing = 1 ;
- while parsing
- next = next + 1 ;
- statement = statements{next} ;
- [keyword,line] = mttSeparateText(statement) ;
-
- switch keyword
- case 'apps',
- mttAssert(~apps_declared,...
- '"apps" declaration must be unique') ;
- apps_declared = 1 ;
-
- apps_name = line ;
- mttAssert(strcmp(apps_name,model_name),...
- ['Wrong name:[',apps_name,'] Expecting:[',model_name,']']) ;
-
- [apps,next] = fetch_apps(statements,next) ;
- model = mttAppendFields(model,apps) ;
-
- case '{',
- error('Unexpected "{" found') ;
- case '}',
- error('Unexpected "}" found') ;
- otherwise,
- error(['Unrecognised top-level keyword "',keyword,'"']) ;
- end
-
- if next==number_of_statements
- parsing = 0 ;
- end
- end
- function [apps,next] = fetch_apps(statements,next)
- apps = [] ;
- unit_name = 'apps' ;
-
- number_of_statements = length(statements) ;
-
- open = 0 ;
- counter = 0 ;
-
- parsing = 1 ;
- while parsing
- next = next + 1 ;
- statement = statements{next} ;
- [keyword,line] = mttSeparateText(statement) ;
-
- switch keyword
- case 'app',
- mttAssert(open,...
- ['"app" declarations must be contained inside {...} in "',unit_name,'"']) ;
-
- app_name = line ;
-
- counter = counter + 1 ;
- apps.app{counter} = app_name ;
-
- case '{',
- mttAssert(~open,['Unmatched "{" in "',unit_name,'"']) ;
- open = 1 ;
- case '}',
- mttAssert(open,['Unmatched "}" in "',unit_name,'"']) ;
- open = 0 ;
- otherwise,
- error(['Unrecognised_keyword "',keyword,'" in "',unit_name,'"']) ;
- end
-
- mttAssert(~(open & (next==number_of_statements)),...
- ['Missing "}" in "',unit_name,'"']) ;
-
- if (~open) | (next==number_of_statements)
- parsing = 0 ;
- end
- end
-
- apps = mttSetFieldDefault(apps,'app',[]) ;
-
|