TLC интерпретирует выходной язык, который является общим языком программирования, и можно использовать его как таковой. Важно, однако, помнить, что TLC был спроектирован для одной цели: преобразовывать файл к сгенерированному коду. Таким образом выходной язык обеспечивает много функций, которые полезны для этой задачи, но не обеспечивает некоторые функции, которые обеспечивают другие языки как C и C++.model.rtw
Вы можете найти некоторые следующие общие примеры программирования полезными, чтобы ознакомить себя с основными построениями, используемыми в TLC.
Типичный пример “Hello World” довольно прост на выходном языке. Введите следующее в файле с именем hello.tlc:
%selectfile STDOUT Hello, World
Чтобы запустить эту программу TLC, ввести
tlc hello.tlc
в подсказке MATLAB®.
Этот простой скрипт иллюстрирует некоторые важные концепции, лежащие в основе цели (и следовательно проект) TLC. Поскольку основная цель TLC должна сгенерировать код, это выводится (или поток) ориентированный. Это дает возможность обрабатывать буферы текста и выводить их легко. В вышеупомянутом скрипте, %selectfile директива говорит TLC отправлять любой после текста, который это генерирует или не распознает устройству стандартного вывода. Синтаксис, который распознает TLC, начинается с % символ. Поскольку Hello, World не распознан, это отправляется непосредственно в выход. Вы могли легко изменить выходное место назначения, чтобы быть файлом. Не открывайте STDOUT поток, но выбор, чтобы записать в Командное окно.
%openfile foo = "foo.txt" %openfile bar = "bar.txt" %selectfile foo This line is in foo. %selectfile STDOUT Line has been output to foo. %selectfile bar This line is in bar. %selectfile NULL_FILE This line will not show up anywhere. %selectfile STDOUT About to close bar. %closefile bar %closefile foo
Можно переключиться между буферами на сообщения состояния дисплея. Семантика этих трех директив %openfileВыбор File, и %closefile даны в Директивах компилятора Выходного языка.
Отсутствие явных описаний типа для переменных является другой функцией TLC. См. Компилятор Выходного языка для получения дополнительной информации о неявных типах данных переменных.
Одно из построений, наиболее относящихся к генерации кода от файл является записью. record похож на структуру в C или запись в Паскале. Синтаксис объявления записиmodel.rtw
%createrecord recVar { ...
field1 value1 ...
field2 value2 ...
...
fieldN valueN ...
}где recVar имя объявляемой записи, fieldi строка и valuei соответствующее значение TLC.
Записи могли вложить записи или подзаписи, в них. файлом является по существу один большой именованный model.rtwCompiledModel записи, содержа уровни подзаписей.
В отличие от MATLAB, TLC требует что вы явным образом определения функции load, не расположенные в том же конечном файле. В MATLAB, линия A = myfunc(B) причины MATLAB, чтобы автоматически искать и загрузить файл MATLAB или названный файл MEX myfunc. TLC требует, чтобы вы в частности включали файл, который задает функцию с помощью %addincludepath директива.
TLC обеспечивает %with директива, которая упрощает записи использования. См. Директивы компилятора Выходного языка.
Примечание
Формат и структура файл подвержен изменениям от одного релиза генератора кода другому.model.rtw
Чтение записи в из файла изменяемо, как другие записи, которые вы объявляете в программе. CompiledModel записи изменяется много раз во время генерации кода. CompiledModel глобальная запись в файл. Это содержит переменные, используемые для генерации кода, такие как model.rtwNumNonvirtSubsystems, NumBlocks. Это также добавлено во время генерации кода со многими новыми переменными, опциями и подзаписями.
Функционирует такой как LibGetFormattedBlockPath обеспечиваются в библиотеках TLC, расположенных в открытый. Для полного списка доступных функций обратитесь к Справочному руководству по библиотеке Функции TLC на Компиляторе Выходного языка.matlabroot/rtw/c/tlc/lib / *.tlc
Чтобы присвоить значение полю записи, необходимо использовать qualified variable expression. Квалифицированное переменное выражение ссылается на переменную в одной из следующих форм:
Идентификатор
Квалифицированная переменная сопровождается “.” сопровождаемый идентификатором, такой как
var[2].b
Квалифицированная переменная, сопровождаемая выражением в скобках такой как
var[expr]
В TLC возможно создать то, что называется alias к записи. Псевдонимы похожи на указатели на структуры в C. Можно создать несколько псевдонимов к одной записи. Модификации к искаженной записи отображаются к каждому месту, которое содержит псевдоним.
Следующий фрагмент кода иллюстрирует использование псевдонимов:
%createrecord foo { field 1 }
%createrecord a { }
%createrecord b { }
%createrecord c { }
%addtorecord a foo foo
%addtorecord b foo foo
%addtorecord c foo { field 1 }
%% notice we are not changing field through a or b.
%assign foo.field = 2
ISALIAS(a.foo) = %<ISALIAS(a.foo)>
ISALIAS(b.foo) = %<ISALIAS(b.foo)>
ISALIAS(c.foo) = %<ISALIAS(c.foo)>
a.foo.field = %<a.foo.field>
b.foo.field = %<b.foo.field>
c.foo.field = %<c.foo.field>
%% note that c.foo.field is unchangedСохранение этого скрипта как record_alias.tlc и вызов его с
tlc -v record_alias.tlc
производит выход
ISALIAS(a.foo) = 1 ISALIAS(b.foo) = 1 ISALIAS(c.foo) = 0 a.foo.field = 2 b.foo.field = 2 c.foo.field = 1
Когда в функции, возможно создать псевдоним к локально созданной записи, которая является в функции. Если псевдоним возвращен в функцию, это остается допустимым даже после выхода из функции, как в следующем примере:
%function func(value) Output
%createrecord foo { field value }
%createrecord a { foo foo }
ISALIAS(a.foo) = %<ISALIAS(a.foo)>
%return a.foo
%endfunction
%assign x = func(2)
ISALIAS(x) = %<ISALIAS(x)>
x = %<x>
x.field = %<x.field>Сохранение этого скрипта как alias_func.tlc и вызов его с
tlc -v alias_func.tlc
производит выход
ISALIAS(a.foo) = 1
ISALIAS(x) = 1
x = { field 2 }
x.field = 2Пока существует некоторая ссылка на запись через псевдоним, та запись не удалена. Это позволяет записям использоваться в качестве возвращаемых значений от функций.