±àÒëÔ­Àí¾­µäËã·¨µÄ¿ÉÊÓ»¯ÊµÏÖ - ͼÎÄ

±àÒëÔ­Àí¾­µäËã·¨µÄ¿ÉÊÓ»¯ÊµÏÖ #include #include¡±y.tab.h¡± Char *yylval; %}

9

±àÒëÔ­Àí¾­µäËã·¨µÄ¿ÉÊÓ»¯ÊµÏÖ

3 ´Ê·¨·ÖÎöÆ÷¶¯Ì¬ÑÝʾµÄÉè¼ÆÓëʵÏÖ

3.1 ´Ê·¨·ÖÎöÆ÷ÃèÊöÓïÑÔ

ĿǰÓкܶàͨ¹ý»ùÓÚÕý¹æ±í´ïʽ¹¹½¨´Ê·¨·ÖÎöÆ÷µÄ¹¤¾ß¡£Ç°ÃæÎÒÃÇÒѾ­ÖªµÀÁË¿ÉÒÔÓÃLex¹¤¾ßÀ´¹¹½¨´Ê·¨·ÖÎöÆ÷¡£Lex¿ÉÒԹ㷺µØÓ¦ÓÃÓÚ¸÷ÖÖÔ¤ÑÔ´Ê·¨·ÖÎöÆ÷µÄÃèÊö¡£ÎÒÃdzÆÕâÖÖ¹¤¾ßΪLex±àÒëÆ÷£¬¶øLex±àÒëÆ÷µÄÊäÈë³ÆÎªLexÓïÑÔ¡£ÎÒÃǽ«Ê¹ÓÃÀàLexÓïÑÔÀà˵Ã÷´Ê·¨·ÖÎöÆ÷£¬²¢´æ´¢Öмä½á¹û£¬ÓÃÓÚ´Ê·¨·ÖÎöÆ÷µÄ¶¯Ì¬ÑÝʾ¡£ 3.1.1 Lex˵Ã÷

Ò»¸öLex³ÌÐòÓÉÈçÏÂÈý²¿·Ö×é³É£º

ÉùÃ÷²¿·Ö %% ת»»¹æÔò %% ¸¨Öú¹ý³Ì

ÉùÃ÷²¿·Ö°üÀ¨±äÁ¿ÉùÃ÷£¬·ûºÅ³£Á¿ÉùÃ÷ºÍÕý¹æ¶¨Òå¡££¨·ûºÅ³£Á¿ÊDZ»ÉùÃ÷À´±íʾ³£ÊýµÄ±êʶ·û¡££©Õý¹æ¶¨Òå¾Í×÷Ϊת»»¹æÔòÖÐÕý¹æ±í´ïʽÖеIJ¿·Ö¡£

Lex³ÌÐòµÄת»»¹æÔòÊÇÈçÏÂÐÎʽµÄÓï¾ä£º P1 {action1} P2 {action2} ¡­ ¡­

Pn {actionn}

ÆäÖÐÿ¸öpiÊÇÒ»¸öÕý¹æ±í´ïʽ£¬Ã¿¸öactioni±íʾµ±Ä£Ê½iÆ¥ÅäÉÏÒ»¸ö´ÊËØºó´Ê·¨·ÖÎöÆ÷ÒªÖ´ÐеijÌÐò¶Î¡£ÔÚLexÖУ¬ÕâЩactionÊÇÓÃCÓïÑÔ±àдµÄ£¬µ±È»Ò²¿ÉÒÔÓÃÆäËûÓïÑÔÀ´ÊµÏÖ¡£

ÎÒÃǽ«actionËùÐèÒªµÄ¸¨Öú¹ý³Ì·ÅÔÚLexµÄµÚÈý²¿·Ö¡£ÕâЩ¹ý³ÌÒ²¿ÉÒÔµ¥¶À±àÒ룬

10

±àÒëÔ­Àí¾­µäËã·¨µÄ¿ÉÊÓ»¯ÊµÏÖ ²¢Óë´Ê·¨·ÖÎöÆ÷Ò»Æð×°ÔØ¡£

ÓÉLex×Ô¶¯Éú³ÉµÄ´Ê·¨·ÖÎöÆ÷ÓëÓï·¨·ÖÎöÆ÷¹²Í¬¹¤×÷µÄ·½Ê½ÈçÏ£ºÊ×ÏÈ£¬Óï·¨·ÖÎöÆ÷µ÷Óôʷ¨·ÖÎöÆ÷ºó£¬´Ê·¨·ÖÎöÆ÷´Ó»¹Î´É¨ÃèµÄÊäÈë×Ö·û´®ÖжÁ×Ö·û£¬¶øÃ¿´Î¶ÁÈëÒ»¸ö×Ö·û£¬Õâ¸ö¹ý³ÌÖ±µ½·¢ÏÖÄÜÓëij¸öÕý¹æ±í´ïʽƥÅäµÄ×ǰ׺¡£½ÓÏÂÀ´£¬´Ê·¨·ÖÎöÆ÷Ö´ÐÐÄÇЩ¶¯×÷£¨action£©¡£Í¨³£ÄÇЩ¶¯×÷Ò²»á½«¿ØÖƽ»¸øÓï·¨·ÖÎöÆ÷¡£½ÓÏÂÀ´£¬¼ÙÉè²»½«¿ØÖƽ»¸øÓï·¨·ÖÎöÆ÷£¬ÄÇô´Ê·¨·ÖÎöÆ÷¿ÉÒÔ¼ÌÐø·¢ÏÖ¸ü¶àµÄ´ÊËØ£¬Ö±µ½Ä³¸ö²Ù×÷½«¿ØÖƽ»¸øÓï·¨·ÖÎöÆ÷¡£´Ê·¨·ÖÎöÆ÷µÄÕâÖÖ²»¶Ï²éÕÒ´ÊËØ£¬Ö±µ½ÒÔÏÔʽµÄµ÷ÓýáÊø¹¤×÷µÄ·½Ê½£¬Ê¹Æä¿ÉÒÔ·½±ãµØ´¦Àí»»ÐС¢¿Õ°×·ûºÍ×¢ÊÍ¡£¶ø´Ê·¨·ÖÎöÆ÷Ö»·µ»Ø¼ÇºÅ¸øÓï·¨·ÖÎöÆ÷£¬´øÓÐÓë´ÊËØÏà¹ØÐÅÏ¢µÄÊôÐÔÖµÊÇͨ¹ýÈ«¾Ö±äÁ¿yylval´«µÝµÄ¡£ 3.1.2 ³¬Ç°É¨Ãè²Ù×÷

¶ÔÓÚijЩ³ÌÐòÉè¼ÆÓïÑԽṹ£¬´Ê·¨·ÖÎöÆ÷ÐèÒª³¬Ç°É¨Ãè´ÊËØºóÃæµÄÈô¸É×Ö·ûÀ´È·¶¨Ò»¸ö¼ÇºÅ¡£¼ÙÉèÓÐÕâÑùµÄFortranÓï¾äÀý×Ó£º DO 5 I = 1.25 DO 5 I = 1,25

ÔÚFortranÖУ¬³ýÁËÔÚ×¢ÊͺÍHollerith´®ÖÐÖ®Í⣬¿Õ¸ñ²»´ú±íÈκÎÒâÒå¡£ÎÒÃÇ¿ÉÒÔÈÏΪÔÚ´Ê·¨·ÖÎöÆ÷¿ªÊ¼¹¤×÷ʱ£¬ËùÓеĿոñ¶¼ÒѾ­È¥µô¡£ÕâÑù£¬ÉÏÃæµÄÁ½¸öÓï¾ä¾Í±äΪÈçÏÂÐÎʽ£º

DO5I=1.25 DO5I=1,25

ÔÚµÚÒ»¸öÓï¾äÖУ¬Ö±µ½´Ê·¨·ÖÎöÆ÷·¢ÏÖÁËСÊýµãºó²Å¿ÉÒԶ϶¨DOÊDZêʶ·ûDO5IµÄÒ»²¿·Ö¡£ÔÚÕâ¸öÓï¾äÖУ¬DOÊǹؼü×Ö¡£

ÔÚLexÖÐÎÒÃǽ«Ä£Ê½Ð´³Éy1/y2µÄÐÎʽ£¬ÆäÖеÄy1ºÍy2ÊÇÕý¹æ±í´ïʽ¡£¶øËüµÄÒâ˼Êǵ±Ò»¸ö×Ö·û´®Óëy1Æ¥Åäʱ£¬»¹ÐèÒªÆäºóµÄ×Ö·û´®Óëy2Æ¥Åä¡£ÕâÑù²ÅËã¸Ã×Ö·û´®Óëy1Æ¥Åä³É¹¦¡£ÔÚ³¬Ç°É¨Ãè²Ù×÷·û/ºóÃæµÄÕý¹æ±í´ïʽy2±íʾÐèÒª½øÒ»²½Æ¥ÅäµÄÄÚÈÝ£¬ÕâÀïËüÖ»ÊÇÆ¥ÅäģʽµÄÒ»¸öÏÞÖÆ£¬¶ø²»ÊÇÆ¥ÅäµÄÒ»²¿·Ö¡£ÀýÈ磬½«ÉÏÊöÓï¾äÖеÄDOʶ±ðΪ¹Ø¼ü×ÖµÄ˵Ã÷ÈçÏ£º

DO/({letter}|{digit})*=({letter}|{digit})*,

¸ù¾ÝÕâ¸ö˵Ã÷£¬´Ê·¨·ÖÎöÆ÷ÔÚÊäÈ뻺³åÈ¥³¬Ç°µØÉ¨ÃèÒ»´®×Öĸ»òÊý×Ö£¬½Ó×ÅɨÃèµÈ

11

±àÒëÔ­Àí¾­µäËã·¨µÄ¿ÉÊÓ»¯ÊµÏÖ ºÅÒÔ¼°ºóÃæµÄÒ»´®×Öĸ»òÊý×Ö£¬ËæºóɨÃèµ½¶ººÅ²ÅÄܹ»ÅжϳöÕâÊDz»ÊÇÒ»¸öºÏ·¨µÄ¸³ÖµÓï¾ä¡£µ«Ö»Óг¬Ç°É¨Ãè·ûÇ°ÃæµÄDºÍO²ÅÊÇÓëģʽƥÅäµÄ´ÊËØµÄ²¿·Ö¡£¾­¹ý³É¹¦µÄÆ¥Å䣬yytextÖ¸ÕëÖ¸Ïò×Ö·ûD²¢ÇÒyyleng=2.ÎÒÃÇÒªÒâʶµ½Õâ¸ö¼òµ¥µÄ³¬Ç°É¨ÃèģʽʹµÃµ±DOºóÃæ¸ú×ÅһЩÎÞÒâÒåµÄ·ûºÅ£¨Èç7Q£©Ê±Ò²»áʶ±ð³öDO£¬µ«Ëü¾ø²»»á°Ñ×öΪ±êʶ·ûÒ»²¿·ÖµÄDOʶ±ðΪһ¸ö´ÊËØ¡£ 3.1.3 Lex±à³Ì

ÎÒÃÇÔÚWindowsƽ̨ÏÂÏÂÔØ°²×°flex¹¤¾ß²¢ÉèÖúÃËüµÄ»·¾³±äÁ¿£¬¶øÓÉÓÚÎÒÃÇʹÓõÄflexÊÇGNUµÄ¹¤¾ß£¬ËùÒÔΪÁË·½±ã£¬²ÉÓõÄC/C++±àÒëÆ÷Ò²²ÉÓÃGNUµÄ±àÒëÆ÷GCC£¬µ±È»ÎÒÃÇÐèÒªµÄÒ²ÊÇWindows°æ±¾µÄGCC¡£

ÖÁ´ËÎÒÃÇÒÑÍòʾ㱸£¬ÎÒÃÇ¿ÉÒÔ¿ªÊ¼±àдFlexµÄÔ´ÎļþÁË¡£

£¨1£©Ð½¨Îı¾Îļþ£¬½«Æä¸üÃûΪlex.l£¬µ±È»ÕâÃû×ÖÎÞÌØ±ðº¬Ò壬Äã¿ÉÒÔ×Ô¼ºÃüÃû£¬È»ºóÔÚÕâ¸öÎļþÖÐдÈëFlexµÄÔ´´úÂë¡£

£¨2£©´ò¿ªWindowsµÄ¿ØÖÆÃüÁį̂£¬Èçͼ3.1Ëùʾ£¬ÎÒÃǶÔlex.lÔËÐÐFlexÃüÁî,ÕâʱÎÒÃǾͿÉÒÔ¿´µ½´ËʱÎļþ¼Ð¶àÁËÒ»¸öÎļþ£¬´ËÎļþ¼´ÊÇFlexÉú³ÉɨÃèÆ÷µÄC´úÂë¡£

ͼ3.1 Flex±àÒë¹ý³Ì

£¨3£©È»ºóÎÒÃÇÓÃgccÀ´±àÒëºÍÁ´½ÓC´úÂ룬ÕâÑù¾ÍÉú³É¿ÉÖ´ÐеÄɨÃèÆ÷¡£ ÔÚÕâÀÎÒÃÇΪÁ˽ÓÏÂÀ´Äܶ¯Ì¬ÑÝʾ´Ê·¨·ÖÎöÆ÷£¬ÎÒÃÇÔÚģʽºóÃæ¶¨ÒåÁË×Ô¼ºµÄ¶¯×÷£¬¾ÍÊÇÆ¥ÅäÍê³Éºó£¬½«¸Ãµ¥´ÊµÄÀàÐÍÂëºÍÊôÐÔÖµÊä³öµ½Ò»¸öÎļþÖС£

3.2´Ê·¨·ÖÎöÆ÷¶¯Ì¬ÑÝʾµÄʼþʵÏÖ

3.2.1 ´Ê·¨·ÖÎöÆ÷¶¯Ì¬ÑÝʾµÄÖ´ÐÐʼþ

ÔÚÕâ¸ö´Ê·¨·ÖÎöÆ÷¶¯Ì¬ÑÝʾ³ÌÐòÖУ¬µ±ÎÒÃǵã»÷Ö´Ðа´Å¥Ê±£¬³ÌÐò¾Í»á¶ÔRichtextboxÖеÄÄÚÈÝÉú³ÉtxtÎļþ£¬È»ºóÓôʷ¨·ÖÎöÆ÷¶ÔÕâ¸öÎļþÖеĵ¥´Ê½øÐдʷ¨·Ö

12

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)