安下载(俺下载):打造放心的绿色安全下载站! 安下载首页|软件分类|最近更新

所在位置: 首页  >  电脑软件  >  编程开发  >  编程工具 > aardio(编程语言与开发工具) v28.12.10 中文版
aardio(编程语言与开发工具)

aardio(编程语言与开发工具)

 v28.12.10 中文版
  • 软件大小:10.85 MB
  • 更新日期:2020-06-18 14:35
  • 软件语言:简体中文
  • 软件类别:编程工具
  • 软件授权:免费版
  • 软件官网:
  • 适用平台:WinXP, Win7, Win8, Win10, WinAll
  • 软件厂商:

6
软件评分

本地下载文件大小:10.85 MB

软件介绍 人气软件 下载地址

为您推荐: 编程开发

  aardio是一款非常实用且功能强大的编程开发工具,它是一种非常实用混合语言开发工具,可以为更多的新手用户提供帮助,让用户在学习编程的过程中更加顺手;该版本提供了输入处理方法可以帮助控制函数的工作流程,这些被表示为三个单独的脚本块;Begin:包含在函数开头执行所需的所有代码;流程:包含功能的主要功能;End:包含在函数末尾执行所需的所有代码;支持编写多表单,可以从父表单中对子表单获取数据并显示数据;aardio操作符优先级与C系语言基本兼容,唯一的区别是:位运算符优先级略高于等式、不等式运算符,从而保证各组运算符的优先级更加有序、并容易记忆;需要的用户可以下载体验

aardio(编程语言与开发工具)

软件功能

  支持一键编译发布为标准PE格式的exe文件,生成的的EXE为百分百纯净绿色软件,无需制作安装程序。

  可选直接编译成byte code二进制字节码发布的EXE可独立发布、随处运行、不依赖任何外部程序。

  所有引用文件在发布时可选发布为硬盘文件,也可选发布编译为exe资源并生成独立exe程序。

  无需修改任何代码。一键发布,随处运行。

  完整支持原生静态语言的所有数据类型、自定义类型(struct),以及所有API函数、c/c++代码百分百的可对应转换为AAuto代码。

  文件即被静态链接到exe中,不再需要外部文件。

  支持可视化windows 窗体设计,可视化UI库使用底层WINSDK编写,并全部开源。

软件特色

  首创支持Remote Call API函数,一句代码直接声明位于外部EXE中的函数。

  无需任何复杂技术,在外部运行的EXE进程中任意执行代码,与编写本地代码无任何区别。

  使用$操作符,可将任意的外部代码、文本文件、二进制文件直接包含在代码内部以编译生成EXE以后,

  完美支持标准DLL、同时支持资源DLL、内存DLL、自动识别。智能加载。

  完美支持com编程。

  aardio编程语言是世界上兼容性最强的语法,无论你学过什么编程语言,

  在使用AAuto时都可以使用接近你原来编程风格的语法编写代码。

  aardio编程语言是唯一可以直接与系统底层交互的动态语言,所以也是运行速度最快的动态语言。

安装步骤

  1、用户可以点击本网站提供的下载路径下载得到对应的程序安装包

aardio(编程语言与开发工具)

  2、只需要使用解压功能将压缩包打开,双击主程序即可弹出程序界面

aardio(编程语言与开发工具)

使用说明

  数据类型

  基本数据类型

  基本数据类型 值 说明

  type.null null 空值,所有变量默认初始值为null

  type.boolean true、false 布尔值,表示条件真、假

  type.number 数值 数值

  type.string 字符串 字符串

  type.table 数组、哈希表 集合(collection)

  type.function 函数 函数

  type.pointer 普通指针 指针通常来自API函数.

  指针给你最大的自由,同时也带来最大的风险,如果你不是清楚的了解指针指向内存的分配释放规则,尽可能的避免直接使用此类型。在aardio中指针通常用来保存一个内存地址,或者一个系统对象句柄值。

  动态指针 动态指针并不是一个新的类型 - 而是与普通指针拥有相同的数据类型, raw.realloc()函数可用于分配、释放一个动态指针,并且可以使用raw.realloc()再次调整该指针分配的内存大小,动态指针的地址是可变的,调整大小后指针变量应当更新为返回的新指针。

  动态指针可以作为普通指针使用,但是当你把动态指针传入可以识别此类型指针的raw.realloc() raw.concat() raw.sizeof() 等函数,

  aardio可以获取到一个头信息(用于记录内存大小、存储的数据大小),动态指针会在返回给用户的指针地址前面倒退8个字节记录2个32位字段的内存、数据长度信息,然后总是向后移动8个字节将可用的指针地址返回给用户,

  并且在内存的尾部总是保留2个字节置0用于兼容C风格字符串,这种指针也可以象普通指针一样用于API函数等可以使用指针的地方,可以用raw.sizeof()获取这种指针指向内存的大小,可以使用raw.concat()函数对这种指针的内存追加拼接数据。

  与缓冲区不同的是,如果不指定初始化值,raw.realloc就不会对分配的内存设定初始化值,并且aardio不负责自动释放动态指针分配的内存,显式的调用 raw.realloc(0,动态指针) 才能释放一个动态指针。

  type.buffer 缓冲区指针 使用 raw.buffer() 函数分配的一块可读写内存的指针,缓冲区在aardio中可以像字符串一样作为一个字节数组使用,可以用#操作符取长度,用[]下标操作符取字节值,字符串是常量字节值是只读的,

  但缓冲区的字节值不但可读,也可以写入,缓冲区在很多字符串函数中都可以作为字符串使用,在API函数中可以作为指针使用。

  与动态指针不同的是,即使你不指定初始值,aardio仍然会初始化所有字节的值为0,并且你无法动态调整缓冲区的大小,你不必要也没办法手动释放缓冲区分配的内存,只能由aardio自动回收。

  type.cdata 内核对象 aardio内核对象,例如math.size64()函数创建的长整数对象。

  type.fiber 纤程 协同程序

  type.class 类 类

  null(空值)

  null即变量没有存储任何数据,将一个变量赋值为null等于删除这个变量

  boolean(逻辑布尔值)

  有两个值,true表示真、 false 表示假。通常用在条件表达式中。

  通俗一点说,true表示是、符合条件,false表示不是、不符合条件。

  在条件表达式(恒等式除外)中, null、数值0这认为是false,

  其他有效的数据都被认为是true。

  与C++类似,aardio认为0为false,非零数值为true,在外部api函数中可以保持一致。

  number(数值)

  aardio中的数值为64位双精度浮点数,数值类型可以使用不同的进制来表示,

  使用0x前缀表示十六进制数,例:num = 0xA1 + 0xFF,而使用2#前缀可以表示2进制数,使用8#前缀可以表示8进制数。也可以用科学计算法表示数值 num = 6e+20

  把一个大于10的数写成a * 10n 的形式,其中a称为尾数、n称为指数,是整数数位只有一位的数,这种计数法叫做科学计数法,也叫10的幂计数法。例如 x= -3.5×105 这里最前面有一个负号,3.5是尾数,两个有效数字,后面以10为基数的指数为5。我们可以将它表示为-3.5E5。

  数值的字面值允许加入下划线作为数值分隔符,

  例如 123_456 等价于 123456, 2#1010_1100 等价于 2#10101100,

  数值分隔符不能使用连续多个下划线,并且不能在字符串中使用数值分隔符,例如:

  tonumber("123_456") 返回的是123

  ("123456") + 1 返回的是一个数值 123457

  ("123_456") + 1 会报错

  fiber.create()创建并返回的纤程对象。 纤程类似线程,但不是线程.

  纤程有独立的运行堆栈,并且也可以暂停或继续运行,但是纤程并不会创建新的线程,也不能同时运行多个纤程.

  转换数据类型

  数值、字符串会自动转换,但是我们也可以用aardio提供的函数强制转换。

  aardio提供三个强制转换动态类型的函数

  tostring(v) 转换参数v为字符串,可使用_tostring元方法自定义转换函数。

  tonumber(v) 转换参数v为数值,可使用_tonumber元方法自定义转换函数。

  topointer(v) 转换参数v为指针,可使用_topointer元方法自定义转换函数。

  io.open(); //打开控制台窗口,用来支持io.print函数

  n = tonumber( "2" );//tonumber函数强制转换一个变量为数字,如果失败返回null空值

  str = tostring( 2 );//强制转换一个变量为字符串,如果失败返回null空值

  ptr = topointer( 123 ); //强制转换为指针,如果失败返回null空值

  io.print( type(n),type(str),type(ptr) );

  使用type函数可以读取数据类型。

  1、函数原型:

  dataType[,structType][,metaType] = type( any )

  2、函数说明:

  type函数返回对象的基本数据类型dataType。

  如果对象是一个struct结构体,则返回结构体类型structType。

  如果对象在元表中指定了_type字段的值,则返回元类型metaType。

  aardio用字符串描述类型,所以返回的类型都是字符串,

  如果没有任何参数,type函数无返回值.

  3、调用示例:

aardio(编程语言与开发工具)

  io.open(); //打开控制台窗口

  io.print( type(null) , type.null );//显示null , null

  io.print( type("Hello world") , type.string );//显示 string , string

  io.print( type(1000) , type.number );//显示 number , number

  io.print( type(io.print) , type.function );//function , function

  io.print( type( class{} ) , type.class );//显示 class , class

  io.print( type(true) , type.boolean );//boolean , boolean

  io.print( type( io.stdin ) , type.cdata );//显示 cdata , cdata

  io.print( type( {x=0;y=0} ) , type.table );//显示 table , table

  io.print( type( topointer( 1 ) ) , type.pointer );//显示 pointer , pointer

  使用type.eq比较数据类型

  1、函数原型:

  eq = type.eq( obj,obj2 )

  2、函数说明:

  比较参数一、参数二的类型、元类型、sturct类型,如果完全相等返回true,否则返回false

  3、调用示例:

  import time.ole

  io.open(); //打开控制台窗口

  var oletm = time.ole();

  var tm = time();

  //type.eq严格比较所有类型(基础类型、元类型、struct类型)

  if( type.eq( oletm,tm ) ){

  io.print("oletm,tm类型相同")

  }

  else{

  io.print("oletm,tm类型不相同")

  }

  //time.istime不比较元类型,因此兼容oletime

  io.print( "是datetime对象吗?",time.istime(oletm) )

  execute("pause") //按任意键继续

  io.close();//关闭控制台

aardio(编程语言与开发工具)

  string(字符串)

  计算机中以八个二进制位表示一个八位字节 - 这称为一个单字节字符。

  一组连续的字节就构成一个字符串,在aardio中字符串是基于二进制的,可以包含任何数据(例如图像、文本、或者'\0'等不可打印字符)。

  字符串本质上是字节构成的数组,但这个数组是只读的,每次对字符串做替换、连接等操作都会生成新的字符串,

  每个字符串指向的内存不应该被直接修改。

  下面的代码定义了一个最基本的字符串:

  var str ="C:\Documents and Settings\admin\Desktop\string.aardio"

  可以用 #str 取该字符串占用的内存字节长度,可以使用下标获取每个字节的数值,

  例如 str[1] 取出第一个字节的数值是67, 内存中的67在文本中显示出来的就是字符"C" - 这是ASCII编码规定的。

  前面说过,一个字节只有8个二进制位,那他能表示的字符就很有限,所以就有了很多不同的编码规则用多个字节

  来表示更多的字符,例如GBK,UTF-8等多字节字符集,用小于0x80的单字节表示ASCII字符(英文字母数字这些),

  GBK用双字节表示汉字(首字符大于0x80),而UTF8有两个以上的字节表示宽字符(所有字节大于0x7F).

  GBK编码的第二个字节还是会与ASCII冲突,所以处理GBK字符串需要从头开始才能准确的检测一个字节属于谁,

  这导致容易出现串码问题,而UTF8的宽字符总是大于0x7F,首字符的两个二进制位总是1,而附加字节的前两个

  二进制位总是10,这就让我们处理文本非常方便,因为格式化的文本,例如HTML,JSON他的分隔标记通常都是

  固定小于0x7F的ASCII字符,但要注意UTF8的字符是变长的,理论一个字符可以是1,2,3,4 .....个字节。

  不同的编码还存在不同的系统环境不兼容的问题,例如GBK的软件在繁体系统上就会乱码,而Unicode编码可以

  避免这一问题,Unicode编码有多种方案,主要被采用的则是UTF-8,UTF-16。 windows系统使用的是UTF-16,

  而 aardio 10开始,aardio的源代码文件、字符串等等默认使用UTF-8编码。

  注意在aardio文档中一般提到Unicode指的是UTF 16.

  例如 string.fromUnicode() string.toUnicode() 函数默认都是从UTF-8到 UTF-16(Unicode)双向转换。

  一、文本字符串

  文本字符串放在双引号中,字符串可以包含换行,aardio保证双引号中的字符串换行使用'\n'换行符,不包含'\r'回车符。

  例如:

  strPath ="C:\Documents and Settings\admin\Desktop\string.aardio"

  strLine ="第一行 第二行"

  如果在双引号中的字符串本身包含双引号,可以用两个连续的双引号表示双引号自身。

  另外在 aardio 10中,可以使用反引号(键盘左上角ESC下方的键)代替双引号,他们的作用与用法相同,

  、

  例如:

  strPath = `C:\Documents and Settings\admin\Desktop\string.aardio`

  strLine = `第一行 第二行`

  aardio代码中双引号、反引号内的都是纯文本字符串,并被aardio标记为UTF-8编码。

  aardio中每个字符串都有一个UTF格式标记,可以使用 string.getUtf() , string.setUtf() 函数获取或修改UTF标记。

  UTF标记是按位设置的,utf & 8 表示一个UTF8编码的字符串,utf & 16表示一个UTF16编码的Unicode字符串。

  而UTF & 1 表示一个ANSI字符串,用户在编写程序中一般不应去获取或修改该UTF标记,该格式标记应由aardio自动

  维护,用于优化自动编码转换的效率。用户应当明确的了解一个文本的来源编码,并且有有需要时使用string.fromto()

  等转换函数进行编码转换。aardio只要在能确认一个字符串的编码格式时才会对字符串进行标记(例如:直接写在aardio

  源码中的字符串字面值,或者经过string.fromto函数成功转换编码的字符串)。

  二、转义字符串

  转义字符串放在单引号中。支持\转义符,语法与C\C++相同。

  需要注意的aardio中双引号中的字符串不能使用转义符,这一点与C语言有别。

  在单引号中的字符串可以换行书写,但是aardio会忽略所有的换行,

  aardio保证单引号中只能以'\r\n'表示回车换行符,所有字面值的回车换行被忽略 。

  转义字符串支持的转义符与C,JS等类似:

aardio(编程语言与开发工具)

  转义字符串可以换行、但是aardio会忽略换行符,必须使用\n表示换行、用\r\n表示回车换行。

  如果单引号中仅包含一个字符、并且后面附加#号后缀、则表示该字符的字节码数值。

  注释字符串

  在aardio的赋值语句中,可以将行注释、段注释作为一个字符串组成赋值语句。

  因为aardio中段注定可以自定义注释标记里 星号数目 - 只要首尾匹配就可以,这就可以方便的用来表示复杂的字符串。

  而不用担心所包含的字符串里可能出现字符串的结束标记。

  注释字符串的作用与双引号类似,表示的是纯文本字符串,aardio解析后会将起标记为UTF8编码,

  但是段注释保证将换行解释为\r\n',并且忽略首尾紧邻星号的第一个空行(如果有的话),而行注释保证字符串没有回车符('\r')或换行符('\n')

  回车换行符

  在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

  后来,计算机发明了,这两个概念也就被搬到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

  Unix 系统里,每行结尾只有“<换行>”,即'\n';

  Windows系统里面,每行结尾是“<回车 ><换行>”,即'\r\n';

  Mac系统里,每行结尾是“<回车>”。

  在aardio中可使用string.crlf() 函数格式化换行为统一风格。

  一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;

  而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号

  0x0D(asc码是13) 指的是“回车” aardio中写为'\r' 是把光标置于本行行首

  0x0A(asc码是10) 指的是“换行” aardio中写为'\n' 是把光标置于下一行的同一列

  0x0D + 0x0A 回车换行 aardio中写为'\r\n' 把光标置于下一行行首

  在windows中默认的以'\r\n'表示文本换行,如果指定文本模式读写文件时,则读取文件时会自动将回车换行转换为'\n',而在写入时又自动将'\n'转换为'\r\n'

  在使用io.open函数时,可以用'b'标记指定二进制模式,而使用't'标记指定文本模式(默认设置)

  在设置winform程序时,要注意普通文本框控件使用'\r\n'表示换行,而richedit控件则使用'\n'表示换行.

  在字符串中表示回车换行

  aardio有多种表示字符串的方法,

  而这些表示方法都有预定义的回车换行解析规则。

  这些规则不会受到源文件实际使用的换行字符影响,即无论你是以'\r','\n'或者'\r\n'换行。

  aardio会按下面的规则解析回车换行:

  在赋值语句中以段注释表示的字符串,保证换行为'\r\n'

  例如:

  str = /*

  我后面是回车符

  我前面是换行符

  */

  在赋值语句以行注释表示的字符串,保证没有回车换行

  str = //我后面即没有回车,也没有换行

  放到双引号中的字符串,保证没有回车符,但是有换行

  str = "我后面是换行符

  我前面是换行符"

  放到单引号中的字符串,保证没有字面值的回车换行符,只能以'\r\n'来表示

  str ='我后面没有回车也没有换行

  我前面没有回车也没有换行'

  table(表)

  table(表)是aardio中唯一的复合数据类型,除了非复合的基础数据类型以外,aardio中几乎所有的复合对象都是表,即使是变量的命名空间也是表。表的本质是一个集合(collection),可以用于容纳其他的数据成员,并且表也可以嵌套的包含其他的表(table),在aardio里表几乎可以容纳一切其他对象。

  如果我们把字符串、缓冲区(buffer)、数值、函数、指针.....这些基础数据类型比喻为盘子中的菜,那么表这样的复合数据类型就是装菜的盘子,如果没有了盘子,所以就没有办法愉快的吃菜了(相当于在程序代码中传输、使用数据)。

  一、表的类型

  表(table)包含的数据结构也被称为字典(dictionaries)、列表(list)、映射(map)、关联数组(associative arrays)、对象(object)......等等.虽然在不同的编程语言里的具体实现存在差异(例如有序或无序存储、使用或不使用哈希算法),但基本都是用来包含不定个数的键值对成员。

  aardio中的表可以包含不定个数的成员,每个成员都由一个键值对组成(键用来指定成员的名称,值用来指定成员的值)。“键”可以任何除null以外的数据类型,甚至可以在table元素中包含table,table允许嵌套。“值”也可以任意数据类型,当值为null时表示删除该成员。

  通常把“键”放在索引操作符“[]”中来索引一个元素的值,这时候键又称为“下标”或“索引”。例如 tab["键"] tab[1],“[]”则被称为下标操作符。也可以把一个符合变量命名规则的键放在成员操作符“.”后面,例如 tab.key tab.key2 ;

  根据键的存取排序规则,表包含的成员分为以下两种类型( 表可以同时包含以下两种类型的成员 )

  a)、哈希表(无序集合)

  aardio中的表是哈希表(hashtable),哈希表使用哈希算法存取,不会按其他特定顺序排序(在代码中添加成员的顺序将被忽略),所以在遍历哈希表时的顺序并不一定会保持代码中书写、添加表成员的顺序,因为我们把这种集合称为无序集合。哈希表的优势是查找速度非常快,即使表包含的成员非常多,仍然可以快速的访问成员键值对。

  下面是一个创建哈希表的例子:

aardio(编程语言与开发工具)

  b)、数组(有序集合)

  如果表中不定个数的成员的“键”是从1开始、有序、连续的数值,那么这些成员构成一个有序数组。在创建数组时,数组的键可以省略不写。表总是可以同时包含数组、以及非数组成员,即使不包含数组成员,我们也可以将表作为空数组处理。

  如果表中包含的成员使用了数值作为键,但是多个成员的键并不是从1开始的连续数值 - 则构成稀疏数组。在aardio一般我们提到的数组 - 如果未加特别说明则是特指有序连续数组(不包含稀疏数组)。

  如果表中包含了稀疏数组,或者成员的数值键包含不连续的、中断的数值,那么不应当作为有序数组使用。 aardio中几乎所有针对数组操作的函数或操作符 - 如果未加特别说明都要求参数是有序数组。

  有序数组可以使用for循环(或者table.eachIndex)有序的遍历成员,下面我们看一个在aardio中使用数组的简单演示:

aardio(编程语言与开发工具)

  二、构造表

  用{}操作符构造新的table对象,

  并以分号;分隔每一个元素 (不能使用逗号代替分号)。如果成员是一个函数并以}或end结束时,可以省略分隔符。

  {}操作符在表达式中只能作为赋值语句的右值、函数参数、或被包含在另一个table构造器中,而不允许与其他操作符结合,不允许向前结合、向后结合,仅允许被括号{}[]()包含。

  创建一个空的table。

aardio(编程语言与开发工具)

  table元素可以使用各种数据类型的变量,甚至可以是一个表达式或者一个函数,如果我们为table中的值赋于一个键名字,则在table中添加一个键值对。

aardio(编程语言与开发工具)

  table的键名并不要求符合变量命名规则,键可以是任何除null以外的值或字符串。不符合变量命名规则的键名必须置于下标操作符内(并且必须是字符串,例如包含在引号中字面值)。

  在任何时候,table中不符合变量命名规则的键必须通过[]操作符访问,以下是正确的写法:

  tab = { [1]=300;[2]=400;["+"]=200;[1+1]=200 }; //因为变量名不能以数字开始,更不能包含运算符。

aardio(编程语言与开发工具)

  我们可以把多个变量用一对花括号包含起来以转换为table数组,也可以通过table.unpack函数将table数组转换为多个变量。

  var tab = {"a";"abc";"abcd"} ; //创建一个table;

  a,b,c = table.unpack(tab);

  var tab2 ={ table.unpack(tab) }; //将所有返回值转换为table变量tab2

  三、在函数参数中构造表

  当在函数内部有且只有一个使用{}构造器构建的table参数时,并且不包含数组元素,则{}可以省略。

aardio(编程语言与开发工具)

下载地址

人气软件