c语言basic解释器,要理解解释器,做一个小解释器----小话c语言(20)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
}
list->tail->next = obj;
list->tail = obj;
return obj;
}
void cc_arg_list_free(cc_arg_list *list)
{
cc_arg_obj *head = list->head;
while(head)
{
cc_arg_obj *next = head->next;
cc_arg_obj_free(head);
head = next;
}
}
void cc_arg_list_show_all_args(cc_arg_list *list)
{
cc_arg_obj *head = list->head;
while (head != NULL)
{
printf("arg:%s", head->str);
head = head->next;
}
}
buf_to_arglist.h:[cpp] view plaincopy
#ifndef CCSH_BUF_TO_ARGLIST_H
#define CCSH_BUF_TO_ARGLIST_H
#include "arglist.h"
cc_arg_list *cc_buf_to_arglist(const char *buf);
#endif
buf_to_arglist.c:[cpp] view plaincopy
#include
#include "buf_to_arglist.h"
#include
#include "error.h"
#include "str_process.h"
cc_arg_list *cc_buf_to_arglist(const char *buf)
{
char *temp = (char *)buf;
cc_arg_list *list = cc_arg_list_make(NULL);
if(!list)
{
cc_err(CC_ERR_NOMEM);
return NULL;
}
while (*temp)
{
char *next_blank = cc_get_next_blank(temp);
if(temp != next_blank)
{
size_t len = next_blank - temp;
cc_arg_obj *obj = cc_arg_obj_make(temp, len, NULL, temp);
if(!obj)
{
cc_err(CC_ERR_NOMEM);
cc_arg_list_free(list);
return NULL;
}
cc_arg_list_append(list, obj);
}
temp = next_blank;
cc_skip_blank(&temp);
}
return list;
}
另外,common.h:[cpp] view plaincopy
#ifndef CCSH_COMMON_H
#define CCSH_COMMON_H
#include
#include
#include
#endif
error.h:[cpp] view plaincopy
#ifndef CCSH_ERROR_H
#define CCSH_ERROR_H
typedef enum
{
CC_OK,
CC_ERR_NOMEM
}CC_ERR;
typedef struct
{
CC_ERR err_no;
char *err_str;
}cc_err_info;
extern cc_err_info errs[];
// global error number
extern int errno;
void cc_err(CC_ERR err_no);
#endif
error.c:[cpp] view plaincopy
#include
#include "error.h"
cc_err_info errs[] =
{
{ CC_OK, "no error"},
{ CC_ERR_NOMEM, "no enough mem"}
};
int errno;
void cc_err(CC_ERR err_no)
{
printf("%s\n", errs[err_no].err_str);
errno = CC_ERR_NOMEM;
}
A: 文件中函数前面的cc是什么?
c语言basic解释器,要理解解释器,做一个小解释器----小话c语言(20)相关推荐
- 做自己的PHP语法解释器,PHP语言之自己动手做一个SQL解释器
本文主要向大家介绍了PHP语言之自己动手做一个SQL解释器,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 这是从别的地方看到的,俺还不会写这么无聊的东西 class DB_text { ...
- python手机解释器_用Python实现一个Python解释器
Byterun是Ned Batchelder和我完成的,建立在Paul Swartz的工作之上.它的结构和主要的Python实现(CPython)差不多,所以理解Byterun会帮助你理解大多数解释器 ...
- 用c语言简单办法做一个字典_幼儿园手工,用废纸筒做一个简单的小蝴蝶,有教程...
幼儿园的手工,除了用卡纸做各种简单的小制作外,纸筒也是常用的手工材料. 下面用纸筒做一个简单的小蝴蝶,做法很简单. 制作过程: 准备材料 废纸筒.剪刀.胶.水彩笔,纸板. 在纸筒上剪下五个圈圈 剪完的 ...
- 零基础做一个微信答题小程序(四)
嗨!大家好,我是小蚂蚁.这一节里,我们继续分享如何在答完题后进行答案的比对,以及如何实现一个回顾功能. 在上一节里我们提到过,为了记录玩家的答题数据,我们创建了一个新的表格--玩家答题选项表,里面记录 ...
- 用 typescript 做一个贪吃蛇小游戏
typescript 做一个贪吃蛇小游戏 搭建环境 创建 tscofig.json 文件 配置如下 {"compilerOptions": {"target": ...
- 利用pgzero做一个接球的小游戏
利用pgzero做一个接球的小游戏 说明 pgzero为python的一个用于游戏制作的库,它基于pygame模块 可用如下命令去安装 pip install pygame pip install p ...
- ai绘画知识:做一个AI绘画小程序要花多少钱?
ai绘画彻底火了,赛道一度火过了当年的短视频行业.目前AI绘画以依托于微信小程序为主.如数画.意间.无界版图.灵境.6PEN.盗梦师这些AI绘画小程序清一色是10月份后上线.仅仅两月时间,但都已圈的用 ...
- 微店铺是什么?做一个微店铺小程序的流程
微店铺是什么? 微店铺是指在微信平台上主要通过微信小程序方式创建的一个在线店铺.微店铺和传统的电商平台相比,具有更低的成本.更好的管理.更便捷的体验等优点,同时也有利于商家与用户之间的互动和沟通. 如 ...
- 【自制分享】低成本做一个B站小电视!(゜-゜)つロ 干杯~-bilibili
[自制分享]低成本做一个B站小电视!(゜-゜)つロ 干杯~-bilibili 原创 Tkwer Tkwer望远镜 4月11日 [自制分享]低成本做一个B站小电视!(゜-゜)つロ 干杯~-bilibil ...
- 如何做一个基于微信小程序的打卡签到
要做一个基于微信小程序的打卡签到系统,可以按照以下步骤进行: 创建小程序:在微信公众平台上注册小程序账号,创建一个新的小程序. 设计打卡签到功能:根据需求,设计打卡签到的功能模块,包括签到按钮.签到时 ...
最新文章
- ​相似算法比较:递归、分治、动态规划、贪心、回溯、分支限界​
- jquery实现开关灯
- c++函数模板和类模板
- 用C++实现二分查找
- 使用C#解压缩文件,缺失ZipArchive类
- 怎么使用biopython_Biopython简单应用程序
- html5怎么给视频加字幕,2018版本的pr如何给视频加字幕?
- VHDL实验二::半加器、一位和四位全加器(绘制原理图)
- Oracle LOB 详解
- 树莓派开发板入门学习笔记1:[转]资料收集及树莓派系统在Ubuntu安装
- Java核心技术 卷Ⅰ 基础知识(原书第10版)
- 别费劲找站长工具共享VIP了 这个工具也不错
- linux eclipse某些项目,某些项目无法导入,因为它们已存在于Eclipse中的工作空间错误中...
- 解决mysql保存数据SQLException: Incorrect string value: ‘\xF0\x9F\x91\x87\xE5\x91...‘ for column ‘错误
- MU-MIMO技术让网络变神速的方法
- 计算机专业的学生常浏览的网站,学生常用网站大全(绝好到的).doc
- nginx 实现根据访问端跳转指定页面
- 【Windows8开发】关于WinRT组件,WinRT dll,Win32 dll,WinRT exe组件的一些尝试
- 店铺管理系统项目总结
- 康宁杰瑞、君实生物、天境生物人事任命;赛诺菲诺维乐在中国上市新适应证 | 医药健闻...
热门文章
- untitled软件怎么用_苹果手机怎么用4G网络于App Store下载超过200MB以上的软件
- python项目画幅好画_python基础教程总结15——2 画幅好画
- security center拒绝访问_Steam被曝出0day提权漏洞,但厂商拒绝修复
- JavaSE——Java基础语法(二进制、变量、方法(函数)、运算符、转义字符)
- pyinstaller--将py文件转化成exe
- js获取dom html元素属性,JS如何通过元素的CLASS属性得到对应的DOM对象?
- URLDecoder: Illegal hex characters in escape (%) pattern ...
- html鼠标悬停效果_【开发小技巧】023—如何使用HTML和CSS实现3D文字效果
- python什么教程好_Python基础教程哪个好
- Android插u盘自动执行,android tv box ---- 插入u盘直接播放指定文件夹中的视频