您的位置:首頁>正文

C語言——自製詞法分析器

手擼純C詞法分析器一枚, 可以試下多種語言的詞法分析功能。

只要改一下keywd表就行了。 主要是一個自動機。 。 。 。 。 。 。

可以實現跨平臺, gcc vc均有測試。 大家可以自己接語法樹生成處理。

C語言C++學習交流群496926338

C語言C++學習交流群496926338

紅線運算子

藍線關鍵字

屬於Table。 c

運算子結構包含運算子優先順序等均在tree。 h有定義

結構比較清晰, 不是太難懂

【需要語法樹構建請添加到snana。 c】

異常包含於error.c

那麼簡單說一下原理:

一串字元流送入int SplitScanner(wchar_t* exp)函數

從頭開始逐個掃描。 各個記號由自動機的狀態進行歸併。

歸併完成後, 調用int DiscardToken(void);函數進行進一步處理

比如DiscardToken負責2 8 1016 60進制轉換,

浮點數轉為有理數送入詞素流

自動機狀態由InitTokenSwitchFlags函數負責轉換並判斷

如有異常交給int ReportError(ErrNumber id, int ln, int col)

從reporterr的定義中可以看出:ln col變數保存發生錯誤的行列資訊

以上詞法分析屬於lxana。 h

注意lxana有一句注釋“//Add launcher?”請在此處添加語法分析引擎。 。 。

mainx是啟動器, 根據自己的實際情況:

是構建interpreter還是compiler?

平臺位於win 是console app/win32app

平臺位於osx 根據情況修改之

【】【】【】

【【特別注意以一下】】

該lexical analyzer支援寬字元(如果你想製作易語言)滑稽。

自己來看啦:

錯誤是醬紫:

C語言C++學習交流群496926338

喜歡的話關注收藏評論轉發一波 比心麼麼噠!加入我們C語言C++學習交流 壹 496926338群內有大量的專案開發和新手教學視頻千人大群等著你來加入。
同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示