這個星期,,項(xiàng)目中要使用C++或C語言解析JSON格式的數(shù)據(jù),,把解析的結(jié)果放到一個通用的數(shù)據(jù)結(jié)構(gòu)。這個通用的數(shù)據(jù)結(jié)構(gòu),,實(shí)際上是作為web服務(wù)層(這一層大家可以認(rèn)為是類似于PHP服務(wù)器或webpy的服務(wù)器容器)到web頁面層(這一層是語法類似PHP腳本或者tornardo模板)的數(shù)據(jù)傳輸?shù)膮f(xié)議,。 之所以要這樣處理, 主要是因?yàn)檫@個web類的項(xiàng)目(一般的web類項(xiàng)目也是如此)需求變化較快,,而web的服務(wù)層使用是采用C++進(jìn)行開發(fā)的,,為了使當(dāng)web服務(wù)層的數(shù)據(jù)格式變化不影響web頁面層,所以雙方使用統(tǒng)一的通用的數(shù)據(jù)結(jié)構(gòu),。而之所以交代這么多的背景是,, 為了讓大家了解為什么我們不使用類似rapidjson或jsoncpp來實(shí)現(xiàn)json的解析而需要手寫解析器。 因?yàn)槭褂妙愃苧apidJson或者是jsoncpp之類的Json解析器,,相當(dāng)于我們要做: JSON文檔 -> json DOM -> 通用數(shù)據(jù)結(jié)構(gòu),。 而如果手寫解析器,只需要做: JSON文檔 -> 通用數(shù)據(jù)結(jié)構(gòu),。 少一層轉(zhuǎn)換能換來很多效率的提升,。 說了這么多,下面開始進(jìn)入正題,。 以前學(xué)編譯原理的時(shí)候,,老師推薦過LEX /YACC來寫編譯器,其實(shí)這是古老的UNIX軟件,。 LINUX上有他們的GNU版本 FLEX,、BISON。 這兩個東西一個是詞法分析器,,一個是語法分析器,。詞法分析器的作用是把字符解析成單詞,。一般的把單詞稱為token, 而語法分析器則是把單詞解析成語法樹。 |
上一篇:空船在海里航行需要壓水嗎 | 下一篇:鋼絲繩按鋼絲的什么可分為單捻雙捻三捻 |
江南造船廠在哪里,? |
2024-03-12
|
查看詳情 >> |
光租服務(wù)與干租服務(wù)的區(qū)別,? |
2024-03-12
|
查看詳情 >> |
中國三大造船廠是誰? |
2024-03-12
|
查看詳情 >> |