欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

第二人生的源碼分析(103)腳本的詞法分析(1)

系統 2082 0
從前面的腳本可以看到它的代碼,也理解它的意思了,但是它是怎么樣執行的呢?又是怎么樣變成可執行的腳本呢?下面就來分析這部份相關的代碼。要了解腳本執行,就得把腳本中的每一個單詞識別出來,如下:
default {  state_entry()  {   llSay(0, “Hello, Avatar!”);  }
 touch_start(integer total_number)  {   llSay(0, “Touched.”);  } }
?
把上面的腳本識別為下面的字符串流: default?{ ?? state_entry() 等等。這樣識別單詞的過程,就叫做詞法分析。在編譯原理里有詳細的介紹,在第二人生里并不是手工地構造詞法分析器,而是通過flex程序來生成詞法分析程序。
?
flex是一個將包含了正則表達式的文本文件作為其輸入的程序,還包括每一個表達式被匹配時所采用的動作。 flex其實是The Fast Lexical Analyzer的縮寫。
?
flex輸入文件的格式如下:
{定義 }
%%
{規則 }
%%
{輔助代碼 }
?
下面就來仔細地分析第二人生的腳本 flex文件,它的定部份如下:
#001?
#002?N ????????? [0-9]
#003?L ????????? [a-zA-Z_]
#004?H ????????? [a-fA-F0-9]
#005?E ????????? [Ee][+-]?{N}+
#006?FS ???????? (f|F)
#007?%e 10000
#008?%n 4000
#009?%p 5000
#010?
#011?%{
#012?#include "linden_common.h"
#013?// Deal with the fact that lex/yacc generates unreachable code
#014?#ifdef LL_WINDOWS
#015?#pragma warning (disable : 4702) // warning C4702: unreachable code
#016?#endif //?LL_WINDOWS
#017?#include "llmath.h"
#018?#include "lscript_tree.h"
#019?#include "lscript_typecheck.h"
#020?#include "lscript_resource.h"
#021?#if LL_WINDOWS
#022?#include "ytab.h"
#023?#else
#024?#include "indra.y.h"
#025?#endif
#026?#include "lltimer.h"
#027?#include "indra_constants.h"
#028?#include "llagentconstants.h"
#029?#include "lllslconstants.h"
#030?#include "lluuid.h"
#031?#include "llassetstorage.h"
#032?#include "llpartdata.h"
#033?#include "llvehicleparams.h"
#034?#include "llpermissionsflags.h"
#035?#include "llfollowcamparams.h"
#036?#include "llparcelflags.h"
#037?#include "llregionflags.h"
#038?#include "lscript_http.h"
#039?#include "llclickaction.h"
#040?
#041?void count();
#042?void comment();
#043?void parse_string();
#044?
#045?#define YYLMAX 16384
#046?#define YY_NEVER_INTERACTIVE 1 /* stops flex from calling isatty() */
#047 ??
#048?#ifdef ECHO
#049?#undef ECHO
#050?#endif
#051?
#052?#define ECHO do { } while (0)
#053?
#054?#if defined(__cplusplus)
#055?extern "C" { int yylex( void ); }
#056?extern "C" { int yyparse( void ); }
#057?extern "C" { int yyerror(const char *fmt, ...); }
#058?#endif
#059?
#060?%}
?
1行到第10行是定義一些正則表達式匹配的字符。
11行到第第60行是聲明flex的定義部份。
?
這一次就介紹到這里,下一次再來分析它的下一部份內容:規則定義部份。
?

第二人生的源碼分析(103)腳本的詞法分析(1)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色xx综合网| 国产精品美女视频 | 伊人导航 | 黄色亚洲视频 | 仇爱电视剧泰剧在线观看免费播放 | 国产正在播放 | 精品久久久久久久 | 色综合久久婷婷天天 | 狠狠色丁香婷婷 | 国产精品色综合久久 | 九一国产在线观看免费 | 亚洲欧美精品 | 亚洲狠狠搞| 一97日本道伊人久久综合影院 | 成人小视频在线观看免费 | 91视频视频| 国产美女极品免费视频 | 天天操夜夜爽 | av天天干 | 95视频在线播放 | 精品毛片| 涩涩色中文综合亚洲 | 一级毛片免费在线播放 | 亚洲一区二区三区高清 | 亚洲国产成人av好男人在线观看 | 又黄又爽免费无遮挡在线观看 | 国产精品久久久久久久午夜 | 亚洲 精品 综合 精品 自拍 | 久草福利免费 | 国产成人av在线播放 | 日本久久久久久 | 999www视频免费观看 | 久久这里只有精品视频9 | 亚洲人一区 | 国产精品99一区二区三区 | 欧美日韩国产一区二区三区伦 | 在线激情视频 | 亚洲永久中文字幕在线 | 一个人看aaaa免费中文 | 日韩欧美h | 男女网|