从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这个问题涉及到词法份分析和语法分析,会比较复杂,如果有其他更好的实现,建议用其他更好的实现,比如手动地将源文件中的函数编入一个列表等等。如果真要分析一个.c源文件的函数,可以从以下几个方面设计:
成都创新互联公司专注于江干企业网站建设,响应式网站开发,成都商城网站开发。江干网站建设公司,为江干等地区提供建站服务。全流程按需求定制制作,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
用getcher()逐个字符读入并分析
统计花括号即{}的层次,从0层开始,遇到'{'层级加1,遇到'}'层级减1,函数定义和变量定义只会在最外层也就是第0层
函数定义通常有如下的形式(正则表达式)
/^[a-zA-Z_][a-zA-Z0-9_]?\s[a-zA-Z_][a-zA-Z0-9_]?(\s)? \( [a-zA-Z0-9_,/s]? \)
?代表0次或多次 \s表示任何形式空格,用正则表达式工具很易于实现。在最外层运用正则表达式工具或者手工编写识别器很容易识别。
但是这种识别只能适用于直接定义的函数,并且不能辨识和区分通过宏定义定义的函数以及调用宏的语句,且即使识别出了函数以及函数的签名,也不能通过c语言调用该函数。
严重怀疑你输入的是中文的刮号,你可以在switch前直接把*ch赋值为'('来试试,或者把你输入的用%d格式输出看看asc码值是不是等于'('.
/* */ 主要是字符匹配的问题,检索 / 和 * ,如果检索到 * 和 / ,哨兵变量为 1 ,否则为 0 ;
//主要是检索到 / 和 / 就可以,以后这一行都是注释了。
头一个注释可以应用于 printf 中,后者不可以。
---------------------
以上均是个人理解,如有错误,请高手指正。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图