资源简介
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 < le){
// 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
相关资源
- FlexGraphics_Full_1.8.zip
- 一个PatchVMP3.x工具.zip
- 利用Packet Tracer组建虚拟的校园网
- SSH Secure Shell免安装版
- 超详细的Win10+MyEclipse2018+Tomcat9.0环境搭
- Advanced Data Structures(英文版)数据结
- dspack - delphi xe 播放视频的最佳
- react移动端H5点餐项目源码.rar
- Wavelet methods in statistics with R
- Code Composer Studio(CCS)集成开发环境
- VISSIM行人仿真模块介绍和使用方法d
- IEEE 802.15.3c standard
- STM32F030低功耗 定时5分钟 RTC唤醒
- VC++开发的仓库管理系统设计文档和
- ligerRMV2
- zw_deblur_code_1_2.zip
- Pointers on C with programs
- FLACS 教学
- hame mpr-a2 openwrt固件包含ch340cp2102驱动
- 运动车辆检测跟踪系统vc源码opencv
- MIPI Alliance Standard for Camera Serial Inter
- MIPI_D-PHY_Specification_v1.00.00
- Windows平板电脑 Intel平台 z3735 z8300 CP
- nxlog-ce-2.8.1248
- 信息网络建模与仿真.docx
- Supply_Chain_Guru选址
- 基于Zigbee的室内自定位
- windows MSVCP100
- The_C_Programming_Language习题答案.pdf
- PPT、Word、Excel等压缩工具
评论
共有 条评论