Ragel入門1 簡介

2021-09-06 04:38:46 字數 564 閱讀 6427

dccmx 於 2023年 一月 3日 發表 | 最後修改於 2023年 一月 10日

ragel是個好東西啊,很好很強大。

它是什麼?

它是個「狀態機編譯器」,就是說那是用來從某定義編譯出狀態機的工具。

其實它是個很好很強大的基於正規表示式和狀態機的超級詞法分析器。我們可以用它來生成強大的詞法分析器,用來分析諸如配置檔案、文字協議等。

它怎麼用

(此處略過正規表示式的基本介紹)

舉個例子,我們要寫個程式,接受客戶傳來乙個形如「1+2」的表示式,我們返回結果,我們的表示式解析程式該如何寫呢?手寫?對!這麼簡單的表示式就應該手寫。但是這裡我們偏不手寫,看看用ragel如何解決這類問題(我們來讓姚明裝燈泡,劉翔送快遞)。

首先我們將上述表示式用正規表示式來表示。表示式的結構是:數字+操作符+數字。好,數字用正規表示式表示為[+-]?[0-9]+(我們允許數字前面的零吧),操作符表示為[+\-*/%],組合起來便是[+\-]?[0-9]+[+-*/%][+\-]?[0-9]+。很好很強大。減號由於是用來表示區間的字元,所以要轉義一下。

我們將正規表示式宣告為變數應該會更好用些吧:

Kafka入門 1 簡介

了解kafka之前我們先來了解一下訊息佇列 訊息佇列,英文名 message queue,經常縮寫為mq。從字面上來理解,訊息佇列是一種用來儲存訊息的佇列。來看一下下面的 1.建立乙個儲存字串的佇列 queuestringqueue new linkedlist 2.往訊息佇列中放入訊息 strin...

CSS入門簡介1

1 什麼是css,有什麼作用?css cascading style sheet 層疊樣式表語言。css的作用是 修飾html頁面,設定html頁面中的某些元素的樣式,讓html頁面更好看。css好比是html的化妝品一樣。html還是主體,css依賴html。css的存在就是修飾html,所以新建...

Gradle Gradle入門系列(1) 簡介

gradle是一種構建工具,它拋棄了基於xml的構建指令碼,取而代之的是採用一種基於groovy的內部領域特定語言。近期,gradle獲得了極大的關注,這也是我決定去研究gradle的原因。我們開始吧,先看一下如何安裝gradle。如果在安裝過程中遇到問題,可以進一步檢視官方的安裝指南。如果我們使用...