HTML5¼¼Êõ

ä¯ÀÀÆ÷ÄÚ²¿¹¤×÷Ô­Àí - wangwen896(2)

×ÖºÅ+ ×÷ÕߣºH5Ö®¼Ò À´Ô´£ºH5Ö®¼Ò 2016-10-29 15:00 ÎÒÒªÆÀÂÛ( )

½âÎö»ùÓÚÎĵµÒÀ¾ÝµÄÓï·¨¹æÔò¡ª¡ªÎĵµµÄÓïÑÔ»ò¸ñʽ¡£Ã¿Öֿɱ»½âÎöµÄ¸ñʽ±ØÐë¾ßÓÐÓɴʻ㼰Óï·¨¹æÔò×é³ÉµÄÌض¨µÄÎÄ·¨£¬³ÆΪÉÏÏÂÎÄÎÞ¹ØÎÄ·¨¡£ÈËÀàÓïÑÔ²»¾ßÓÐÕâÒ»ÌØÐÔ£¬Òò´Ë²»Äܱ»Ò»°ãµÄ½âÎö¼¼ÊõËù½âÎö¡£ ½âÎöÆ÷£­´Ê·¨·Ö

¡¡¡¡½âÎö»ùÓÚÎĵµÒÀ¾ÝµÄÓï·¨¹æÔò¡ª¡ªÎĵµµÄÓïÑÔ»ò¸ñʽ¡£Ã¿Öֿɱ»½âÎöµÄ¸ñʽ±ØÐë¾ßÓÐÓɴʻ㼰Óï·¨¹æÔò×é³ÉµÄÌض¨µÄÎÄ·¨£¬³ÆΪÉÏÏÂÎÄÎÞ¹ØÎÄ·¨¡£ÈËÀàÓïÑÔ²»¾ßÓÐÕâÒ»ÌØÐÔ£¬Òò´Ë²»Äܱ»Ò»°ãµÄ½âÎö¼¼ÊõËù½âÎö¡£

¡¡¡¡½âÎöÆ÷£­´Ê·¨·ÖÎöÆ÷£¨Parser£­Lexer combination£©

¡¡¡¡½âÎö¿ÉÒÔ·ÖΪÁ½¸ö×Ó¹ý³Ì¡ª¡ªÓï·¨·ÖÎö¼°´Ê·¨·ÖÎö

¡¡¡¡´Ê·¨·ÖÎö¾ÍÊǽ«ÊäÈë·Ö½âΪ·ûºÅ£¬·ûºÅÊÇÓïÑԵĴʻã±í¡ª¡ª»ù±¾ÓÐЧµ¥ÔªµÄ¼¯ºÏ¡£¶ÔÓÚÈËÀàÓïÑÔÀ´Ëµ£¬ËüÏ൱ÓÚÎÒÃÇ×ÖµäÖгöÏÖµÄËùÓе¥´Ê¡£

¡¡¡¡Óï·¨·ÖÎöÖ¸¶ÔÓïÑÔÓ¦ÓÃÓï·¨¹æÔò¡£

¡¡¡¡½âÎöÆ÷Ò»°ã½«¹¤×÷·ÖÅä¸øÁ½¸ö×é¼þ¡ª¡ª´Ê·¨·ÖÎöÆ÷£¨ÓÐʱҲ½Ð·Ö´ÊÆ÷£©¸ºÔð½«ÊäÈë·Ö½âΪºÏ·¨µÄ·ûºÅ£¬½âÎöÆ÷Ôò¸ù¾ÝÓïÑÔµÄÓï·¨¹æÔò·ÖÎöÎĵµ½á¹¹£¬´Ó¶ø¹¹½¨½âÎöÊ÷£¬´Ê·¨·ÖÎöÆ÷ÖªµÀÔõôÌø¹ý¿Õ°×ºÍ»»ÐÐÖ®ÀàµÄÎÞ¹Ø×Ö·û¡£

ͼ6£º´ÓÔ´Îĵµµ½½âÎöÊ÷

¡¡¡¡½âÎö¹ý³ÌÊǵü´úµÄ£¬½âÎöÆ÷´Ó´Ê·¨·ÖÎöÆ÷´¦È¡µ½Ò»¸öеķûºÅ£¬²¢ÊÔ×ÅÓÃÕâ¸ö·ûºÅÆ¥ÅäÒ»ÌõÓï·¨¹æÔò£¬Èç¹ûÆ¥ÅäÁËÒ»Ìõ¹æÔò£¬Õâ¸ö·ûºÅ¶ÔÓ¦µÄ½Úµã½«±»Ìí¼Óµ½½âÎöÊ÷ÉÏ£¬È»ºó½âÎöÆ÷ÇëÇóÁíÒ»¸ö·ûºÅ¡£Èç¹ûûÓÐÆ¥Åäµ½¹æÔò£¬½âÎöÆ÷½«ÔÚÄÚ²¿±£´æ¸Ã·ûºÅ£¬²¢´Ó´Ê·¨·ÖÎöÆ÷È¡ÏÂÒ»¸ö·ûºÅ£¬Ö±µ½ËùÓÐÄÚ²¿±£´æµÄ·ûºÅÄܹ»Æ¥ÅäÒ»ÏîÓï·¨¹æÔò¡£Èç¹û×îÖÕûÓÐÕÒµ½Æ¥ÅäµÄ¹æÔò£¬½âÎöÆ÷½«Å׳öÒ»¸öÒì³££¬ÕâÒâζ×ÅÎĵµÎÞЧ»òÊÇ°üº¬Óï·¨´íÎó¡£

¡¡¡¡×ª»»£¨Translation£©

¡¡¡¡ºÜ¶àʱºò£¬½âÎöÊ÷²¢²»ÊÇ×îÖÕ½á¹û¡£½âÎöÒ»°ãÔÚת»»ÖÐʹÓ᪡ª½«ÊäÈëÎĵµ×ª»»ÎªÁíÒ»ÖÖ¸ñʽ¡£±àÒë¾ÍÊǸöÀý×Ó£¬±àÒëÆ÷ÔÚ½«Ò»¶ÎÔ´Âë±àÒëΪ»úÆ÷ÂëµÄʱºò£¬ÏȽ«Ô´Âë½âÎöΪ½âÎöÊ÷£¬È»ºó½«¸ÃÊ÷ת»»ÎªÒ»¸ö»úÆ÷ÂëÎĵµ¡£

ͼ7£º±àÒëÁ÷³Ì

¡¡¡¡½âÎöʵÀýParsing example

¡¡¡¡Í¼5ÖУ¬ÎÒÃÇ´ÓÒ»¸öÊýѧ±í´ïʽ¹¹½¨ÁËÒ»¸ö½âÎöÊ÷£¬ÕâÀﶨÒåÒ»¸ö¼òµ¥µÄÊýѧÓïÑÔÀ´¿´Ï½âÎö¹ý³Ì¡£

¡¡¡¡´Ê»ã±í£ºÎÒÃǵÄÓïÑÔ°üÀ¨ÕûÊý¡¢¼ÓºÅ¼°¼õºÅ¡£

¡¡¡¡Óï·¨£º

¡¡¡¡1. ¸ÃÓïÑÔµÄÓï·¨»ù±¾µ¥Ôª°üÀ¨±í´ïʽ¡¢term¼°²Ù×÷·û

¡¡¡¡2. ¸ÃÓïÑÔ¿ÉÒÔ°üÀ¨¶à¸ö±í´ïʽ

¡¡¡¡3. Ò»¸ö±í´ïʽ¶¨ÒåΪÁ½¸ötermͨ¹ýÒ»¸ö²Ù×÷·ûÁ¬½Ó

¡¡¡¡4. ²Ù×÷·û¿ÉÒÔÊǼӺŻò¼õºÅ

¡¡¡¡5. term¿ÉÒÔÊÇÒ»¸öÕûÊý»òÒ»¸ö±í´ïʽ

¡¡¡¡ÏÖÔÚÀ´·ÖÎöһϡ°2£«3£­1¡±Õâ¸öÊäÈë

¡¡¡¡µÚÒ»¸öÆ¥Åä¹æÔòµÄ×Ó×Ö·û´®ÊÇ¡°2¡±£¬¸ù¾Ý¹æÔò5£¬ËüÊÇÒ»¸öterm£¬µÚ¶þ¸öÆ¥ÅäµÄÊÇ¡°2+3¡±£¬Ëü·ûºÏµÚ2Ìõ¹æÔò¡ª¡ªÒ»¸ö²Ù×÷·ûÁ¬½ÓÁ½¸öterm£¬ÏÂÒ»´ÎÆ¥Åä·¢ÉúÔÚÊäÈëµÄ½áÊø´¦¡£¡°2+3-1¡±ÊÇÒ»¸ö±í´ïʽ£¬ÒòΪÎÒÃÇÒѾ­ÖªµÀ¡°2+3¡±ÊÇÒ»¸öterm£¬ËùÒÔÎÒÃÇÓÐÁËÒ»¸öterm½ô¸ú×ÅÒ»¸ö²Ù×÷·û¼°ÁíÒ»¸öterm¡£¡°2++¡±½«²»»áÆ¥ÅäÈκιæÔò£¬Òò´ËÊÇÒ»¸öÎÞЧÊäÈë¡£

¡¡¡¡´Ê»ã±í¼°Óï·¨µÄ¶¨Òå

¡¡¡¡´Ê»ã±íͨ³£ÀûÓÃÕýÔò±í´ïʽÀ´¶¨Òå¡£

¡¡¡¡ÀýÈçÉÏÃæµÄÓïÑÔ¿ÉÒÔ¶¨ÒåΪ£º

¡¡¡¡INTEGER£º0£ü£Û1£­9£Ý£Û0£­9£Ý£ª

¡¡¡¡PLUS£º+

¡¡¡¡MINUS£º£­

¡¡¡¡ÕýÈç¿´µ½µÄ£¬ÕâÀïÓÃÕýÔò±í´ïʽ¶¨ÒåÕûÊý¡£

¡¡¡¡Ó﷨ͨ³£ÓÃBNF¸ñʽ¶¨Ò壬ÎÒÃǵÄÓïÑÔ¿ÉÒÔ¶¨ÒåΪ£º

¡¡¡¡expression :£½ term operation term

¡¡¡¡operation := PLUS | MINUS

¡¡¡¡term := INTEGER | expression

¡¡¡¡Èç¹ûÒ»¸öÓïÑÔµÄÎÄ·¨ÊÇÉÏÏÂÎÄÎ޹صģ¬ÔòËü¿ÉÒÔÓÃÕýÔò½âÎöÆ÷À´½âÎö¡£¶ÔÉÏÏÂÎÄÎÞ¹ØÎÄ·¨µÄÒ»¸öÖ±¹ÛµÄ¶¨ÒåÊÇ£¬¸ÃÎÄ·¨¿ÉÒÔÓÃBNFÀ´ÍêÕûµÄ±í´ï¡£¿É²é¿´¡£

¡¡¡¡½âÎöÆ÷ÀàÐÍ£¨Types of parsers£©

¡¡¡¡ÓÐÁ½ÖÖ»ù±¾µÄ½âÎöÆ÷¡ª¡ª×Ô¶¥ÏòϽâÎö¼°×Ôµ×ÏòÉϽâÎö¡£±È½ÏÖ±¹ÛµÄ½âÊÍÊÇ£¬×Ô¶¥ÏòϽâÎö£¬²é¿´Óï·¨µÄ×î¸ß²ã½á¹¹²¢ÊÔ×ÅÆ¥ÅäÆäÖÐÒ»¸ö£»×Ôµ×ÏòÉϽâÎöÔò´ÓÊäÈ뿪ʼ£¬Öð²½½«Æäת»»ÎªÓï·¨¹æÔò£¬´Óµ×²ã¹æÔò¿ªÊ¼Ö±µ½Æ¥Åä¸ß²ã¹æÔò¡£

¡¡¡¡À´¿´Ò»ÏÂÕâÁ½ÖÖ½âÎöÆ÷ÈçºÎ½âÎöÉÏÃæµÄÀý×Ó£º

¡¡¡¡×Ô¶¥ÏòϽâÎöÆ÷´Ó×î¸ß²ã¹æÔò¿ªÊ¼¡ª¡ªËüÏÈʶ±ð³ö¡°2+3¡°£¬½«ÆäÊÓΪһ¸ö±í´ïʽ£¬È»ºóʶ±ð³ö¡±2+3-1¡°ÎªÒ»¸ö±í´ïʽ£¨Ê¶±ð±í´ïʽµÄ¹ý³ÌÖÐÆ¥ÅäÁËÆäËû¹æÔò£¬µ«³ö·¢µãÊÇ×î¸ß²ã¹æÔò£©¡£

¡¡¡¡×Ôµ×ÏòÉϽâÎö»áɨÃèÊäÈëÖ±µ½Æ¥ÅäÁËÒ»Ìõ¹æÔò£¬È»ºóÓøùæÔòÈ¡´úÆ¥ÅäµÄÊäÈ룬ֱµ½½âÎöÍêËùÓÐÊäÈë¡£²¿·ÖÆ¥ÅäµÄ±í´ïʽ±»·ÅÖÃÔÚ½âÎö¶ÑÕ»ÖС£

Stack

Input

 

2 + 3 ¨C 1

term

+ 3 - 1

term operation

3 ¨C 1

expression

- 1

expression operation

1

expression

 

¡¡¡¡×Ôµ×ÏòÉϽâÎöÆ÷³ÆΪshift reduce½âÎöÆ÷£¬ÒòΪÊäÈëÏòÓÒÒƶ¯£¨ÏëÏóÒ»¸öÖ¸ÕëÊ×ÏÈÖ¸ÏòÊäÈ뿪ʼ´¦£¬²¢ÏòÓÒÒƶ¯£©£¬²¢Öð½¥¼ò»¯ÎªÓï·¨¹æÔò¡£

¡¡¡¡×Ô¶¯»¯½âÎö£¨Generating parsers automatically£©

¡¡¡¡½âÎöÆ÷Éú³ÉÆ÷Õâ¸ö¹¤¾ß¿ÉÒÔ×Ô¶¯Éú³É½âÎöÆ÷£¬Ö»ÐèÒªÖ¸¶¨ÓïÑÔµÄÎÄ·¨¡ª¡ª´Ê»ã±í¼°Óï·¨¹æÔò£¬Ëü¾Í¿ÉÒÔÉú³ÉÒ»¸ö½âÎöÆ÷¡£´´½¨Ò»¸ö½âÎöÆ÷ÐèÒª¶Ô½âÎöÓÐÉîÈëµÄÀí½â£¬¶øÇÒÊÖ¶¯µÄ´´½¨Ò»¸öÓɽϺÃÐÔÄܵĽâÎöÆ÷²¢²»ÈÝÒ×£¬ËùÒÔ½âÎöÉú³ÉÆ÷ºÜÓÐÓá£WebkitʹÓÃÁ½¸öÖªÃûµÄ½âÎöÉú³ÉÆ÷¡ª¡ªÓÃÓÚ´´½¨Óï·¨·ÖÎöÆ÷µÄFlex¼°´´½¨½âÎöÆ÷µÄBison£¨Äã¿ÉÄܽӴ¥¹ýLexºÍYacc£©¡£FlexµÄÊäÈëÊÇÒ»¸ö°üº¬ÁË·ûºÅ¶¨ÒåµÄÕýÔò±í´ïʽ£¬BisonµÄÊäÈëÊÇÓÃBNF¸ñʽ±íʾµÄÓï·¨¹æÔò¡£

¡¡¡¡HTML½âÎöÆ÷£¨HTML Parser£©

¡¡¡¡HTML½âÎöÆ÷µÄ¹¤×÷Êǽ«html±êʶ½âÎöΪ½âÎöÊ÷¡£

¡¡¡¡HTMLÎÄ·¨¶¨Ò壨The HTML grammar definition£©

¡¡¡¡W3C×éÖ¯Öƶ¨¹æ·¶¶¨ÒåÁËHTMLµÄ´Ê»ã±íºÍÓï·¨¡£

¡¡¡¡·ÇÉÏÏÂÎÄÎÞ¹ØÎÄ·¨£¨Not a context free grammar£©

¡¡¡¡ÕýÈçÔÚ½âÎö¼ò½éÖÐÌáµ½µÄ£¬ÉÏÏÂÎÄÎÞ¹ØÎÄ·¨µÄÓï·¨¿ÉÒÔÓÃÀàËÆBNFµÄ¸ñʽÀ´¶¨Òå¡£

¡¡¡¡²»ÐÒµÄÊÇ£¬ËùÓеĴ«Í³½âÎö·½Ê½¶¼²»ÊÊÓÃÓÚhtml£¨µ±È»ÎÒÌá³öËüÃDz¢²»Ö»ÊÇÒòΪºÃÍ棬ËüÃǽ«ÓÃÀ´½âÎöcssºÍjs£©£¬html²»Äܼòµ¥µÄÓýâÎöËùÐèµÄÉÏÏÂÎÄÎÞ¹ØÎÄ·¨À´¶¨Òå¡£

¡¡

1.±¾Õ¾×ñÑ­ÐÐÒµ¹æ·¶£¬ÈκÎתÔصĸå¼þ¶¼»áÃ÷È·±ê×¢×÷ÕߺÍÀ´Ô´£»2.±¾Õ¾µÄÔ­´´ÎÄÕ£¬ÇëתÔØʱÎñ±Ø×¢Ã÷ÎÄÕÂ×÷ÕߺÍÀ´Ô´£¬²»×ðÖØÔ­´´µÄÐÐΪÎÒÃǽ«×·¾¿ÔðÈΣ»3.×÷ÕßͶ¸å¿ÉÄܻᾭÎÒÃDZ༭Ð޸Ļò²¹³ä¡£

Ïà¹ØÎÄÕÂ
  • IndexedDB:ä¯ÀÀÆ÷ÀïÄÚÖõÄÊý¾Ý¿â(ת) - letvar

    IndexedDB:ä¯ÀÀÆ÷ÀïÄÚÖõÄÊý¾Ý¿â(ת) - letvar

    2016-10-26 10:00

  • canvas»­²¼ÔÚÖ÷Á÷ä¯ÀÀÆ÷ÖеijߴçÏÞÖÆ - Êõ³æ

    canvas»­²¼ÔÚÖ÷Á÷ä¯ÀÀÆ÷ÖеijߴçÏÞÖÆ - Êõ³æ

    2016-10-16 10:00

  • Ç°¶Ë¹¤×÷ÃæÊÔÎÊÌâ - wangwen896

    Ç°¶Ë¹¤×÷ÃæÊÔÎÊÌâ - wangwen896

    2016-10-03 12:16

  • html5 video.js ʹÓü°¼æÈÝËùÓÐä¯ÀÀÆ÷ - Сͯͯ

    html5 video.js ʹÓü°¼æÈÝËùÓÐä¯ÀÀÆ÷ - Сͯͯ

    2016-09-24 15:00

ÍøÓѵãÆÀ
Ó