µ±Ç°Î»ÖãºÊ×Ò³ > ϵͳÈí¼þ¿ª·¢Êµ¼ùʵÑ鱨¸æ(¼Æ¿Æ-4 ÐìÖñ)
¡¶ÏµÍ³Èí¼þ¿ª·¢Êµ¼ù¡· ʵÑ鱨¸æ µÚ7Ò³
µÄcgrammar-new.tab.cÎļþÖеÄÒ»¶Î´úÂ벢ɾȥ¡°if ( ! yyin )yyin = stdin¡±²Å¿ÉÒÔ±àÒëͨ¹ý£¨½âÎö֮ǰ£¬»¹ÒªÉèÖÃyyinΪÊäÈëÎļþÖ¸Õ룩£» 3¡¢ÔÚÃüÁîÐÐÀïÀûÓÃÉú³ÉµÄexeÎļþµ÷ÓòâÊÔÎļþµÃµ½½á¹û¡£
Î塢ʵÑéС½á
Ïà¶ÔÓÚflexÔ´Îļþ£¬bisonÔ´ÎļþµÄ±àд¸üΪ¼èÄÑ£¬µ«Í¨¹ýʵÑéÁ˽âÁËflexÓëbisonÁªºÏ±àÒëµÄ˼ÏëºÍ·½·¨£¬²¢Ã÷°×ÁËbison½«´Ê·¨·ÖÎö½×¶ÎµÄ¹æÔò½øÐкϲ¢µÄ¹ý³Ì£¬ÕâЩ½«ÓÐÖúÓÚÔÚ½ÓÏÂÀ´µÄʵÑéÖÐÍê³É¼òµ¥±àÒëÆ÷¡£
ʵÑéÈý£¨µÚÈýÖÜ£© ¼òµ¥×ÀÃæ¼ÆËãÆ÷
Ò»¡¢ÊµÑé˵Ã÷
ʹÓÃflexºÍbison¿ª·¢ÁËÒ»¸ö¾ßÓÐÈ«²¿¹¦ÄܵÄ×ÀÃæ¼ÆËãÆ÷£¬Äܹ»Ö§³Ö±äÁ¿£¬¹ý³Ì£¬Ñ»·ºÍÌõ¼þ±í´ïʽ£¬Ê¹Ëü³ÉΪһ¸öËäÈ»¶ÌСµ«ÊǾßÓÐÏÖʵÒâÒåµÄ±àÒëÆ÷¡£ ÖØµãѧϰ³éÏóÓï·¨Ê÷µÄÓ÷¨£¬Ëü¾ßÓÐÇ¿´ó¶ø¼òµ¥µÄÊý¾Ý½á¹¹À´±íʾ·ÖÎö½á¹û¡£
-
¡¶ÏµÍ³Èí¼þ¿ª·¢Êµ¼ù¡· ʵÑ鱨¸æ µÚ8Ò³
¸Ã¼ÆËãÆ÷¾ßÌåÐèҪʵÏֵŦÄܰüÀ¨±äÁ¿ÃüÃû¡¢ÊµÏÖ¸³Öµ¹¦ÄÜ¡¢ÊµÏֱȽϱí´ïʽ£¨´óÓÚ¡¢Ð¡ÓÚ¡¢µÈÓڵȵȣ©¡¢ÊµÏÖif/then/elseºÍdo/whileµÄÁ÷³Ì¿ØÖÆ¡¢Óû§¿ÉÒÔ×Ô¶¨Ò庯Êý£»¼òµ¥µÄ´íÎó»Ö¸´»úÖÆ¡£×îºó±àд²âÊÔ³ÌÐòʱÊ×ÏÈ×Ô¶¨ÒåÁ½¸öº¯ÊýsqºÍavg£¬sqº¯ÊýʹÓÃNewton·½·¨À´µü´ú¼ÆËãÆ½·½¸ù£»avgº¯Êý¼ÆËãÁ½¸öÊýÖµµÄƽ¾ùÖµ¡£ÀûÓö¨ÒåºÃµÄº¯Êý½øÐмÆË㣬µÃµ½¼ÆËã½á¹û²¢ÏÔʾ³öÀ´¡£
¶þ¡¢ÊµÑéÔÀíÓëÉè¼Æ·ÖÎö
»¹Òª·ÖÎöÏ£¬ÔÚBisonÓëFlexÁªÓÃʱ£¬BisonÖ»¶¨Òå±ê¼ÇµÄID¡£FlexÔòÐèÒªÖªµÀÕâЩ´Ê·¨±ê¼ÇµÄID£¬²ÅÄÜÔÚʶ±ðµ½Ò»¸ö´Ê·¨±ê¼Çʱ·µ»ØÕâ¸öID¸øBison¡£Bison´«µÝÕâЩID¸øFlexµÄ·½·¨£¬¾ÍÊÇÔÚµ÷ÓÃbisonÃüÁîʱʹÓòÎÊý-d¡£Ê¹ÓÃÕâ¸ö²ÎÊýºó£¬Bison»áÉú³ÉÒ»¸ö¶ÀÁ¢µÄÍ·Îļþ£¬¸ÃÎļþµÄÃû³ÆÐÎʽΪname.tab.h¡£ÔÚFlexµÄ´Ê·¨¹æÔòÎļþÖУ¬ÔÚ¶¨ÒåÇø¶ÎÀï°üº¬Õâ¸öÍ·Îļþ¼´¿É¡£
ÔÚ±àÒëÆ÷ÖÐ×îÇ¿´óµÄÊý¾Ý½á¹¹Ö®Ò»¾ÍÊdzéÏóÓïÓï·¨Ê÷¡£³éÏóÓï·¨Ê÷×÷ΪһÖÖͨÓõÄÖмä±íʾ,²»½ö°üº¬¸÷ÖÖÓïÑÔ¹²ÓеÄÓï·¨½á¹¹,Ä³Ð©ÌØ¶¨ÀàÐ͵ÄÊ÷½Úµã»¹¿ÉÒÔ±íʾһЩÓïÑÔÌØÓеÄÓï·¨½á¹¹¡£³éÏóÓï·¨Ê÷Ò×ÓÚת»»³É¼Ä´æÆ÷×ªÒÆÓïÑÔ,¶ø¼Ä´æÆ÷×ªÒÆÓïÑÔÊʺÏÔÚ²»Í¬Æ½Ì¨Ï½øÐÐÓÅ»¯,ÕâʹµÃGCCµÄÁ½²ãÖмä±íʾ¾ßÓÐÁ¼ºÃµÄͨÓÃÐÔ¡£
×÷ΪһÖÖÁ¼ºÃµÄÖмä±íʾ,³éÏóÓï·¨Ê÷°üº¬ÁËÍêÕûµÄÔ´³ÌÐòÐÅÏ¢¡£ÀûÓóéÏóÓï·¨Ê÷¿ÉÒÔʵÏÖ¶àÖÖÔ´³ÌÐò´¦Àí¹¤¾ß,±ÈÈçÖÇÄÜ±à¼Æ÷¡¢Ô´³ÌÐòä¯ÀÀÆ÷µÈ¡£´ËÍâ,³éÏóÓï·¨Ê÷µÄ½âÎöÆ÷Ò²¿ÉÒÔ×÷Ϊ³ÌÐò¾²Ì¬·ÖÎö¹¤¾ßµÄǰ¶Ë,ΪÆäÌṩһÖÖ±ãÓÚ·ÖÎöµÄÊäÈë¡£
³éÏóÓï·¨Ê÷½á¹¹±È½Ï¼òµ¥,Æä¶ÔÓ¦µÄ´Ê·¨¹æÔòºÍÓï·¨¹æÔòÒ×ÓÚ¹¹Ôì,ʹÓÃflexºÍbison¹¤¾ßÉú³ÉµÄ½âÎöÆ÷Äܹ»ÓÐЧµØ¶Ô³éÏóÓï·¨Ê÷½øÐнâÎö¡£½âÎöÆ÷ÓÉÈý²¿·Ö×é³É,·Ö±ðÊÇflexÉú³ÉµÄ´Ê·¨·ÖÎöÆ÷¡¢bisonÉú³ÉµÄÓï·¨·ÖÎöÆ÷ºÍÊÖ¹¤±àдµÄÇý¶¯³ÌÐò¡£´Ê·¨·ÖÎöÆ÷ʶ±ð³éÏóÓï·¨Ê÷ÎļþµÄ¼ÇºÅÁ÷,Ìṩ¸øÓï·¨·ÖÎöÆ÷;Óï·¨·ÖÎöÆ÷ÀûÓÃǶÈëÆäÖеÄÓïÒ嶯×÷ʶ±ðÓï·¨Ê÷½Úµã,Íê³É½âÎöÈÎÎñ;Çý¶¯³ÌÐò¸ºÔðΪ´Ê·¨·ÖÎöÆ÷ºÍÓï·¨·ÖÎöÆ÷Ìṩһ¸öµ÷ÓýӿÚ,²¢Ìṩ½âÎöËùÐèµÄÊý¾Ý½á¹¹ºÍº¯ÊýµÄʵÏÖ¡£
ÔÚ¼ÆËãÆ÷Àfactor½ö½öÊÇΪÁ˸æËßÓï·¨·ÖÎöÆ÷¸÷¸ö²Ù×÷·ûµÄÏà¶ÔÓÅÏȼ¶£¬³éÏóÓï·¨Ê÷¿ÉÒÔ°Ñ·ÖÎöÊ÷ÖеIJ»ÐèÒª¹Ø×¢µÄ½ÚµãÒÆ³ý¡£
Èý¡¢ÊµÑé²½ÖèºÍÉè¼ÆÊµÏÖ¹ý³Ì·ÖÎö
±¾²¿·ÖÖ÷Ҫ˵Ã÷һϼÆËãÆ÷µÄÉè¼Æ¹ý³ÌÒÔ¼°ÔÚÉè¼Æ¹ý³ÌÖÐÓõ½µÄÒ»Ð©ÖØµãËã·¨ºÍ˼ÏëµÈÄÚÈÝ¡£
1¡¢Ê×ÏÈÎÒÃÇÒª×ö¿ªÊ¼ÉùÃ÷²¿·Ö£¬ÔÚ.hÍ·ÎļþÖÐÎÒÃÇ¿ÉÒÔÓÃÒÔÏÂÓï¾äÀ´¶¨Òå³éÏóÓï·¨Ê÷µÄ
struct ast {int nodetype;struct ast *l;struct ast *r;};
-
¡¶ÏµÍ³Èí¼þ¿ª·¢Êµ¼ù¡· ʵÑ鱨¸æ µÚ9Ò³
½Úµã£¬ÇÒËùÓнڵ㶼Óй«¹²µÄ³õʼnodetype¡£¶øÉ¾³ýºÍÊͷųéÏóÓï·¨Ê÷¿ÉÒÔÓÃÓï¾ävoid treefree(struct ast *)À´ÊµÏÖ¼´¿É¡£³£Á¿Ê¹ÓÃnumval£¬·ûºÅÒýÓÃʹÓÃsymref ¸³ÖµÊ¹ÓÃsymasgn£¬ËüÓÐÒ»¸öÖ¸Ïò±»¸³Öµ·ûºÅµÄÖ¸ÕëºÍʹÓóéÏóÓï·¨Ê÷±íʾµÄÖµ£» 2¡¢Óï·¨·ÖÎöÆ÷µÄÉè¼Æ£¬ÆäÖÐÔÚÓï·¨·ÖÎöÆ÷µÄ×îºóÌṩÁËС²¿·Ö´íÎó»Ö¸´»úÖÆ£¬ÕâÈÃÎÒÃÇÓпÉÄÜÔÚ´íÎó·¢Éúʱ°ÑÓï·¨·ÖÎöÆ÷»Ö¸´µ½¿ÉÒÔ¼ÌÐø¹¤×÷µÄ״̬£»
3¡¢´Ê·¨·ÖÎöÆ÷ÖÐÉè¼ÆÁù¸ö±È½Ï²Ù×÷·û¶¼·µ»ØÒ»¸ö´øÓÐ×ÖÃæÖµÒÔ±ãÓÚÇø·ÖµÄCMP¼ÇºÅ£¬ÆäÖÐÕâÁù¸ö¹Ø¼ü×ÖºÍËĸöÄÚÖú¯Êýͨ¹ýÎÄ×Öģʽ¼ÓÒÔʶ±ð£¬ËüÃÇ·ÅÔÚͨÓÃģʽ֮ǰÒÔ±ãÓÚÔÚͨÓÃģʽ֮ǰ½øÐÐÆ¥Å䣻
4¡¢×îºó»¹Òª¼ÓÒ»¸ö¸¨Öúº¯Êý£¬ÕýÈç¡¶flexÓëbison¡·ÖÐËù½²µÄÒ»Ñù£¬Àý³ÌtreefreeµÄÀ©Õ¹°æ±¾»áµÝ¹éµÄ±éÀúÒ»¿Å³éÏóÓï·¨Ê÷²¢ÊÍ·ÅÕâ¿ÃÊ÷µÄËùÓнڵ㡣±¾¼ÆËãÆ÷µÄºËÐÄÀý³ÌÊÇeval£¬ËüÓÃÀ´¼ÆËã·ÖÎöÆ÷Öй¹ÔìµÄ³éÏóÓï·¨Ê÷¡£ÎÒÃDzÉÓÃÉî¶ÈÓÅÏȱéÀúËã·¨À´¼ÆËã±í´ïʽµÄÖµ£»
5¡¢Íê³ÉÒÔÉϹ¤×÷ºóÎÒÃǾͿÉÒÔÔÚÃüÁîÐÐÀïÒÀ´ÎÊäÈëÖ¸ÁîµÃµ½ÔËÐнá¹ûÁË£º
ËÄ¡¢ÊµÑéС½á
ʹÓÃbisonºÍflex¹¤¾ßѧϰ±àÒëÔÀí£¬Ô¶±Èµ¥¶À¿´ÊéÈ»ºó×Ô¼º±àдһЩ³ÌÐòÉú¶¯µÄ¶à¡£ÕâÑùÄã¾Í²»»áÔÚÄÇЩ¸´ÔÓµÄ×Ö·û´¦Àí¡£µ«¶ÔÓÚ³õѧÕßÀ´Ëµ£¬ÍêÈ«±àÒë³öÀ´±¾´ÎÊÔÑéµÄ×ÀÃæ¼ÆËãÆ÷µÄ±àÒëÆ÷»¹ÊÇͦÀ§Äѵġ£Òò´Ë±¾´Î¼ÆËãÆ÷µÄʵÏÖÖ÷Òª»¹ÊÇÒÀ¿¿flexÓëbisonÕâ±¾ÊéµÄ°ïÖú²ÅµÃÒÔʵÏÖ¡£±¾¼ÆËãÆ÷ËäÈ»¶ÌСµ«È´ºÜ¾ßÓдú±íÒâÒå¡£ÎÒÃÇÌí¼ÓÁËÃüÃûµÄ±äÁ¿ºÍ¸³Öµ¡¢±È½Ï±í´ïʽ¡¢ifºÍthenµÈµÄÁ÷³Ì¿ØÖÆÄÚÖúÍÓû§×Ô¶¨Ò庯ÊýÒÔ¼°´íÎó»Ö¸´»úÖÆµÈ¡£
ʵÑéËÄ£¨µÚËÄÖÜ£© ²Ù×÷ϵͳʵÑ飨Lab0ʵÑ飩
Ò»¡¢ÊµÑéÄ¿µÄ
1¡¢ÕÆÎÕOS»ù±¾¸ÅÄ¿´ÔÚÏ߿γ̣¬ÄÜÀí½âOSÔÀíÓë¸ÅÄ¿´ÔÚÏßʵÑéÖ¸µ¼Êé²¢·ÖÎöÔ´Â룬ÄÜÀí½âlabcodes_answerµÄlabsÔËÐнá¹û£»
2¡¢ÕÆÎÕOSÉè¼ÆÊµÏÖ£ºÔÚ1µÄ»ù´¡ÉÏ£¬Äܹ»Í¨¹ý±à³ÌÍê³ÉlabcodesµÄ8¸ölabʵÑéÖеÄ
-
¡¶ÏµÍ³Èí¼þ¿ª·¢Êµ¼ù¡· ʵÑ鱨¸æ µÚ10Ò³
»ù±¾Á·Ï°ºÍʵÑ鱨¸æ£»
3¡¢±¾´Îlab0ʵÑéÖ÷ÒªÊÇÈÃÎÒÃÇÊìϤʵÑé»·¾³ÒÔ±ãÓÚºóÐøµÄʵÑé²Ù×÷¡£
¶þ¡¢ÊµÑé˵Ã÷
ucoreµÄÔËÐл·¾³¿ÉÒÔÊÇÕæÊµµÄX86¼ÆËã»ú£¬²»¹ý¿¼Âǵ½µ÷ÊԺͿª·¢µÄ·½±ã£¬ÎÒÃǿɲÉÓÃX86Ó²¼þÄ£ÄâÆ÷£¬±ÈÈçQEMU¡¢BOCHS¡¢VirtualBox¡¢VMware ¡¢PlayerµÈ¡£ucoreµÄ¿ª·¢»·¾³Ö÷ÒªÊÇGCCÖеÄgcc¡¢gas¡¢ldºÍMAKEµÈ¹¤¾ß£¬Ò²¿É²ÉÓü¯³ÉÁËÕâЩ¹¤¾ßµÄIDE¿ª·¢»·¾³Eclipse-CDTµÈ¡£ÔÚ·ÖÎöÔ´´úÂëÉÏ£¬¿ÉÒÔ²ÉÓÃScitoolsÌṩµÄunderstandÈí¼þ£¨¿çƽ̨£©£¬windows»·¾³ÉϵÄsource¡¢insightÈí¼þ£¬»òÕß»ùÓÚemacs+ctags£¬vim+ctagsµÈ£¬¶¼¿ÉÒԱȽϷ½±ãÔÚÔÚÒ»¶ÑÎļþÖвéÕÒ±äÁ¿¡¢º¯Êý¶¨Òå¡¢µ÷ÓÃ/·ÃÎʹØÏµµÈ¡£Èí¼þ¿ª·¢µÄ°æ±¾¹ÜÀí¿ÉÒÔ²ÉÓÃGIT¡¢SVNµÈ¡£±È½ÏÎļþºÍĿ¼µÄ²»Í¬¿É·¢ÏÖ²»Í¬ÊµÑéÖеIJîÒìÐԺͽøÐÐÎļþºÏ²¢²Ù×÷£¬¿ÉʹÓÃmeld¡¢kdiff3¡¢UltraCompareµÈÈí¼þ¡£µ÷ÊÔ£¨deubg£©ÊµÑéÓÐÖúÓÚ·¢ÏÖÉè¼ÆÖеĴíÎ󣬿ɲÉÓÃgdb£¨ÅäºÏqemu£©µÈµ÷ÊÔ¹¤¾ßÈí¼þ¡£²¢¿ÉÕû¸öʵÑéµÄÔËÐл·¾³ºÍ¿ª·¢»·¾³¼È¿ÉÒÔÔÚLinux»òWindowsÖÐʹÓá£
¹ØÓÚʵÑé»·¾³µÄÅäÖûù±¾ÊÇÓÐÎåÖÖ·½Ê½£¨ÔÚÏßʵÑé--»ùÓÚ\ʵÑéÂ¥\ÔÚÏ߯½Ì¨¡¢WindowsÏ»ùÓÚMingW½øÐÐʵÑé¡¢WindowsÏ»ùÓÚVirtualBox or VMWare½øÐÐʵÑé¡¢ÔÚMAC OSϽøÐÐʵÑéºÍÊÖ¶¯ÔÚÎïÀíPCÖа²×°»·¾³£©£¬ÎÒÑ¡ÔñµÄÊÇÊÖ¶¯ÔÚ×Ô¼ºµÄµçÄÔÉÏÉϰ²×°ubuntu²¢ÔÚubuntuϵͳÖа²×°ÊµÑé»·¾³Ïà¹ØÈí¼þÔÚshell£¨±ÈÈçgnome-terminal£©Ï¿ÉÖ´ÐÐÏà¹ØÃüÁîÀ´°²×°Ïà¹ØÈí¼þ¡£ÒÔÏÂÊÇÔÚ×Ô¼ºµÄ±Ê¼Ç±¾Éϰ²×°ÊµÑé»·¾³³É¹¦µÄ½ØÍ¼£º
LinuxÎļþϵͳ±»×éÖ¯³ÉÒ»¸öÓвã´ÎµÄÊ÷Ðνṹ¡£ÎļþϵͳµÄ×îÉϲãÊÇ /£¬»ò³ÆÎª ¸ùĿ¼¡£ÔÚ Unix ºÍ Linux µÄÉè¼ÆÀíÄîÖУ¬Ò»ÇнÔΪÎļþ¡ª¡ª°üÀ¨Ó²ÅÌ¡¢·ÖÇøºÍ¿É²å°Î½éÖÊ¡£Õâ¾ÍÒâζ×ÅËùÓÐÆäËüÎļþºÍĿ¼£¨°üÀ¨ÆäËüÓ²Å̺ͷÖÇø£©¶¼Î»ÓÚ¸ùĿ¼ÖС£ ÀýÈ磺/home/jebediah/cheeses.odt ¸ø³öÁËÕýÈ·µÄÍêÕû·¾¶£¬ËüÖ¸Ïò cheeses.odt Îļþ£¬¶ø¸ÃÎļþλÓÚ jebediah Ŀ¼Ï£¬¸ÃĿ¼ÓÖλÓÚ home Ŀ¼£¬×îºó£¬home Ŀ¼ÓÖλÓÚ¸ù(/) Ŀ¼Ï¡£ Á˽âÕâЩ¶Ô½ñºó¸üÉîÒ»²½Á˽â²Ù×÷ϵͳµÄ½á¹¹ÓÈÎªÖØÒª¡£ ʹÓÃÃüÁîÐв¢²»ÏñÄúÏëÏóµÄÄÇôÀ§ÄÑ¡£Ê¹ÓÃÃüÁîÐв»ÐèҪרÃÅ֪ʶ£¬ºÍÆäËüÈí¼þÒ»Ñù£¬ËüÒ²½ö½öÊÇÒ»¸ö³ÌÐò¡£Linux Öоø´ó²¿·Ö¹¤×÷¶¼¿ÉÒÔÓÃÃüÁîÐÐÍê³É£¬¾¡¹Ü´ó²¿·Ö³ÌÐò¶¼ÓÐÏàÓ¦µÄͼÐι¤¾ß£¬µ«ÓÐʱÕâЩͼÐι¤¾ß»á×½½ó¼ûÖ⣬²»¹»ÓᣴËʱ±ãÊÇÃüÁîÐдóÏÔÉíÊÖµÄʱºò¡£ Öն˳£³£±»³ÆÎªÃüÁîÐлòÕß shell¡£
QEMUÊÇÒ»¸öͨÓò¢¿ª·ÅÔ´´úÂëµÄÄ£ÄâÆ÷£¬ÊÇÒ»Ì×ÓÉFabrice BellardËù±àдµÄÒÔGPLÐí¿ÉÖ¤·Ö·¢Ô´ÂëµÄÄ£Äâ´¦ÀíÆ÷£¬ÔÚGNU/Linuxƽ̨ÉÏʹÓù㷺¡£Æä¹¦ÄÜÏ൱µÄÇ¿´ó£¬ÀýÈ磺
-
¹²·ÖÏí92ƪÏà¹ØÎĵµ