TLC解释目标语言,这是一般的编程语言,您可以使用它。但是,要记住TLC是一个目的设计的:转换A
文件到生成的代码。因此,目标语言提供了许多对此任务有用的功能,但不提供其他语言如C和C ++提供的一些功能。模型
.rtw
您可能会发现以下一些有用的常规编程示例可让您熟悉TLC中使用的基本构造。
典型的“Hello World”的例子是在目标语言相当简单。在一档名为键入以下hello.tlc.
:
%选择文件STDOUT你好,世界
运行此TLC程序,键入
TLC hello.tlc
在MATLAB®迅速的。
这个简单的脚本说明了TLC的目的(并因此设计)的一些重要概念。由于TLC的主要目的是生成代码,因此输出(或流)取向。它可以轻松处理文本缓冲区并轻松输出。在上面的剧本中,%选择文件
指令告诉TLC发送它生成的任何以下文本或无法识别到标准输出设备。TLC识别的语法识别开始于%
特点。因为你好世界
无法识别,它是直接发送到输出。你可以很容易地改变输出目的地是一个文件。不要打开stdout.
流,而是选择写命令窗口。
%OPENFILE富= “foo.txt的” %OPENFILE栏= “跳回到bar.txt” %选择文件FOO这条线是在FOO。%选择文件STDOUT线已输出到foo中。%选择文件酒吧这条线是在巴。%选择文件NULL_FILE这条线将不会出现在任何地方。%选择文件STDOUT即将关闭酒吧。%closefile酒吧%closefile FOO
您可以缓冲区之间切换显示状态信息。这三个指令的语义%打开文件
那%选择文件
, 和%closefile.
给出了目标语言编译器指令。
缺少变量的显式类型声明是TLC的另一个功能。看目标语言编译器有关可变的内隐数据类型的更多信息。
与生成代码最相关的构建体之一
文件是一个记录。一种记录是类似于C的结构或在帕斯卡的记录。记录声明的语法模型
.rtw
%createrecord recvar {... field1 value1 ... field2 valuge2 ... ... ... fieldn valuen ...}
在哪里recvar.
被记录的名字被宣布,田野
是一个字符串,和valuei
是相应的TLC值。
记录可以在其中包含嵌套记录或子字母。这
文件本质上是一个大的记录,命名模型
.rtwcompledmodel.
,含有级别的次规集。
与MATLAB不同,TLC要求您显式加载不在同一目标文件中的函数定义。在matlab,这条线a = myfunc(b)
导致MATLAB自动搜索并加载名为MATLAB文件或MEX文件myfunc.
。TLC要求您专门包含使用该文件的文件使用%AddincludePath.
指示。
TLC提供%和
使用记录有助于的指令。看目标语言编译器指令。
笔记
格式和结构的
文件可能会从代码生成器的一个版本到另一个版本的更改。模型
.rtw
从文件中读取的记录是可变的,如在程序中声明的其他记录。记录compledmodel.
代码生成过程中被修改许多次。compledmodel.
是全球记录
文件。它包含用于代码生成的变量,如模型
.rtwnumnonvirtsubsystems.
那NumBlocks
。它也在代码生成中附加,其中包含许多新的变量,选项和子字母。
如功能LibGetFormattedBlockPath
在TLC库中提供
(打开)。有关可用功能的完整列表,请参阅TLC函数库参考上目标语言编译器。matlabroot.
/rtw/c/tlc/lib/*.tlc.
要为记录字段分配值,必须使用a合格的可变表达式。一个合格的可变表达的引用是以下列形式之一的变量:
标识符
一个合格的变量,然后是“。
”后面的标识符,如
变种[2] .B
一个合格的变量,后面是一个括号的表达式,如
var [expr]
在TLC中,可以创建所谓的别名至创纪录的。别名类似于指针到C.您可以创建多个别名到一个记录结构。修改的别名记录,是每个拥有一个别名地方可见。
下面的代码段示出了使用别名:
%createrecord FOO {字段1}%createrecord一个{}%createrecord B {}%createrecord 13 C {}%addtorecord一个Foo FOO%addtorecord b FOO FOO%addtorecordÇFOO {字段1} %%通知我们不通过改变场或b。%分配foo.field = 2 ISALIAS(a.foo)=%ISALIAS(b.foo)=% ISALIAS(c.foo)=% a.foo.field =% b.foo.field =% c.foo.field =% %%音符这c.foo.field不变
将此脚本保存为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
在函数内时,可以创建一个别名到函数内的本地创建的记录。如果别名从函数返回,即使在退出函数后,它仍然有效,如下例所示:
%函数func(value)输出%createrecord foo {field值}%createrecord a {foo foo} isalias(a.foo)=%%return a.foo%端函数%aquary x = func(2)Isalias(x)=% x =% x.field =%
将此脚本保存为alias_func.tlc.
与调用它
tlc -v alias_func.tlc.
产生输出
Isalias(a.foo)= 1个Isalias(x)= 1 x = {字段2} x.field = 2
只要有过一个别名一些参考的记录,该记录不会被删除。这样的记录将被用作从函数的返回值。