





















完整代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>char IS_CHAR(char x)
{
return (x >= 'A' && x <= 'Z') || (x >= 'a' && x <= 'z')? true:false;
}char *strtrim(char *s)
{
char *p = NULL,*right = s,*left = s;while(isspace(*left)) left++;
p = left;
while(*right != '\0') right++;
for(right--;isspace(*right);right--);
*(right+1) = '\0';
strcpy(s,p);
return s;
}void parse_body(const char *s,
char *section,
char *key,
char *value)
{
typedef enum _body_state body_state;
enum _body_state
{
STATE_NONE = 0,
STATE_SECTION,
STATE_KEY,
STATE_SPLIT,
STATE_IN_SECTION,
STATE_VALUE,
STATE_COMMENT
};char *p_section_start;
char *p_key_start;
char *p_value_start;char *p = NULL;
body_state state
= STATE_NONE;}
break; strtrim(p_section_start);
strtrim(p_key_start);
strtrim(p_value_start);
free(tmp);
}
parse_body(buff,
"people","name",value);free(buff);
return 0;my.conf:
#test title
#this is a comment
#
people
{
name
box
{
widget
seller
{
n73
学习了李先静老师的系统程序员成长计划,自己实现了个简单的状态机,感觉真是威力无穷啊。。
配合词法树就可以实现词法解析处理了,嘿嘿,年底也可以写个简单的解释语言玩玩咯
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。