易語言飛揚

易語言飛揚

“易語言。飛揚”(英文名稱“EF”)是一門簡單易學、高效實用、面向對象、跨平台的計算機通用程式語言。它是完全面向對象程式語言,因而在面向對象機制上,與同為面向對象的Java、C#等程式語言,有相似甚至相同之處。它的語法脫胎自“類C語言”,因而在語法上,與C、C++、Java、C#等程式語言,有相似甚至相同之處。它是一個全新的易語言版本,從核心架構上明顯區別於原有的易語言(4.x及以前版本),它與以前的易語言共同構成了一個可以面向更廣泛套用層次的軟體開發平台

基本介紹

  • 中文名:易語言飛揚
  • 外文名:EF
  • 類別程式語言
  • 特點:簡單易學、高效實用
系統介紹,項目歷史,EBNF語法,字元編碼,原始碼檔案,定義檔案,

系統介紹

系統套用
“易語言.飛揚”當前狀態“易語言.飛揚”正處於公開測試期,截止到目前已發布了三個測試版本,當前最新測試版本為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.能不能編寫自己的類庫?
可以。用“易語言.飛揚”可以編寫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; //後半行是注釋/* 這是多行注釋, 可以寫多行*//* 支持嵌套使用注釋。 //這是第一層嵌套 /* 這是第二層嵌套 /* 第三層嵌套 */ */*/

相關詞條

熱門詞條

聯絡我們