前两天阅读《C专家编程》第3章“分析C语言的声明”,书中提供了一个名叫 cdecl 的算法流程分析C语言程序的声明语句。
输入C语言声明语句形式,用英语输出对应的描述。
我参照《C专家编程》“编程挑战”的设计,用python实现了一个 cdecl :
# -*- coding: cp936 -*-
Type_list = ['void', 'char', 'int', 'float', 'struct']
# type of '*', '[', '(' is themselves
Qualifier_list = ['const', 'static']
# otherwise, identifier
This_token = {'type':'NOTYPE', 'string':""}
String_left = ""
Token_stack = []
Output_string = ""
"""
utility
"""
def classify_string():
# 查看当前标记
# 通过this.type返回一个值,内容为"type","qualifier"或"identifier"
global This_token
if This_token['string'] == "":
This_token['type'] = 'NOTYPE'
if This_token['string'] in Type_list:
This_token['type'] = 'TYPE'
elif This_token['string'] in Qualifier_list:
This_token['type'] = 'QUALIFIER'
else:
This_token['type'] = 'IDENTIFIER'
def get_token():
global This_token, String_left
# 把下一个标记读入this.string
if String_left == "":
This_token['string'] = ""
This_token['type'] = This_token['string']
return
while String_left[0] == ' ':
String_left = String_left[1:]
if String_left == "":
This_token['string']