标题：易语言飞扬
系统介绍
系统应用
“易语言.飞扬”当前状态  “易语言.飞扬”正处于公开测试期，截止到目前已发布了三个测试版本，当前最新测试版本为1.1.0。
语言语法已基本完善，并趋于稳定。
编译器和系统库（系统.ncl）已开发完成。
调试器已接近完成。
其它类库在逐步完善中：用户界面，工具，反射，多线程，正则表达式，编码转换，XML……
集成开发环境（IDE）全力开发中……
“易语言.飞扬”常见问答（FAQ）
大连大有吴涛易语言软件开发有限公司，2007.7
1.“易语言.飞扬”是什么？
“易语言.飞扬”是一门简单易学、高效实用、面向对象、跨平台的计算机通用编程语言。
2.为什么要开发“易语言.飞扬”？
中国应该有属于自己的高层次的编程语言。
从公司的产品层面来说，在具有了面向大众用户的老版本易语言的基础上，还应该同时具有面向专业程序员的相应语言产品。
我们必须为老版本易语言用户提供上升空间。
必须进一步巩固和扩展我公司在国内编程语言领域的领导地位。
3.“易语言.飞扬”主要特性有哪些？
* 更具现代性：
完全面向对象，跨平台，支持Unicode、多线程，垃圾自动回收，类型反射，静态编译，动态类型装载等等。
* 更简单易学：
繁琐、晦涩、不常用的语言特性被尽量精简，且补充了很多便于使用的语言特性。
支持中英文双语关键字，在语法格式和关键字方面，尽量与现有类似编程语言相同，减少了学习量。
* 对系统环境的适应和控制能力更强：
定义有语言无关的“EF对象协议”，允许使用其它各种编程语言直接书写“易语言.飞扬”本地类，和用“易语言.飞扬”本身书写的类完全融合互补，可用作快速建立强大高效的本地应用环境，同时可充分利用现有代码资源。
4.“易语言.飞扬”正式版预计何时推出？
暂不给出时间表。目前正处于公开测试期，许多方面都面临补充和完善。匆忙推出正式版不利于产品发展。
5.请讲一下“易语言.飞扬”（EF）名称的由来？
中文名称“易语言.飞扬”，由“易语言”和“飞扬”组成。“易语言”是我公司名称，且新产品是原“易语言”产品的下一代产品，因而新产品名称中含“易语言”字样；“飞扬”二字来源于吴涛当年创立的“飞扬工作室”，同时有预示新产品“巨龙腾飞、发扬光大”的吉祥寓意。
英文名称“EF”，其中的 E 来自“易语言”首字的谐音，F 来自“飞扬”首字母。
源代码文件后缀“*.ef”来自于英文名称“EF”。
官方网站域名”来自于源代码文件后缀“.ef”（点EF）。
6.“易语言.飞扬”与“易语言”有何异同？
“易语言.飞扬”支持完全面向对象，具有垃圾自动回收机制，面向专业软件开发人员，适合大中型软件开发项目。
“易语言”支持基于对象的开发模式，面向初、中级计算机用户，适合开发中小型软件项目。
“易语言”源代码文件是二进制格式，虽然易读易写，但不易交流；“易语言.飞扬”的源代码文件是纯文本文件。
二者都是通用编程语言，都足够简单。
7.“易语言.飞扬”与 Java、C# 有何异同？
都支持完全面向对象，都具有垃圾自动回收机制，类都是单根继承，对象都是引用类型，都有完善的类型反射机制，都有丰富的类库资源，语法很类似……
“易语言.飞扬”目前暂时没有“package”或“namespace”概念，暂时没有异常处理机制。
8.“易语言.飞扬”与 C/C++ 有何异同？
C++支持多重继承，“易语言.飞扬”仅支持单根继承；C++没有（明确的）“接口(interface)”概念，“易语言.飞扬”有；C++没有垃圾回收机制（C++0x可能增加），“易语言.飞扬”有。
C/C++通常倾向于系统软件开发，“易语言.飞扬”更倾向于应用软件开发。
“易语言.飞扬”语法来源于C/C++系列。
9.能不能编写自己的类库？易语言飞扬界面(9张)
可以。用“易语言.飞扬”可以编写ECL类库，用C/C++或其它语言可以编写NCL类库。这两种类库都可供“易语言.飞扬”使用，并且在使用方式上没有任何区别。
10.能否支持多线程开发？
支持。
支持Unicode文本吗？
支持。“易语言.飞扬”中的文本总是Unicode编码的（Windows下为UCS2，Linux下为UCS4）。
11.如何支持跨平台开发？
同一个源代码，不经过任何修改，或只经过少量修改，就可以在其它操作系统上编译。目前支持 Windows 和 Linux 操作系统。
12.“易语言.飞扬”会开放源代码吗？
会。
“易语言.飞扬”绝大多数类库，及相关工具（如 IDE, EFDoc），都将开放源代码。编译器和系统库最终也将开源。
“易语言.飞扬”本地类库开发包（EFDK），也将开源。
“易语言.飞扬”开放源代码计划将在短期内尽快陆续实施（可能需要等待，因为目前代码的稳定性和成熟度均有所不足）。
我们热情邀请广大用户踊跃参与进来，共同完善和发展“易语言.飞扬”软件平台。
13.多行注释内部可以嵌套使用多行注释吗？
可以。支持嵌套注释，如 “/* int i = 0; /* i++; */ */”。
14.类型内部可以嵌套定义类型吗？方法内部可以嵌套定义方法吗？
可以。支持嵌入类型和嵌入方法。
15.有哪几种基本类型？它们是“对象”的子类吗？
“易语言.飞扬”共有五种基本类型：整数，小数，逻辑，文本，字节集。
基本类型不是“类”，更不是“对象”的子类。
16..定义类成员并同时赋初始值时，为什么初始值必须是立即数？
目前编译器有此要求。
17.有没有类似JAVA的JavaDoc或.NET的NDoc那样能生成类库API文档的工具？
有，EFDoc。EFDoc是由“易语言.飞扬”开发的，借助于自身完善的类型反射机制。
EFDoc将开放源代码，可由用户可根据实际需要自行修改。
“易语言.飞扬”项目历史
1.2.3版，2007.12.15
启用新的系统环境变量名称“EF_LIB_PATHS”，见“类库的加载”
更新“编译器”说明文本
其它文字上的修改
1.2.2版，2007.11.20
更新对“遍历循环”的描述
更新对“基本类型对象”和“数组对象”的描述
其它文字上的多处修改
1.2.1版，2007.9.28
增加对“‘动态类型’和‘弱类型’”的描述
“扩展数据类型”中增加对“类型反射机制”的描述
其它文字上的修改
1.2版，2007.6.15
增加对“预编译”的描述
增加对“遍历循环”的描述
增加对“方法参数默认值”的描述
增加对“方法扩展参数”的描述
增加对“类型转换方法”的描述
增加对“嵌入方法”的描述
增加对“嵌入类型”的描述
增加对“标准库”的描述
增加对“中英文双语关键字”的描述
更新对“基本类型对象”和“数组对象”的描述
更新对“属性表”的描述
更新“编译器”命令行说明文本
其它多处修改
1.1版，2007.2.10
增加对“假如”语句的描述
修改对“文本表示方法”的描述
修改对“事件处理方法”的描述
其它文字上的修订
1.0版，2006.12.29
《“易语言.飞扬”白皮书》第一个公开发布版本，主要描述语法、类库、编译器等核心内容。
“易语言.飞扬”项目正式立项大约是在2006年5月份。
第一个程序
公开 类 启动类{        公开 静态 启动()        {                控制台.输出("祖国您好！");        }}请将以上内容存储为“hello.ef”文件，注意编码格式必须为 Unicode（UTF-8/UCS-2/UCS-4）。请参考：字符和编码。 
Windows操作系统下请使用以下命令行将“hello.ef”编译为可执行文件“hello.exe”，并运行编译生成的“hello.exe”：  第一个程序efc hello.ef -out="hello.exe"hello.exeLinux操作系统下请使用以下命令行将“hello.ef”编译为可执行文件“hello”，并运行编译生成的“hello”：
./efc hello.ef -out="hello"./hello以上程序运行后，将在控制台输出以下内容：
祖国您好！注意：要编译EF源文件或运行EF编译生成的可执行文件，需确保系统类库（系统.efn）位于当前目录中，或位于系统环境变量“EF_LIB_PATHS”所指定的目录内。请参考：类库的加载，类库的启动。
EBNF语法
本文主要使用 EBNF 描述EF语法。
EBNF要点：
[]：方括号表示它里面的内容可以省略 {}：花括号表示它里面的内容可以被重复0到多次，{}+ 表示花括号里面的内容可以被重复1次或多次 ()：小括号表示分组，主要是明确语义关系，不具有特殊含义 | ：竖线表示多选一，如 x|y|z 表示只取x,y,z其中之一 EBNF表达式中，粗体部分表示EF代码，斜体部分表示用户定义名称（标识符）或另一个EBNF表达式。
代码组织EF代码由任意多个源代码文件（*.ef）和一个可选的类库信息定义文件（*.inf）文件组成。
字符和编码
所有文件需存储为 Unicode 格式（UTF-8/UCS-2/UCS-4）的纯文本文件 英文字母区分大小写 分隔符必须是ANSI字符 重复的空白字符（半角空格、TAB、回车符、换行符等）不影响语法解析
源代码文件
源代码文件结构：
引入类库
类定义| 接口定义| 枚举定义| 友好名称定义“引入类库”语法：
引入类库名称{,类库名称};使用任何非本程序或本类库中定义的类型之前，都必须“引入”相应的类库。系统类库因为必然被所有程序和类库使用，将被自动引入。
“引入”语句应位于源代码文件的首部，所引入的类库只对当前文件有效。
使用已被“引入”类库中的类型时，如果不存在歧义，可以使用类型的“短名称”。如“系统.对象”可简化为“对象”。请参考：类型名称。 
类、接口、枚举、友好名称等的定义语法详见下文。
类库信息定义文件
类库信息定义文件用于给编译器提供类库定义信息，其文件后缀名固定为“.inf”，文件名称可任意。
文件格式：
类库类库名称[属性表];示例：
类库 我的类库 <启动类 = "启动类" 作者 = "大连大有吴涛易语言软件开发有限公司">;编译时，请将 .inf 文件跟其他所有源代码文件一并提供给编译器，文件名之间以空格隔开，如：
efc lib.inf 1.ef 2.ef ....inf 文件是可选的。如果不提供该文件，则必须通过编译器命令行参数指定“类库名称”和/或“启动类”。请参考：编译器。
标识符标识符是用户定义的用于标识特定代码元素的字符组合。变量名称、类型名称（类名称/接口名称/枚举名称）、方法名称、成员名称（类成员名称/枚举成员名称）等均被称为标识符。 
标识符由英文字母、下划线、数字、和其他非ANSI字符（包括汉字）组成，其中数字不允许出现在标识符首部。
标识符最多允许255个字符。
注释“//”表示单行注释的开始，直到本行结束。
“/*”表示多行注释的开始，“*/”表示多行注释的结束。
多行注释内部允许嵌套使用单行注释和多行注释。
注释不属于可编译代码，编译时将被忽略。
//这是单行注释整数 i = 100; //后半行是注释/*        这是多行注释，        可以写多行*//*        支持嵌套使用注释。        //这是第一层嵌套        /*                这是第二层嵌套                /* 第三层嵌套 */        */*/