資源簡介
c語法分析器,生成程序的語法樹
分析單個文件,不支持預處理, 不解析預處理符號#

代碼片段和文件信息
/*?Original?source?code?by?Compilerware?with?tabs?=?3?*/
#include?“c_main.h“
#include?“c_parser.h“
?? #include?“c_actions.h“
char?sym[200];??//長度200
char?temp[200];
#ifdef?TOKEN_ACTIONS
/////////////////////////////////////////////////////////////////////////////////////////////////////
//?????????????????????????????????????????????????????????????????????????????????????????????????//?
//????error????? ????????????????????????
int???c_token_action::error?(short?t)????????????????????
{
if?(token.end?==?token.start)?//?Illegal?character?
{
token.end++;
return?(t);?//?Return?zero?(t?should?be?zero).
}
//?Do?a?symbol?table?lookup?could?be?a?valid?keyword?or?constant.
return?(lookup?(t));?
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
//?????????????????????????????????????????????????????????????????????????????????????????????????//?
//????lookup???? ????????????????????????
int???c_token_action::lookup?(short?t)?//?Look?for?Symbol.
{
//?Do?a?symbol-table?lookup?for?this?token.?
token.sti?=?add_symbol?(t?token.start?token.end);?
return?(symbol[token.sti].term);?//?Retuen?terminal?symbol?number.?
}
#endif
#ifdef?PARSE_ACTIONS
/////////////////////////////////////////////////////////////////////////////////////////////////////
//?????????????????????????????????????????????????????????????????????????????????????????????????//?
//????goal_?(not?used?for?testing?only) ????????????????????????
short?c_parse_action::goal_?(short?p)?
{
???short?a?=?pact_arg[p]; ??//?Get?first?argument?index.
??????return?(0);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
//?????????????????????????????????????????????????????????????????????????????????????????????????//?
//????defterm??? ????????????????????????
short?c_parse_action::defterm?(short?p)?
{
???short?i?=?pact_arg[p]; ???//?Get?first?argument?index.
??????short?sti?=?PS?[arg_numb[i]-1].sti;?//?Get?sti?for?first?argument.
??????symbol[sti].term?=?arg_numb?[i+1];??//?Set?term?to?second?argument.
??????return?(0);
}
//????defline??? ????????????????????????
short?c_parse_action::defline?(short?p)?
{
//在此寫行號重置的代碼?it‘s?good
//獲取token
//char*?ls?=?token.start;
//char*?le?=?token.end;
//int?len?=?-1;
//while?(ls? // len++;
// sym[len]?=?*ls;?
// ls++;
//}
//sym[len+1]?=?0;
//char?seps[]???=?“#??\t“;
//char?*token;
//int?cnt?=1;
//int?line_cnt=0;
//token?=?strtok(?sym?seps?);
//while(?token?!=?NULL?){????//While?there?are?tokens?in?“string“
// //printf(?“?%s\n“?token?);????????
// if(cnt?==?1){
// line_cnt?=?atoi(token);??//下一行
// }
// else?if(cnt?==?2){
// strcpy(sym?token);??//預處理行中所指示的文件名
// break;
// }
// token?=?strtok
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????10711??2012-10-17?16:39??c.grm
?????文件???????4549??2013-04-05?15:27??c.lgr
?????文件???????5589??2013-04-05?15:40??c_actions.cpp
?????文件????????716??2013-04-05?15:33??c_actions.h
?????文件??????73440??2013-04-05?15:27??c_lexer.cpp
?????文件???????1415??2013-04-05?15:27??c_lexer.h
?????文件???????6984??2013-04-05?15:51??c_main.cpp
?????文件???????2478??2012-02-02?15:36??c_main.h
?????文件??????98435??2013-04-05?16:02??c_parser.cpp
?????文件??????10467??2013-04-05?15:38??c_parser.h
?????文件???????4690??2013-04-05?16:03??cpr.dsp
?????文件????????529??2013-04-05?15:48??cpr.dsw
?????文件??????58368??2013-04-05?16:03??cpr.ncb
?????文件??????53760??2013-04-05?16:03??cpr.opt
?????文件???????1314??2013-04-05?16:02??cpr.plg
?????文件????????180??2013-04-05?16:08??說明.txt
?????文件?????225349??2013-04-05?16:02??Debug\cpr.exe
?????文件??????14587??2013-04-05?15:56??Debug\Editor.c
?????文件??????63169??2011-10-04?02:00??Debug\test.input.txt
?????目錄??????????0??2013-04-05?16:07??Debug
-----------?---------??----------?-----??----
???????????????636730????????????????????20
- 上一篇:arcgis規劃字體庫
- 下一篇:作業手寫整理機械控制工程基礎朱驥北答案.pdf
評論
共有 條評論