開源乙個CSV解析器(附設計過程 )

2022-07-04 11:12:12 字數 953 閱讀 5254

在excelreport支援csv的開發過程中,需要乙個netstandard的csv解析器。在nuget上找了幾個試用,但都不太適合。

於是,便有了:axinlib.io.csv。

讀出的資料:

步驟一、了解csv格式規範

參考文章:理解csv格式規範(解析csv必備)

總結:1)字段分隔符:

,
2)行結束符:

\r\n
3)轉義符:

"
4)出現以上字元的字段需要用轉義符前後括起來

5)轉義符的原義需要兩個轉義符標識

6)檔案中的最後一行記錄可以有結尾回車換行符,也可以沒有。

步驟二、定義狀態

通過主流程識別狀態:

1)新字段開始 

2)非轉義狀態

3)轉義狀態

4)轉義符原義判定狀態

5)字段結束

6)行結束

7)文件結束

8)解析失敗

步驟三:通過狀態遷移圖查缺補漏

步驟四:根據狀態遷移圖實現**

詳參見:

axinlib.io.csv 原始碼:

用C 實現乙個Json解析器(3) 詳細設計

上回我們已經得到了簡單類圖,這次就來細品一下每個類應該長什麼樣,需不需要再增加輔助類。首先來給每個類加入成員 lexer 詞法分析器的任務是把json字串轉換成單詞流,只有乙個方法analyze。token 單詞顯然是乙個值物件,只有value和tokentype兩個唯讀屬性。考慮到值型別的效率比引...

乙個簡單的表示式解析器

package lipeng.stringdemo 乙個簡單的表示式解析器,這個解析器可以計算由數字 運算子和括號組成的表示式的值,並能處理變數,為了處理簡單,本解析器只支援乙個字母的變數,不區分變數字母的大小寫。因此,最多只能儲存26個變數。如果使用者的變數名長度大於乙個字母,則只取第乙個字母當作...

如何寫乙個json語法解析器

最近正在補習編譯原理的相關理論基礎。於是琢磨著寫個簡單的語言解析器。1.python程式設計 ply庫 2.正規表示式1.json裡的字典key必須是字串型,value可以是任意型別 2.json根基點必須是字典或者陣列 3.json支援的值包括 數字 整數或浮點數 字串 在雙引號中 邏輯值 tru...