Location:
Search - ident code
Search list
Description: http server
The kqueue() system call provides a generic method of notifying the user
when an event happens or a condition holds, based on the results of small
pieces of kernel code termed filters. A kevent is identified by the
(ident, filter) pair -http server kqueue () system call provi des a generic method of notifying the user when a n event happens or a condition holds, based on the results of small pieces of kernel co de termed filters. A kevent is identified by the (ident, filter) pair
Platform: |
Size: 805782 |
Author: lishaomin |
Hits:
Description: 词法分析器制作与应用
设计思想
(1)程序主体结构部分:
说明部分
%%
规则部分
%%
辅助程序部分
(2)主体结构的说明
在这里说明部分告诉我们使用的LETTER,DIGIT, IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用标准的头文件和前向说明(forward ,references).这些代码应该再标记\"%{\"和\"%}\"之间 规则部分> 可以包括任何你想用来分析的代码 我们这里包括了忽略所有注释中字符的功能,传送ID名称和字符串常量内容到主调函数和main函数的功能.
(3)实现原理
程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码形式的编码,用以区分之。
PL/0语言的EBNF表示
<常量定义>::=<标识符>=<无符号整数>
<标识符>::=<字母>={<字母>|<数字>}
<加法运算符>::=+|-
<乘法运算符>::=*|/
<关系运算符>::==|#|<|<=|>|>=
<字母>::=a|b|…|X|Y|Z
<数字>::=0|1|2|…|8|9-lexical analyzer production and application design (1) procedure main structural elements : narrative%%%% Rules of Procedure supporting part (2) the main structure of the narrative here to tell us so The LETTER, DIGIT, IDENT (identifier, usually defined as the beginning of the alphabet alphanumeric strings) and STR (string constants, usually defined as double quotes name of the string of characters) what it meant. This part also contains some initialization code. cases # include use as to the use of standard documents and the first to the (forward, references). these codes should labeled "% (" and ")%" between some of the rules
Platform: |
Size: 4846 |
Author: 黄启龙 |
Hits:
Description: /*PL/0编译系统C版本头文件pl0.h*/
/*
typedef enum
{
false,
true
} bool;
*/
#define norw 13 /*关键字个数*/
#define txmax 100 /*名字表容量*/
#define nmax 14 /*number的最大位数*/
#define al 10 /*符号的最大长度*/
#define amax 2047 /*地址上界*/
#define levmax 3 /*最大允许过程嵌套声明层数[0,levmax]*/
#define cxmax 200 /*最多的虚拟机代码数*/
/*符号*/
enum symbol{
nul, ident, number, plus, minus,
times, slash, oddsym, eql, neq,
lss, leq, gtr, geq, lparen,
rparen, comma, semicolon, period, becomes,
beginsym, endsym, ifsym, thensym, whilesym,
writesym, readsym, dosym, callsym, constsym,
varsym, procsym,
};
#define symnum 32
/*名字表中的类型*/
enum object{
constant,
variable,
procedur,
};
/*虚拟机代码*/
enum fct{
lit, opr, lod,
sto, cal, inte,
jmp, jpc,
};
#define fctnum 8
/*虚拟机结构代码*/
struct instruction
{
/*454*/
enum fct f; // 虚拟机代码指令
int l; //引用层与声明层的层次差
int a; //根据f的不同而不同
};
FILE * fas; //输出名字表
FILE * fa; //输出虚拟机代码
FILE * fa1; //输出源文件及其各行对应的首地址
FILE * fa2; //输出结果
bool listswitch; //显示虚拟机代码与否
bool tableswitch; //显示名字与否
char ch; //获取字符的缓冲区,getch使用
enum symbol sym; //当前的符号
char id[al+1]; //当前ident,多出的一个字节用于存放0
int num; //当前number
int cc,ll; //getch使用的计数器,cc表示当前字符(ch)的位置
int cx; //虚拟机代码指针,取值范围[0,cxmax-1]
char line[81]; //读取行缓冲区
char a[al+1]; //临时符号,多出的一个字节用于存放0
struct instruction code[cxmax]; //存放虚拟机代码的数组
char word[norw][al]; //保留字
enum symbol wsym[norw]; //保留字对应的符号值
enum symbol ssym[256]; //单字符的符号值
char mnemonic[fctnum][5]; //虚拟机代码指令名称
bool declbegsys[symnum]; //表示声明开始的符号集合
bool statbegsys[symnum]; //表示语句开始的符号集合
bool facbegsys[symnum]; //表示因子开始的符号集合
//名字表结构
struct tablestruct
{
char name[al]; //名字
enum object kind; //类型:const,var,array or procedure
int val; //数值,仅const使用
int level; //所须层,仅const不能用
int adr; //地址,仅const不能用
int size; //需要分配的数据空间,仅procedure使用
};
struct tablestruct table[txmax]; //名字表
FILE * fin;
FILE * fout;
char fname[al];
int err; //错误计数器
//当函数中发生fatal error时,返回-1告知调用它的函数,最终退出程序
#define getsymdo if(-1==getsym()) return -1
#define getchdo if(-1==getch()) return -1
#define testdo(a,b,c) if(-1==test(a,b,c)) return -1
#define gendo(a,b,c) if(-1==gen(a,b,c)) return -1
#define expressiondo(a,b,c) if(-1==expression(a,b,c)) return -1
#define factordo(a,b,c) if(-1==factor(a,b,c)) return -1
#define termdo(a,b,c) if(-1==term(a,b,c)) return -1
#define conditiondo(a,b,c) if(-1==condition(a,b,c)) return -1
#define statementdo(a,b,c) if(-1==statement(a,b,c)) return -1
#define constdeclarationdo(a,b,c) if(-1==constdeclaration(a,b,c)) return -1
#define vardeclarationdo(a,b,c) if(-1==vardeclaration(a,b,c)) return -1
void error(int n);
int getsym();
int getch();
void init();
int gen(enum fct x,int y ,int z);
int test(bool *s1,bool *s2,int n);
int inset(int e,bool *s);
int addset(bool *str,bool * s1,bool * s2,int n);
int subset(bool *str,bool * s1,bool * s2,int n);
int mulset(bool *str,bool * s1,bool * s2,int n);
int block(int lev,int tx,bool * fsys);
void interpret();
int factor(bool * fsys,int * ptx,int lev);
int term(bool * fsys,int * ptx,int lev);
int condition(bool * fsys,int * ptx,int lev);
int expression(bool * fsys,int * ptx,int lev);
int statement(bool * fsys,int * ptx,int lev);
void listcode(int cx0);
int vardeclaration(int *ptr, int lev,int *ptx);
int constdeclaration(int *ptr, int lev,int *ptx);
int position(char * idt,int tx);
void enter(enum object k,int * ptx,int lev, int * pdx);
int base(int l,int * s,int b)
Platform: |
Size: 25139 |
Author: xqq771084591 |
Hits:
Description: http server
The kqueue() system call provides a generic method of notifying the user
when an event happens or a condition holds, based on the results of small
pieces of kernel code termed filters. A kevent is identified by the
(ident, filter) pair -http server kqueue () system call provi des a generic method of notifying the user when a n event happens or a condition holds, based on the results of small pieces of kernel co de termed filters. A kevent is identified by the (ident, filter) pair
Platform: |
Size: 805888 |
Author: |
Hits:
Description: 词法分析器制作与应用
设计思想
(1)程序主体结构部分:
说明部分
%%
规则部分
%%
辅助程序部分
(2)主体结构的说明
在这里说明部分告诉我们使用的LETTER,DIGIT, IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用标准的头文件和前向说明(forward ,references).这些代码应该再标记"%{"和"%}"之间 规则部分> 可以包括任何你想用来分析的代码 我们这里包括了忽略所有注释中字符的功能,传送ID名称和字符串常量内容到主调函数和main函数的功能.
(3)实现原理
程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码形式的编码,用以区分之。
PL/0语言的EBNF表示
<常量定义>::=<标识符>=<无符号整数>
<标识符>::=<字母>={<字母>|<数字>}
<加法运算符>::=+|-
<乘法运算符>::=*|/
<关系运算符>::==|#|<|<=|>|>=
<字母>::=a|b|…|X|Y|Z
<数字>::=0|1|2|…|8|9-lexical analyzer production and application design (1) procedure main structural elements : narrative%%%% Rules of Procedure supporting part (2) the main structure of the narrative here to tell us so The LETTER, DIGIT, IDENT (identifier, usually defined as the beginning of the alphabet alphanumeric strings) and STR (string constants, usually defined as double quotes name of the string of characters) what it meant. This part also contains some initialization code. cases# include use as to the use of standard documents and the first to the (forward, references). these codes should labeled "% (" and ")%" between some of the rules
Platform: |
Size: 4096 |
Author: 黄启龙 |
Hits: