10、链式哈希表的应用-符号表
来源:互联网 发布:lda模型 矩阵分解 编辑:程序博客网 时间:2024/05/21 10:14
应用简介:哈希表会应用于编译器中,满足快速存取符号信息的需求。把源码中有组织的字符转换为有意义的字符串(语义转换),一般保存符号的两个属性:语义和标记类型。
每次从输入字符串流中接收一个字符串,默认字符串之间以空格隔开。如果该字符串为全数字标价记为digit;否则为other。
#ifndef _LEX_H#define _LEX_Htypedef enum _TOKEN{end, error, digit, other} TOKEN;//桶中每个链表节点data指向SYMBOLtypedef struct _SYMBOL{ char *lexeme;//字符串 TOKEN token;//标记 }SYMBOL;#endif
#include <stdio.h>#include <ctype.h>#include <stdlib.h>#include <string.h>#include "lex.h"#include "../Chtbl/chtbl.h"//istream为输入流, symtbl为链式哈希表 //返回插入元素的类型 TOKEN lex(const char *istream, CHTbl *symtbl){ TOKEN token; SYMBOL *symbol; int length, retval, i; if((symbol = (SYMBOL *)malloc(sizeof(SYMBOL))) == NULL) return error; //从输入流读入一个字符串放入symbol->lexeme if((symbol->lexeme = next_token(istream)) == NULL) { free(symbol); return end; } length = strlen(symbol->lexeme); //判断该字符串是不是数字 for(i = 0; i < length; i++) { if(!isdigit(symbol->lexeme[i])) symbol->token = other; } memcpy(&token, &symbol->token, sizeof(TOKEN)); //向哈希表中插入符号 ,以结构体symbol为元素 if((retval = chtbl_insert(symtbl, symbol)) < 0) { free(symbol); return error; } else if(retval == 1) { free(symbol); } return token;}
阅读全文
0 0
- 10、链式哈希表的应用-符号表
- 线性表的链式实现应用----学生信息管理系统
- 十四、符号表Map(Set)的应用
- 利用之前的链式栈实现左右符号匹配检测
- 哈希表的链式存储
- 链式哈希表的实现
- 链式表的实现
- 链式表的实现
- (五)链式堆栈的实现与应用
- 各种运算符号的应用
- 栈的应用---平衡符号
- 栈的应用--平衡符号
- 栈的应用---平衡符号
- 栈的应用----平衡符号
- 数据结构实验之图书馆借书线性表的顺序和链式存取结构的应用
- 数据结构与算法(Java描述)-10、链式队列以及优先级队列的应用
- LinList.h (线性表的链式表示方法及简单应用)
- 线性表——链式存储结构之双链表的应用
- git 使用
- 【问题汇总】开发中常见问题的解决办法
- Collections框架简介
- Linux安装3.5.X版本的Python
- 简单实现Android本地音乐的播放
- 10、链式哈希表的应用-符号表
- 2017暑假训练第八天
- HDU 6092:Rikka with Subset
- SVM学习
- NYOJ 108 士兵杀敌(一)
- Java设计模式——工厂模式
- 设置postgresql的search_path
- C++ Socket 实例
- 【HDU 1024】 Max Sum Plus Plus【动态规划求最大M子段和详解-好题 】