① 我想用JAVA做个简易编译器,说说思路,或者有没有现成的代码JAVAC的代码有吗
要写编译器?自己开发语言?很牛X,先赞一个!
自己写编译器,原理其实不难,就那么点东西。找一个编译原理看明白就OK了,词法、语法、语义、语境。
这些东西用一些自动机,图灵机,范式,正规之类的就可以搞定。分析嘛,什么逆波兰,树形,一共也没几种的。
但最难做的是优化,还有机器代码生成这二部分。
优化怎么做?你的中间代码放哪?先优化还是先生成中间代码?
机器代码怎么搞?用汇编?还是直接和机器特性相关?
反正这二点我是晕,虽然原理还是那点东西,但真搞起来,我一点思路都没有。。。
国内写编译器的有,但都不是很牛X。
想要写好,还得多看E文资料。
加油吧。
② C语言编译器是什么
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。[2]
二十世纪八十年代,美国国家标准局为了避免各开发厂商用的C语言语法产生差异,给C语言制定了一套完整的美国国家标准语法,称为ANSI C。作为C语言最初的标准。[3]2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows, Mac OS X, Linux, Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
例:
#include <stdio.h>
int main() {
printf("Hello,world!");
return 0;
}
编译运行将输出: Hello,world!
③ 鐢–璇瑷缂栦竴涓绋嫔簭锛岃緭鍏ヤ竴涓鍦嗭纴杈揿嚭锻ㄩ暱銆
缂栧啓绋嫔簭锛
# include<stdio.h>
void main()
{
float r,c,s;
printf("璇疯緭鍏ュ浑镄勫崐寰勶细 ");
scanf("%f",&r); /*鐢ㄤ簬杈揿叆涓涓娴镣规暟鎹瀛樻斁浜庡湴鍧&r*/
c=2*3.1415926*r; /*璁$畻锻ㄩ暱锛岃祴鍊肩粰C*/
s=3.1415926*r*r; /*鐢ㄤ簬璁$畻闱㈢Н*/
printf("锻ㄩ暱c=%8.4f锛沑n闱㈢Нs=%8.4f ",c,s); /*锻ㄩ暱锛岄溃绉閮芥槸8涓瀛楃﹀斤纴4浣嶅皬鏁*/
}
缂栬疟锛岃繛鎺ワ纴杩愯屼慨鏀归敊璇锛
镓╁𪾢璧勬枡锛
C璇瑷鏄涓闂ㄩ氱敤璁$畻链虹紪绋嬭瑷锛屽箍娉涘簲鐢ㄤ簬搴曞眰寮鍙戙侰璇瑷镄勮捐$洰镙囨槸鎻愪緵涓绉嶈兘浠ョ亩鏄撶殑鏂瑰纺缂栬疟銆佸勭悊浣庣骇瀛桦偍鍣ㄣ佷骇鐢熷皯閲忕殑链哄櫒镰佷互鍙娄笉闇瑕佷换浣曡繍琛岀幆澧冩敮鎸佷究鑳借繍琛岀殑缂栫▼璇瑷銆
灏界C璇瑷鎻愪緵浜呜稿氢绠绾у勭悊镄勫姛鑳斤纴浣嗕粛铹朵缭鎸佺潃镩濂借法骞冲彴镄勭壒镐э纴浠ヤ竴涓镙囧嗳瑙勬牸鍐椤嚭镄凛璇瑷绋嫔簭鍙鍦ㄨ稿氱数鑴戝钩鍙颁笂杩涜岀紪璇戯纴鐢氲呖鍖呭惈涓浜涘祵鍏ュ纺澶勭悊鍣锛埚崟鐗囨満鎴栫ОMCU锛変互鍙婅秴绾х数鑴戠瓑浣滀笟骞冲彴銆
浜屽崄涓栫邯鍏鍗佸勾浠o纴涓轰简阆垮厤钖勫紑鍙戝巶鍟嗙敤镄凛璇瑷璇娉曚骇鐢熷樊寮傦纴鐢辩编锲藉浗瀹舵爣鍑嗗眬涓篊璇瑷鍒跺畾浜嗕竴濂楀畬鏁寸殑缇庡浗锲藉舵爣鍑呜娉曪纴绉颁负ANSI C锛屼綔涓篊璇瑷链鍒濈殑镙囧嗳銆[1]鐩鍓2011骞12链8镞ワ纴锲介檯镙囧嗳鍖栫粍缁囷纸ISO锛夊拰锲介檯鐢靛伐濮斿憳浼氾纸IEC锛夊彂甯幂殑C11镙囧嗳鏄疌璇瑷镄勭涓変釜瀹樻柟镙囧嗳锛屼篃鏄疌璇瑷镄勬渶鏂版爣鍑嗭纴璇ユ爣鍑嗘洿濂界殑鏀鎸佷简姹夊瓧鍑芥暟钖嶅拰姹夊瓧镙囱瘑绗︼纴涓瀹氱▼搴︿笂瀹炵幇浜嗘眽瀛楃紪绋嬨
C璇瑷鏄涓闂ㄩ溃钖戣繃绋嬬殑璁$畻链虹紪绋嬭瑷锛屼笌C++锛孞ava绛夐溃钖戝硅薄镄勭紪绋嬭瑷链夋墍涓嶅悓銆
鍏剁紪璇戝櫒涓昏佹湁Clang銆丢CC銆乄IN-TC銆丼UBLIME銆丮SVC銆乀urbo C绛夈
鍙傝冭祫鏂欙细C璇瑷钬斺旂栌搴︾栌绉
④ c璇瑷缂栫▼镐庢牱杩愯岀▼搴忥纻
杩愯岀▼搴忔ラわ细
1.缂栬緫锛氲緭鍏ユ簮绋嫔簭骞跺瓨鐩(.C)
2.缂栬疟锛氩皢婧愮▼搴忕炕璇戜负鐩镙囨枃浠(.OBJ)
3.阈炬帴锛氩皢鐩镙囨枃浠剁敓鎴愬彲镓ц屾枃浠( .EXE)
4.杩愯岋细镓ц.EXE鏂囦欢,寰楀埌杩愯岀粨鏋溿
涓婃満1 C璇瑷绠鍗旷▼搴忕殑缂栧啓鍜岃皟璇
𨰾揿𪾢璧勬枡:
C璇瑷鏄涓闂ㄩ氱敤璁$畻链虹紪绋嬭瑷锛屽簲鐢ㄥ箍娲炴淳娉涖侰璇瑷镄勮捐$洰镙囨槸鎻愪緵涓绉嶈兘浠ョ亩鏄撶殑鏂瑰纺缂栬疟銆佸勭悊浣庣骇瀛桦偍鍣ㄣ佷骇鐢熷皯閲忕殑链哄櫒镰佷互鍙娄笉闇瑕佷换浣曡繍琛岀幆澧冩敮鎸佷究鑳借繍琛岀殑缂栫▼璇瑷銆俢 璇瑷搴旂敤绋嫔簭涓婃満杩囩▼鍏蜂綋姝ラゅ备笅锛
镓揿紑VC++ 6.0绋嫔簭 2銆佺偣钬沧枃浠垛濓纴钬沧柊寤衡溿
鍦ㄦ柊寤鸿倖鍑椤甸溃涓婄撼闆硅春阃夋嫨鏂囦欢鈫扖++ Source File 骞跺湪鍙宠竟缂栬緫鏂囦欢钖岖О锛岄夋嫨淇濆瓨浣岖疆锛岀‘瀹氥
绠鍗旷▼搴忕ず锣冦
榧犳爣鍙抽敭Compile(Ctrl+F7)濡傚浘锛岀‘瀹氢袱娆★纴娉ㄦ剰涓嬫柟鍙镆ョ湅阌栾锛屽彲涓娄笅𨰾夊姩銆傜‘瀹氭棤阌欎箣钖庯纴鍙抽敭Build(F7)濡傚浘锛屽悓镙锋敞镒忎笅鏂规槸钖﹀嚭鐜伴梾棰桡纴链钖庡彸阌瓸uildExecute(Ctrl+F5)銆傚畬鎴愩
鍙傝冭祫鏂:銆愩恈璇瑷_锏惧害锏剧戙戙