锘??xml version="1.0" encoding="utf-8" standalone="yes"?> Dec 1, 2005
akIDE鏄竴涓狣璇█鐨処DE錛屽彲浠ュ埌http://www.lessequal.com/akide涓嬭澆錛屽畠鍙渶瑕丏MD鏀寔銆?BR>
C++ ABI Summary
http://www.codesourcery.com/cxx-abi/
C++ ABI for IA-64: Code and Implementation Examples
http://www.codesourcery.com/cxx-abi/abi-examples.html
C++ Vtable Example
http://www.codesourcery.com/cxx-abi/cxx-vtable-ex.html
Intel廬 Itanium廬 Processor-specific Application Binary Interface (ABI)
http://developer.intel.com/design/itanium/downloads/245370.htm
]]>New/Changed Features
Bugs Fixed
鍏朵腑鈥淒浠g爜瑕嗙洊鍒嗘瀽鍣ㄢ濆簲璇ユ槸寰堝浜烘劅鍏磋叮鐨勪笢瑗夸簡錛屼笅闈㈡槸涓涓緥瀛?鎽樿嚜http://digitalmars.com/d/code_coverage.html)錛?/P>
bit flags[8191];
int main()
{ int i, prime, k, count, iter;
printf("10 iterations\n");
for (iter = 1; iter <= 10; iter++)
{ count = 0;
flags[] = true;
for (i = 0; i < flags.length; i++)
{ if (flags[i])
{ prime = i + i + 3;
k = i + prime;
while (k < flags.length)
{
flags[k] = false;
k += prime;
}
count += 1;
}
}
}
printf ("\n%d primes\n", count);
return 0;
}
緙栬瘧銆佽繍琛岋細
sieve
|
|bit flags[8191];
|
|int main()
5|{ int i, prime, k, count, iter;
|
1| printf("10 iterations\n");
22| for (iter = 1; iter <= 10; iter++)
10| { count = 0;
10| flags[] = true;
163840| for (i = 0; i < flags.length; i++)
81910| { if (flags[i])
18990| { prime = i + i + 3;
18990| k = i + prime;
168980| while (k < flags.length)
| {
149990| flags[k] = false;
149990| k += prime;
| }
18990| count += 1;
| }
| }
| }
1| printf ("\n%d primes\n", count);
1| return 0;
|}
sieve.d is 100% covered
鍙︿竴涓儕鍠滄槸mangleof灞炴э紝鍙互寰楀埌涓涓被鍨嬭緙栬瘧鍣╩angle鍚庣殑鍚嶅瓧銆備笉鐭ラ亾mangle瀵瑰簲鐨勪腑鏂囩炕璇戞槸浠涔堬紵澶ф鏄滃悕瀛楄漿鎹⑩濆惂銆備竴鐐規(guī)祴璇曚唬鐮侊細
void test();
void test1(int n);
void test2(int n);
void main()
{
void function (int, char[]) f;
void function (int) f1;
void function () f2;
writefln (f.mangleof);
writefln (f1.mangleof);
writefln (f2.mangleof);
writefln (int.mangleof);
float a;
writefln (a.mangleof);
writefln ((&test).mangleof);
writefln ((&test1).mangleof);
writefln ((&test2).mangleof);
writefln (void.mangleof);
}
PFiZv
PFZv
i
f
PFZv
PFiZv
PFiZv
v
]]>New/Changed Features
Bugs Fixed
姣旇緝鎰熷叴瓚g殑鏄誕鐐規(guī)暟鍜屽瓧絎︿覆甯擱噺浣滀負妯℃澘鍊煎弬鏁幫紝綆鍗曟祴璇曚簡涓涓嬶細
template TFloat (float F)
{
float value = F;
}
template TString (char[] S)
{
char[] value = S;
}
void main()
{
alias TFloat!(3.14f) PI;
writefln(PI.value);
writefln(TString!("hello").value);
}
緙栬瘧閫氳繃錛岃繍琛岀粨鏋滃涓嬶細
3.14
hello
]]>
鍙﹀2涓鍚圗CMA 262瑙勮寖鐨勮剼鏈璦鍒嗗埆鏄疦etscape鐨刯avascript鍜孧icrosoft鐨凧Script錛岀洰鍓岲MDScript鍜屽叾瀹?涓笉瀹屽叏鍏煎錛屼笉榪囨晥鐜囪楂樹竴浜涖侱MDScript鎻愪緵浜嗕竴涓畝鍗曠殑嫻嬭瘯錛岀敓鎴?190浠ュ唴鐨勮川鏁幫紝榪唬10嬈★紝鍦ㄦ垜鐨勬満鍣ㄤ笂錛宩avascript鎵ц鑰楁椂566姣錛孌MDScript鎵ц鑰楁椂188姣錛屾暣鏁村揩浜?鍊嶃?BR>
濡傛灉浣犳兂瀹炵幇涓涓鍚圗CMA 262鏍囧噯鐨勮剼鏈璦錛屽緩璁湅榪欎喚浠g爜鐨勫疄鐜板惂錛屾瘮杈冪畝媧侊紝鍙湁400澶欿銆傚井杞偅浠戒及璁℃槸寰堥毦鐪嬪埌浜嗭紝Netscape閭d喚鐢–鍐欑殑錛屼唬鐮佸ぇ灝忓氨鏈夎繎3M錛屽畯涔熸瘮杈冨錛岀湅璧鋒潵瑕佸悆鍔涗竴浜涖?BR>
DDL鏄痙source.org涓婄殑涓涓湁瓚g殑欏圭洰錛屽畠鍙互浠?obj鎴?lib鏂囦歡涓姞杞戒唬鐮佸茍鎵ц錛岀洰鍓嶆敮鎸丆OFF銆丱MF銆丒LF鏍煎紡銆?img src ="http://m.shnenglu.com/cpunion/aggbug/1200.html" width = "1" height = "1" />
]]>
闂茶瘽灝戣錛岃鐪嬩唬鐮侊細
template DelegateHandlers(HandlerType, FunctionType)
{
HandlerType[] handlers;
FunctionType[] functions;
void opAddAssign(HandlerType h)
{
handlers.length = handlers.length + 1;
handlers[length-1] = h;
}
void opAddAssign(FunctionType f)
{
functions.length = functions.length + 1;
functions[length-1] = f;
}
}
template Delegate(Ret)
{
class Delegate
{
alias Ret delegate () HandlerType;
alias Ret function () FunctionType;
mixin DelegateHandlers!(HandlerType, FunctionType);
static if(is(Ret: void))
{
void opCall ()
{
foreach (HandlerType handler; handlers)
handler ();
foreach (FunctionType _function; functions)
_function ();
}
}
else
{
Ret opCall ()
{
Ret ret;
foreach (HandlerType handler; handlers)
ret = handler ();
foreach (FunctionType _function; functions)
ret = _function ();
return ret;
}
}
}
}
template Delegate(Ret, Arg1)
{
class Delegate
{
alias Ret delegate (Arg1) HandlerType;
alias Ret function (Arg1) FunctionType;
mixin DelegateHandlers!(HandlerType, FunctionType);
static if(is(Ret: void))
{
void opCall (Arg1 a1)
{
foreach (HandlerType handler; handlers)
handler (a1);
foreach (FunctionType _function; functions)
_function (a1);
}
}
else
{
Ret opCall (Arg1 a1)
{
Ret ret;
foreach (HandlerType handler; handlers)
ret = handler (a1);
foreach (FunctionType _function; functions)
ret = _function (a1);
return ret;
}
}
}
}
class Test
{
void test ()
{
writefln ("Test.test");
}
int test1 ()
{
writefln ("Test.test1");
return 1;
}
void test2(int v)
{
writefln ("Test.test2");
}
int test3(int v)
{
writefln ("Test.test3");
return 7;
}
}
void test_func ()
{
writefln ("test_func");
}
int test_func1 ()
{
writefln ("test_func1");
return 2;
}
void test_func2(int v)
{
writefln ("test_func2");
}
int test_func3(int v)
{
writefln ("test_func3");
return 9;
}
void main()
{
Test t = new Test;
alias Delegate!(void) DDD;
DDD d = new DDD;
d += &t.test;
d += &test_func;
d ();
alias Delegate!(int) DDD1;
DDD1 d1 = new DDD1;
d1 += &t.test1;
d1 += &test_func1;
int a = d1 ();
assert (a == 2);
alias Delegate!(void, int) DDD2;
DDD2 d2 = new DDD2;
d2 += &t.test2;
d2 += &test_func2;
d2 (1);
alias Delegate!(int, int) DDD3;
DDD3 d3 = new DDD3;
d3 += &t.test3;
d3 += &test_func3;
int b = d3 (2);
assert (b == 9);
}
闈炲父騫插噣錛岄潪甯哥畝媧侊紝涓嶆槸鍚楋紵榪欎釜鍙姳浜嗘垜10鍒嗛挓鏃墮棿鏉ュ啓銆傘傘?BR>
D璇█鐨勫鎵橀潪甯擱珮鏁堬紝鏈夊叴瓚g殑鍙互嫻嬭瘯涓涓嬮氳繃濮旀墭鍜岀洿鎺ヨ皟鐢ㄤ箣闂寸殑鎬ц兘宸埆銆備笂闈㈣繖涓嚜宸卞疄鐜扮殑澶氬垎媧懼鎵樼被錛屾晥鐜囦篃闈炲父楂橈紝鎴戠殑嫻嬭瘯緇撴灉鏄浜庢ц兘鐨勫獎鍝嶅嚑涔庡彲浠ュ拷鐣ャ傛兂璧烽偅涓巻灝藉崈杈涗竾鑻﹀疄鐜扮殑C錛嬶紜澶氬垎媧懼鎵樼被錛屽疄鐜板鏉傘佽皟璇曡垂鏃躲佽繍琛屾晥鐜囪繕寰堜綆錛屾瘡姣忎竴鎯沖埌榪欏績閲岄偅涓毦鍙楀晩銆傘傘傘?BR>
鍐嶆潵鐪嬩竴涓婦璇█寮哄ぇ鐨勯潤鎬佹鏌ユ満鍒訛細
{
int n = v;
static assert (v > 3);
}
void main ()
{
int n;
n = XXX!(4).n; // OK
n = XXX!(3).n; // 緙栬瘧閿欒
}
鍚屾牱寰堟紓浜?BR>
濡傛灉浣犺寰楁彁紺轟俊鎭笉澶熷弸濂斤紝鍙互淇敼涓猴細
{
int n = v;
static if (v <= 3)
pragma (msg, "template value must > 3");
static assert (v > 3);
}
榪欐槸緙栬瘧鏃剁殑閿欒鎻愮ず錛?BR>
Compiling test.d ...
template value must > 3
D:\workspace\dace\test.d(94): static assert (3 > 3) is false
D:\workspace\dace\test.d(173): template instance test.XXX!(3) error instantiating
鎴戞兂浠ュ悗鏈夊彲鑳戒細鎵╁厖pragma錛屾敮鎸侀敊璇緭鍑猴紝榪欐牱灝變笉鐢ㄥ啓閲嶅鐨勮鍙ヤ簡錛屽彲浠ョ畝鍖栨垚榪欐牱錛?BR>
{
int n = v;
static if (v <= 3)
pragma (error, "template value must > 3");
}
榪欐牱鐪嬭搗鏉ユ洿濂姐備笉榪囩洰鍓嶆湁寰堝閲嶈鐗規(guī)ц瀹炵幇錛岃繖縐嶇帺鎰忓彲鑳借寰堜箙浠ュ悗鎵嶄細鍔犲叆浜嗐?img src ="http://m.shnenglu.com/cpunion/aggbug/1083.html" width = "1" height = "1" />
]]>
]]>
void test(int a, inout int b, out int c)
{
writefln(a);
writefln(b);
writefln(c);
a = 3;
b = 5;
c = 7;
}
void main ()
{
int a = 0, b = 1, c = 2;
test(a, b, c);
assert (a == 0);
assert (b == 5);
assert (c == 7);
std.process.system("pause");
}
鍦ㄤ笂闈㈢殑渚嬪瓙閲岋紝紼嬪簭鍦╰est鍑芥暟涓殑杈撳嚭璇彞灝嗚緭鍑猴細
0
1
0
涔熷氨鏄錛宱ut鍙傛暟鍙栧兼槸鏃犳剰涔夌殑錛屽畠鍙敤浜庤祴鍊箋?BR>
榪欓噷鏈変竴涓緢澶х殑闂錛岃皟鐢╰est(a,b,c)鏃訛紝璋冪敤鑰呭浜巆鐨勫艱鏀瑰彉鍙兘姣棤鐭ヨ錛岀敋鑷蟲垚涓洪殣钘忓緢娣辯殑BUG銆傚姝わ紝璁稿浜哄緩璁姞寮烘鏌ワ紝姣斿鍦ㄨ皟鐢ㄦ椂錛屽繀欏繪寚鏄巌nout/out錛?BR>
浼間箮鑳藉璧峰埌涓浜涜紺轟綔鐢紝涓嶈繃榪欐牱涓鏉ワ紝璇硶涓婂掍笉鎬庝箞綆緇冧簡銆?img src ="http://m.shnenglu.com/cpunion/aggbug/1044.html" width = "1" height = "1" />
]]>
writefln(a);
char b = "abcde"[3];
writefln(b);
鍙﹀淇浜嗕竴浜涚紪璇戝櫒鍜屾枃妗g敓鎴愮殑BUG銆?BR>
v0.137鐨勯噸瑕佹洿鏂版湁錛?BR>闅愬紡綾誨瀷寮曠敤錛?BR>
{
extern(C) test1();
}
鍏跺畠鏇存柊鍒欎富瑕侀泦涓簬緙栬瘧鍣ㄥ伐浣溿佹枃妗e伐鍏楓佸簱絳夛紝鏆傛椂榪樻病鏈夌壒鍒護浜哄叴濂嬬殑鐗規(guī)у姞鍏ヨ繘鏉ワ紝姣斿錛歴tack tracing, relation api絳夈?img src ="http://m.shnenglu.com/cpunion/aggbug/1039.html" width = "1" height = "1" />
]]>
2銆佸ソ鐢ㄧ殑瀛楃涓插父閲忚〃杈懼紡銆?BR>闄や簡綾籆鐨勪嬌鐢ㄥ弻寮曞彿鐨勫瓧絎︿覆甯擱噺琛ㄨ揪寮忎互澶栵紝榪樺彲浠ヤ嬌鐢╜瀛楃銆傚彲浠ヤ嬌鐢▁"68 65 6C6C 6F"鏉ヨ〃紺?hello"錛宺"ab\na"鍒欏拷鐣ュ瓧絎︿覆甯擱噺涓漿涔夊瓧絎︾殑杞箟浣滅敤錛岃繕鍙互鍦ㄥ瓧絎︿覆甯擱噺鍚庡姞涓奵, w鎴杁鏉ユ寚紺哄瓧絎︿覆甯擱噺鏄痗har[]綾誨瀷銆亀char[]綾誨瀷榪樻槸dchar[]綾誨瀷銆傚彲浠ヤ嬌鐢▇榪愮畻絎﹁繛鎺?涓瓧絎︿覆銆?BR>
3銆佹暟瀛椼?BR>鏁板瓧鍙互鐩存帴浣跨敤錛岃繕鍙互榪欐牱鏉ュ畾涔夛細int a = 3_029_301_000; 鏁板瓧鐩存帴閲?鍖呮嫭鏁存暟銆佹誕鐐規(guī)暟銆佸鏁?琛ㄨ揪寮忎腑錛屸淿鈥濆瓧絎︽槸琚拷鐣ョ殑銆傚彟澶栬繕鐩存帴鎻愪緵浜嗗鏁扮被鍨嬨?BR>
4銆佹彁渚涘畾闀挎暟緇勩佸彉闀挎暟緇勩佸叧鑱旀暟緇勩?BR>int[3] a瀹氫箟涓涓畾闀挎暟緇勶紱int [] a瀹氫箟涓涓彉闀挎暟緇勶紱int[int]瀹氫箟涓涓叧鑱旀暟緇勶紝閿被鍨嬫槸int錛屽肩被鍨嬫槸int錛沬nt[char[]] a瀹氫箟涓涓叧鑱旀暟緇勶紝閿被鍨嬫槸char[]錛屽肩被鍨嬫槸int錛屼嬌鐢ㄩ潪甯告柟渚褲?BR>鍙互浣跨敤foreach鏉ラ亶鍘嗘暟緇勶細
foreach (int index, int value; a)
printf ("%d: %d\n", index, value);
foreach (char[] key, int value; a)
printf ("%.*s: %d\n", index, value);
鍙互浣跨敤in鎿嶄綔絎︽潵鍒ゆ柇鏌愪釜鍊兼槸鍚︽槸鍏寵仈鏁扮粍鐨勪竴涓敭錛?BR>
int[char[]] a;
if ("hello" in a)
writefln ("hello");
鏁扮粍鍙互鍒囩墖(slice)錛?BR>
int[] a;
int[] b = a[1..3];
int[] c = a[1..length];
絳夌瓑銆傘傘傘?BR>
5銆佸叾瀹冭繕鏀寔濮旀墭銆佸嚱鏁版寚閽堛佹ā鏉褲佸紓甯搞丷AII銆佸綰﹀紡緙栫▼銆佸崟鍏冩祴璇曘亀ith璇彞銆乤uto/typeof銆佸瀮鍦懼洖鏀躲佹搷浣滅閲嶈澆銆佸唴鑱旀眹緙栥佹潯浠剁紪璇戙佸祵鍏ュ埌HTML絳夛紝瀹冭繕鏍囧噯鍖栦簡ABI(榪欐槸C/C++鏈璁╀漢澶寸棝鐨勫湴鏂逛箣涓)銆傝繖浜涚壒鎬уぇ閮ㄥ垎閮芥瘮杈冪啛鎮(zhèn)夊拰瀹炵敤錛屼笅闈㈢畝鍗曚粙緇嶄竴涓嬫潯浠剁紪璇戝拰宓屽叆鍒癏TML銆?BR>
6銆佹潯浠剁紪璇戙?BR>鍦―涓紝鍙互浣跨敤version(VersionID)鏉ヨ繘琛屾潯浠剁紪璇戯細
{
//
}
else
{
//..
}
榪樺彲浠ヤ嬌鐢╠ebug鏉′歡錛?BR>
{
//
}
else
{
//
}
鎴栬咃細
debug printf ("hello");
闈欐佹潯浠剁紪璇戯細
static if (n == 1)
writefln ("hello");
else
writefln ("world");
綾誨瀷媯鏌ワ細
if (is(n[]))
writefln ("like array");
if (is(n:int))
writefln ("is an integer");
7銆佸祵鍏TML銆?BR>鍦ㄤ竴涓狧TML鏂囦歡涓紝<code>鍜?lt;/code>涔嬮棿鐨勯儴鍒嗗彲浠ュ綋浣淒浠g爜鏉ョ紪璇戙傛瘮濡備笅闈㈣繖孌典唬鐮侊細
<code>
import std.c.stdio;
int <font size=+1><b>main</b></font>()
{
<span style="color:red">printf</span>(<u>"hello world\n"</u>);
return 0;
}
</code>
<hr />
<h1> End </h1>
鎶婂畠瀛樺偍涓篐TML鏂囦歡錛屽彲浠ョ洿鎺ヤ嬌鐢╠md緙栬瘧鍣ㄧ紪璇戙?img src ="http://m.shnenglu.com/cpunion/aggbug/902.html" width = "1" height = "1" />
]]>
D璇█鐨勪粙緇嶆渶濂芥槸鐪?A >uframer鐨刡log錛屼粬緲昏瘧浜咲璇█鐨勫ぇ閮ㄥ垎鏂囨。銆傚綋鐒剁敱浜嶥璇█鐩墠涓鐩村浜庢祴璇曠増錛屾枃妗e拰鏈鏂扮殑緙栬瘧鍣ㄤ箣闂村彲鑳芥湁寰堝涓嶄竴鑷淬?BR>
D璇█鐨勭紪璇戝櫒鐩墠鏈?涓紝DMD鍜孏DC錛孌MD姣旇緝瀹規(guī)槗閰嶇疆錛屽彲浠ヤ粠http://www.digitalmars.com/d/dcompiler.html涓嬭澆鏈鏂扮増銆備笅杞界殑鍘嬬緝鍖呯洿鎺ヨВ鍘嬪埌浠繪剰涓涓垎鍖虹殑鏍圭洰褰曪紝騫舵妸\dm\bin鍜孿dmd\bin鍔犲埌PATH鐜鍙橀噺閲屽嵆鍙嬌鐢ㄣ?BR>
鍐欎竴涓畝鍗曠殑D璇█紼嬪簭錛屽綋鐒惰繕鏄粡鍏哥殑HelloWorld紼嬪簭錛?BR>
{
printf ("Hello world!\n");
}
鍜孋紼嬪簭鍩烘湰涓婁竴鏍楓傛妸瀹冧繚瀛樹負hello_world.d銆?BR>
涓嬮潰鐩存帴鍦ㄨ繖涓簮鏂囦歡鎵鍦ㄧ殑鐩綍涓嬶紝鎵цdmd hello_world.d錛屽嵆鍙紪璇戝嚭hello_world.exe錛屾墽琛屽畠?yōu)p兘鍦ㄦ帶鍒跺彴鎵撳嵃鍑篐ello world!銆?BR>
鎺ヤ笅鏉ュ埌http://www.dsource.org/projects/build/涓嬭澆build紼嬪簭錛岃繖鏄湪D紺懼尯浣跨敤姣旇緝騫挎硾鐨勪竴涓▼搴忋傜敱浜庢渶鏂扮殑v2.09鐗堝凡緇忓彂鐜頒簡涓浜涗弗閲嶇殑BUG錛屾墍浠ユ渶濂藉埌http://svn.dsource.org/projects/build/downloads/涓嬭澆v2.08鐗堛傛妸涓嬭澆鐨?exe鏂囦歡鏀瑰悕涓篵uild.exe騫舵斁緗悎閫傜殑鏂囦歡澶逛笅錛屽茍璁劇疆PATH鐜鍙橀噺銆?涓虹畝鍗曡搗瑙佹垜鏄洿鎺ユ妸瀹冩斁鍦╘dm\bin鏂囦歡澶逛笅)
涓嬮潰嫻嬭瘯涓涓媌uild紼嬪簭錛岀紪鍐欎竴涓猦ello_world.brf鏂囦歡錛屼繚瀛樺湪hello_world.d鍚屼竴璺緞涓嬶紝鏂囦歡鍐呭濡備笅錛?BR>
hello_world.d
鐒跺悗鎵цbuild @hello_world鍗沖彲緙栬瘧鍑篽ello_world.exe銆?/P>
D璇█緙栬瘧閫熷害闈炲父蹇?榪欎篃鏄疻alter Bright瀵笴++涓嶆弧鐨勪竴涓噸瑕佸師鍥?銆俤source.org涓殑mango欏圭洰鍖呭惈755涓狣婧愭枃浠訛紝浣嗗湪鎴戠殑鏈哄櫒涓婄紪璇戞垚.lib鏂囦歡鍙渶瑕?縐掓椂闂淬?BR>
D璇█鎬ц兘涔熷緢涓嶉敊錛屾湁2綃嘍璇█鍜孋/C++銆丣ava銆丆#鐨勬ц兘姣旇緝鏂囩珷錛?A >
http://mag.vchelp.net/200312/fanyi.htm
http://mag.vchelp.net/200312/fanyi_2.htm
鐩稿叧欏圭洰浠嬬粛錛?BR>mango: 榪欐槸涓涓笓娉ㄤ簬鏈嶅姟绔紪紼嬬殑欏圭洰錛岀洰鍓嶄富瑕佺敱Kris寮鍙戙佺淮鎶わ紝瀹炵幇浜唖ervlet錛屾殏鏃惰繕娌℃湁澶鏉傜殑鍔熻兘錛屼笉榪囧緢鍊煎緱鏈熷緟銆?BR>dwt: D璇█鐨剆wt寮鍙戝寘錛岀晫闈㈠紑鍙戦閫夈傜湅榪噀clipse鐣岄潰鐨勫簲璇ユ湁姣旇緝娣辯殑鍗拌薄銆傜敱浜庡ぇ閮ㄥ垎浠g爜鏄粠java浠g爜杞崲榪囨潵鐨勶紝鎵浠ョ被鍚嶃佹帴鍙g瓑閮芥病鏈夋敼鍙樸?BR>dui: D璇█鐨勫埆涓涓晫闈㈠紑鍙戝寘錛屽熀浜嶨TK銆?BR>build: 涓婇潰浠嬬粛榪囩殑build宸ュ叿銆?BR>dcoder: 鍩轟簬vs.net鐨凞璇█璇硶楂樹寒鎻掍歡銆?BR>dsp: 鍏ㄧО鏄疍ynamic Servlet Pages銆?BR>
浠ヤ笂欏圭洰閮藉彲浠ュ湪http://www.dsource.org/projects/鎵懼埌璇︾粏璧勬枡銆?BR>
DMDScript鏄竴涓被浼間簬JavaScript鐨勮剼鏈郴緇燂紝鍙互鍦?A >http://www.digitalmars.com/dscript/鎵懼埌璇︾粏璧勬枡錛岃繖涓垜榪樻病鏈変嬌鐢ㄨ繃銆?BR>
鏈鍚庨檮涓?涓嬌鐢╠wt寮鍙戠殑鐣岄潰(娉細鐢變簬鏈漢涓嶄範鎯畨瑁呮潃姣掕蔣浠訛紝涓嬭澆璇峰厛鏉姣?錛?/FONT>
1銆佷豢eclipse鐣岄潰錛?BR>http://m.shnenglu.com/Files/cpunion/dummyeclipse.rar
2銆乨wt鎺т歡婕旂ず錛?BR>http://m.shnenglu.com/Files/cpunion/controlexample.rar
鍦╳indows xp涓婚涓嬫晥鏋滄瘮杈冨ソ銆傝繖2涓▼搴忓湪鎴戠殑鏈哄櫒涓婂垎鍒彧鍗?.4M鍜?.2M鍐呭瓨錛屽惎鍔ㄦ椂闂翠篃涓嶈凍1縐掞紝涓嶈琚玡clipse鐨勫惎鍔ㄦ椂闂村悡鍧忎簡銆?BR>
鎵懼埌浜嗚繖2寮犲浘錛?BR>
2銆佽娣卞叆瀛︿範antlr銆?BR>寰堝鏃跺欙紝緙栫▼璇█涓嶆槸棰嗗煙鎻忚堪鐨勬渶浣寵璦錛岄渶瑕佹壘涓涓垨緙栧啓涓涓漿鎹㈠伐鍏楓?BR>antlr鍙互甯垜浠疄鐜頒竴涓嚜宸辮璦鐨勮瘝娉曞垎鏋愮▼搴忥紝鑰屼笉闇瑕佸繊鍙梱acc鐢熸垚鐨勫ぉ涔︿唬鐮併?/P>
3銆乴ua鍜宐oost::python銆?BR>澶ц嚧鐪嬩簡涓涓嬪畠浠寘瑁匔錛嬶紜綾葷殑鏂瑰紡錛屾湁鐐圭浉浼箋?BR>鎴戞墦綆楀仛涓涓狢錛嬶紜璇█鐨勮交閲忕駭鍒嗗竷寮忓寘瑁呭簱錛屾湁浜涘湴鏂瑰彲浠ュ弬鑰冦?/P>
4銆乸rolog銆?BR>婊″ソ鐜╃殑涓滆タ銆?/P>