C語言和設計模式(直譯器模式)21

2022-03-24 14:23:13 字數 1596 閱讀 3263

直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的:乙個不以數字開始的由字母、數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。

[cpp]view plain

copy

print

?typedef

struct

_interpret  

interpret;  

上面的資料結構比較簡單,但是很能說明問題。就拿變數來說吧,這裡就可以定義成字母的直譯器、數字直譯器、下劃線直譯器三種形式。所以,我們可以進一步定義一下process的相關函式。

[cpp]view plain

copy

print

?#define digital_type 1

#define letter_type  2

#define bottom_line  3

void

* digital_process(

void

* pdata, 

int* type, 

int* result)  

if(*str == 

'\0'

)       

if(*str == 

'_')  

if(*str >= 

'a'&& *str <= 

'z'|| *str >= 

'a'&& *str <= 

'z')  

*result = false;  

return

null;              

}      

void

* letter_process(

void

* pdata, 

int* type, 

int* result)  

if(*str == 

'\0'

)       

if(*str == 

'_')  

if(*str >= 

'0'&& *str <= 

'9')  

*result = false;  

return

null;              

}            

void

* bottom_process(

void

* pdata, 

int* type, 

int* result)  

if(*str == 

'\0'

)       

if(*str >= 

'a'&& *str <= 

'z'|| *str >= 

'a'&& *str <= 

'z')  

if(*str >= 

'0'&& *str <= 

'9')  

*result = false;  

return

null;              

C語言和設計模式(直譯器模式)

直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。typedef struct interpret interpret 上...

C語言和設計模式(直譯器模式)

直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。cpp view plain copy typedef struct i...

C語言和設計模式(直譯器模式)

直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。cpp view plain copy typedef struct i...