武汉大学编译原理第4次作业
来源:互联网 发布:adobe软件图标大全 编辑:程序博客网 时间:2024/05/05 22:52
/*************************************************************************> File Name: xml.y> Created Time: 2015年11月16日 星期一 19时46分36秒 ************************************************************************/%{#include <string.h>#include <stdio.h>#include "xml_tree.h"void yyerror(const char *);extern char * yytext;extern int yylineno;#define YYDEBUG_LEXER_TEXT ""%}%union { Xml_tree *node; List *list;};%token <node>STAG ETAG TEXT%type <list>tag_list%%start : tag_list {print_tree(0, $1);} ;tag_list : STAG tag_list ETAG tag_list {char* result= "";strcat(result,'<');strcat(result,$1->tag_name);strcat(result,'>');strcat(result,$2->node->tag_name);strcat(result,'<');strcat(result,$3->tag_name);strcat(result,'>');strcat(result,$4->node->tag_name);$$ = result; } | STAG tag_list error tag_list{ char* result= "";strcat(result,'<');/* 匹配到开始标签 */strcat(result,$1->tag_name);strcat(result,'>');strcat(result,$2->node->tag_name);/* 添加孩子 */strcat(result,'<');strcat(result,$1->tag_name);/* 添加同级标签 */strcat(result,'>');strcat(result,$4->node->tag_name);$$ = result; } | TEXT tag_list {char* result= ""; /* 处理标签不匹配问题 , 添加容错*/strcat(result,$1->tag_name);strcat(result,$2->node->tag_name);$$ = result; } | /* empty */ { $$ = NULL;/* 匹配到结束标签 直接返回空 */ };%%int main(){ yyparse(); return 0;}void yyerror(const char *s){ printf("%s\n");}
/*************************************************************************> File Name: xml.y> Author: 秦贤康> Mail: qinxiankang@gmail.com> Created Time: 2015年11月16日 星期一 19时46分36秒 ************************************************************************/%{#include <string.h>#include <stdio.h>#include "xml_tree.h"void yyerror(const char *);extern char * yytext;extern int yylineno;#define YYDEBUG_LEXER_TEXT ""%}%union { Xml_tree *node; List *list;};%token <node>STAG ETAG TEXT%type <list>tag_list%%start : tag_list {print_tree(0, $1);} ;tag_list : STAG tag_list ETAG tag_list {/* < tag_list /> tag_list *//* 匹配到开始标签 */Xml_tree list = make_list(tag_list);/* 添加孩子 */add_child(tag_list, Xml_tree);/* 添加同级标签 */add_list(list,tag_list); } | STAG tag_list error tag_list{/* < tag_list error tag_list *//* 处理标签不匹配问题 , 添加容错?*/Xml_tree list = make_list(tag_list);Error(error);add_list(list,tag_list); } | TEXT tag_list {/* text tag_list */list = make_list(yylval);add_list(list, tag_list); } | /* empty */ { /* 匹配到结束标签 直接返回空 */ $$ = NULL; };%%int main(){ yyparse(); return 0;}void yyerror(const char *s){ printf("%s\n",s);}
0 0
- 武汉大学编译原理第4次作业
- 武汉大学编译原理第五次作业
- 武汉大学编译原理第一次作业
- 武汉大学编译原理第二次作业
- 武汉大学编译原理第三次作业
- 第4次作业
- c++第4次作业
- C++第4次作业
- c++第4次作业
- C++第4次作业
- c++第4次作业
- C++第4次作业
- c++第4次作业
- c++第4次作业
- C++第4次作业
- C++第4次作业
- c++第4次作业
- C++第4次作业
- javaSE(01)
- 安卓高级xml布局(一)高级输入框EditText设计
- CoreData 数组越界
- 为什么要写博客!!!
- c++利用链表写一个简单的栈
- 武汉大学编译原理第4次作业
- Java多线程安全问题
- 深入理解BootStrap Item12 -- 标签(label)与徽章(badge)
- leetcode 50:Pow(x, n)
- 虚调用及其调用的具体形式
- ubuntu12.04连接winscp服务器时出现了:拒绝了SFTP连接,但它监听FTP连接。 想要用FTP协议来代替SFTP吗?最好是用加密的。
- 搞ACM的你伤不起(转)
- 浅析光电式传感器
- ViewPager和视差动画