ÎÒÃÇ´ÓÊäÈëÖжÁÈ¡¡°.¡±²¢ÊÔͼ»¹ÔËü£¬µ«ÊÇʧ°ÜÁË¡£ D DL DL .
Ëû²»ÄÜ»¹Ô³ÉÆäËüµÄ¶«Î÷£¬ËùÒÔÎÒÃǼÌÐø¶ÁÈ¡ÆäËüÊäÈë¡°1¡±£¬²¢°ÑËü»¹Ô³ÉD£¬ÔÚ¶ÁÈ¡ÏÂÒ»¸öÊäÈë¡°4¡±, ¡°4¡±Ò²¿ÉÒÔ»¹Ô³ÉD£¬ÔÙ»¹Ô³ÉDL£¬È»ºó£¬¡°D DL¡±ÐòÁпÉÒÔ½øÒ»²½»¹Ô³ÉDL¡£ DL . DL . 1 DL . D DL . D 4 DL . D D DL . D DL DL . DL
¿´Ò»ÏÂÓï·¨¾Í»á·¢ÏÖFNÇ¡ºÃÄܹ»»¹Ô¡°DL.DL¡±ÐòÁУ¬ÓÚÊǽ«Æä»¹Ô¡£FNÊÇ´ÓS²úÉúµÄ£¬ËùÒÔFN¿ÉÒÔ»¹Ô³ÉS£¬µ½´ËΪֹ¾ÍÍê³ÉÁ˽âÎö¡£ DL . DL FN S
Ò²ÐíÄã×¢Òâµ½ÎÒÃÇ¿ÉÒÔÏÈÔÚ×ö»¹Ô£¬Ò²¿ÉÒԵȵ½Óжà¸ö·ûºÅÔÚ×ö²»Í¬µÄ»¹Ô¡£ÕâÖÖÒÆÎ»»¹Ô½âÎöËã·¨ÓÐÐí¶à¸´Ôӱ仯£¬°´ÕÕ¸´Ôӳ̶Ⱥ͹¦ÄÜ·ÖΪLR(0)¡¢SLR¡¢LALRºÍLR(1)¡£LR(1)ÐèҪ̫´óµÄ½âÎö±í£¬ËùÒÔLALRÊÇ×î³£ÓõÄËã·¨£¬
¶øSR(0)ºÍSLR¶Ô¶àÊý±à³ÉÓïÑÔ¶¼²»¹»Ç¿´ó¡£
LALR ºÍLR(1)ʵÔÚÌ«¸´ÔÓÁË£¬ÕâÀïû·¨ÌÖÂÛ£¬µ«ÄãÒѾÁ˽âÁËÆä»ù±¾Ë¼Ïë¡£
LL»¹ÊÇLR£¿
Õâ¸öÎÊÌâÒѾ±»È˻شðÁË£¬ÕâÀïÒýÓÃËûµÄÐÂÏûÏ¢£º
Ï£Íû²»ÒªÒý·¢ÕùÒ飬Ê×ÏÈ£¬µ±Frank¿´µ½Õâ¸öʱ²»Òª´òÎÒ£¨ÎÒÀϰå¾ÍÊÇFrank DeRmer£¬LALR½âÎöµÄ´´Ê¼ÈË¡£©¡£
£¨½èÓÃÒ»ÏÂFischer&LeBlanc's \µÄÕªÒª£© ¼òµ¥ÐÔSimplicity - - LL ͨÓÃÐÔGenerality - - LALR ²Ù×÷Actions - - LL ´íÎó»Ö¸´Error repair - - LL ±í´óСTable sizes - - LL
½âÎöËÙ¶ÈParsing speed - - comparable (me: and tool-dependent) ¼òµ¥ÐÔ- - LL Õ¼ÓÅ ==========
LL½âÎöÆ÷¸ü¼òµ¥£¬Èç¹ûÒªµ÷ÊÔÒ»¸ö½âÎöÆ÷£¬¿¼ÂǵݹéϽµ½âÎöÆ÷£¨±àдLL½âÎöÆ÷µÄ³£Ó÷½·¨£©Òª±ÈLALR½âÎöÆ÷µÄ±í¼òµ¥¶àÁË¡£ ͨÓÃÐÔ - - LALR Õ¼ÓÅ ==========
Ôڹ淶¶¨ÒåµÄ¼òÒ×ÐÔ£¬LALRÇáËÉȡʤ¡£LLºÍLALRµÄ×î´ó²»Í¬ÊÇLLÓï·¨±ØÐëÓÃ×óÒò×Ó·¨ÔòºÍÏû³ý×óµÝ¹é¡£
ÌáÈ¡×óÒò×ÓÊDZØÐëµÄ£¬ÒòΪLL½âÎöÆ÷ÐèÒª»ùÓڹ̶¨µÄÊäÈëÊýÑ¡ÔñÌæ»»¡£ ×󻨹éÊÇÓÐÎÊÌâµÄ£¬ÒòΪ¹æÔòǰµ¼±ê¼Ç×ÜÊÇͳһ¹æÔòµÄǰµ¼±ê¼Ç¡£Õ⽫µ¼ÖÂÎÞÇîµÝ¹é¡£
²Î¿¼ÒÔÏÂÁ¬½ÓÁ˽âLALRת»»³ÉLLÓï·¨µÄ·½·¨£º http://www.jguru.com/thetick/articles/lalrtoll.html
Ðí¶àÓïÑÔÒѾÓÐÁËLALRÓï·¨£¬µ«»¹ÐèÒª·Òë¡£Èç¹ûÓïÑÔûÓÐÕâÑùµÄÓï·¨£¬Ð´Ò»¸öLLÓï·¨Ò²²»ÊÇʲôÄÑÊ¡£ ²Ù×÷ÐÔ - - LL Õ¼ÓÅ =======
ÔÚLL½âÎöÆ÷ÖпÉÒ԰ѲÙ×÷·ÅÔÚÈκεط½¶ø²»»áÒýÆð³åÍ»¡£ ´íÎóÐÞ¸´ - - LL Õ¼ÓÅ ============
LL½âÎöÆ÷¾ßÓзḻµÄ»·¾³ÐÅÏ¢£¨ÉÏÏÂÎÄÐÅÏ¢£©£¬¶ÔÐÞ¸´´íÎóºÜÓаïÖú¶ø·Ç±¨¸æËùÎÞ¡£ ±í´óС - - LL ===========
¼ÙÉèÄã±àдһ¸ö±íÇý¶¯LL½âÎöÆ÷£¬ËüµÄ±íÖ»ÓÐÆäËûµÄÒ»°ë´óС¡££¨Æ½ÐĶøÂÛ£¬Óкܶ෽·¨ÓÅ»¯LALR±í£¬Ê¹Æä±äС£© ½âÎöËÙ¶È ¨C ±È½Ï(ÎҵĹ۵㣺ÊÓ¹¤¾ß¶ø¶¨)
--Scott Stanchfield in article <33C1BDB9.FC6D86D3@scruz.net> on comp.lang.java.softwaretools Mon, 07 Jul 1997.
¸ü¶àÐÅÏ¢
John AycockÓÃPython¿ª·¢ÁËÒ»¸ö·Ç³£ºÃ¶øÇÒ¼òµ¥Ò×ÓõĽâÎö¿ò¼Ü½Ð×öSPARK ,ÓÿɶÁÐԷdz£Ç¿µÄÂÛÎÄÃèÊö¡£
±àÒëÆ÷ºÍ½âÎöÆ÷·½ÃæÈ¨Íþ¹¤×÷ÊÇ'The Dragon Book'£¬Ò²½ÐCompilers : Principles, Techniques, and Tools£¬×÷ÕßAho, Sethi and Ullman¡£Çë×¢ÒâÕâÊÇÒ»±¾¸ß¼¶µÄÊýѧÊé¡£
ÔÚÏßµÄÃâ·Ñ×ÊÁϽϺõÄÊÇÕâ±¾£ºhttp://www.cs.vu.nl/~dick/PTAPG.html¡£ Frank BoumphreyµÄanother EBNF tutorial£¬£¨http://www.hypermedic.com/style/xml/ebnf.htm£© Henry BakerµÄan article about parsing in Common Lisp
£¨http://home.pipeline.com/~hbaker1/Prag-Parse.html £©³ÊÏÖµÄÊÇÒ»¸ö¼òµ¥¡¢¸ßЧ¶øÇÒÊ®·Ö·½±ãµÄ½âÎö¿ò¼Ü¡£·½·¨ÀàËÆÓÚ±àÒëÆ÷±àÒëÆ÷£¬µ«ËüÒÀÀµÓÚÒ»¸öÊ®·ÖÇ¿´óµÄCommon Lispºêϵͳ¡£
¶¨ÒåBNFÓï·¨µÄ¾ä·¨¹æÔòÔÚRFC 2234£¨http://www.ietf.org/rfc/rfc2234.txt£©ÖпÉÒÔÕÒµ½£¬the ISO 14977 standardÖÐÒ²ÓС£
¸½Â¼
ÖÂл Thanks to:
? Jelks Cabaniss, for encouraging me to turn the news article into a web article,
and for providing very useful criticism of the article once it appeared in web form.
? C. M. Sperberg-McQueen for extra historical information about the name of BNF.
? Scott Stanchfield for writing the great comparison of LALR and LL. I have asked for permission to quote this, but have received no reply, unfortunately. ? James Huddleston for correcting me on John Backus' name.