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

2021-06-03 01:36:40 字數 1134 閱讀 5949

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

typedef struct _interpret

interpret;

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

#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語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。cpp view plain copy typedef struct i...

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

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

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

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