VSS是个不错的东西~
来源:互联网 发布:论教学过程最优化 编辑:程序博客网 时间:2024/04/27 23:45
$/LexAly/LexAly.cpp
***************** Version 4 *****************
User: Raywill Date: 07-06-20 Time: 1:21
Checked in $/LexAly
Comment:
1.0版本完成。实现既定功能。可很好地识别C语法子集
Changes:
129 Change: int main_grammar( )
To: int main_grammar(char *filename)
134 Change: if(!(f=fopen("source2.txt","r"))){
To: if(!(f=fopen(filename,"r"))){
135 Change: printf("Fail to open source file!/n");
To: printf("Fail to open source file %s!/n",filename);
158 Change: int main_spell()
To: int main_spell(char *filename)
163 Change: if(!(f=fopen("source2.txt","r"))){
To: if(!(f=fopen(filename,"r"))){
164 Change: printf("Fail to open source file!/n");
To: printf("Fail to open source file %s!/n",filename);
207 Ins:
415 Change: // main_spell();
To: if(argc <= 1 || argc >=4) {
416 Change: main_grammar();
To: printf("Usage:>LexAly [g|s] [filename]/n");
418 Ins: exit(0);
419 Ins: }
420 Ins:
421 Ins: if(argc == 3 ){
422 Ins: argv[1][0] == 'g'? main_grammar(argv[2]): main_spell(argv[2]);
423 Ins: }else if(argc == 2){
424 Ins: argv[1][0] == 'g'? main_grammar("source2.txt") : main_spell("source2.txt");
425 Ins: ;
426 Ins: }
***************** Version 3 *****************
User: Raywill Date: 07-06-19 Time: 23:00
Checked in $/LexAly
Comment:
Changes:
44 Ins: extern void grammar_check();
45 Ins:
46 Ins:
67 Change: /*
To: char input[10000] = {0};
68 Del: int wordtable[][2]=
69 Del: {
70 Del: };
71 Del: */
72 Del: char input[10000] = "for(i=0;i<10;i++){ /n /
73 Del: j=i+10; /n /
74 Del: printf(/"%d/",j); /n /
75 Del: };/n /
76 Del: ";
77 Del:
79 Del: //"if&&(int mynumber=1467;;)";
80 Del: char input2[1000] ="if(i=0){j=1;}";
92 Change: char *strstart;
To: char *strstart; //用于辅助识别num,id
89 Ins: char* getlinestring(int line,char *in_buf);
90 Ins: int nextline();
91 Ins: int getline();
92 Ins: int getcurrentpos();
93 Ins:
94 Ins:
95 Ins: int nextline() { return ++current_line; }
96 Ins: int getline() { return current_line; }
97 Ins: int getcurrentpos() { return (int)instr; }
99 Change: extern void grammar_check();
To: char* getlinestring(int line,char *in_buf)
100 Ins: {
101 Ins: char * t = input;
102 Ins: int i = 1;
103 Ins:
104 Ins: while(*t != 0 && i < line ){
105 Ins: if( *t=='/n' ) i++;
106 Ins: t++;
107 Ins: }
108 Ins:
109 Ins: int len = 0;
110 Ins: while ( *t != '/n' ){
111 Ins: in_buf[len] = *t;
112 Ins: len++;
113 Ins: t++;
114 Ins: }
115 Ins: in_buf[len] = 0;
116 Ins: return in_buf;
117 Ins:
118 Ins: }
119 Ins:
120 Ins: void error(char *cur)
121 Ins: {
122 Ins: printf("Spell Error found at line %d /n",getline());
123 Ins: exit(0);
124 Ins:
125 Ins: }
126 Ins:
127 Ins:
128 Ins: //语法分析
129 Ins: int main_grammar( )
130 Ins: {
131 Ins: int i;
132 Ins:
133 Ins: FILE *f;
134 Ins: if(!(f=fopen("source2.txt","r"))){
135 Ins: printf("Fail to open source file!/n");
136 Ins: exit(0);
137 Ins: }
138 Ins: int k=0;
139 Ins: char c;
140 Ins: while((c=fgetc(f))!=EOF)
141 Ins: {
142 Ins: input[k]=c;
143 Ins: k++;
144 Ins: }
145 Ins: input[k] = 0;
146 Ins:
147 Ins: //打印出程序
148 Ins: printf("%s/n",start_of_instr);
149 Ins:
150 Ins: //开始语法检查
151 Ins: grammar_check();
153 Ins: printf("Success!/n");
154 Ins: return 0;
155 Ins: }
102 Change: int main(int argc, char* argv[])
To: // 词法分析
158 Ins: int main_spell()
126 Del: grammar_check();
128 Del: /*
146 Change: */
To:
149 Del: int nextline()
150 Del: {
151 Del: return ++current_line;
152 Del: }
153 Del:
154 Del: int getline()
155 Del: {
156 Del: return current_line;
157 Del: }
159 Del: int getcurrentpos()
160 Del: {
161 Del: return (int)instr;
162 Del: }
163 Del:
167 Change:
To: #if 0
180 Change:
To: #endif
185 Del:
186 Del:
300 Change: instr++;
To: if( instr[1] == '/' ){ // ‘//’形式的注释
301 Change: return '/';
To: instr += 2;
340 Ins: while( *(instr) != 10 && *(instr) != 0 )
341 Ins: instr ++;
342 Ins: // instr ++;
343 Ins: }else{ // 除号'/'
344 Ins: instr++;
345 Ins: return '/';
346 Ins: }
347 Ins: break;
367 Change: void error(char *cur)
To: int main(int argc, char* argv[])
369 Change: printf("Error found at %d /n",cur-start_of_instr);
To: // main_spell();
370 Change: exit(0);
To: main_grammar();
371 Change:
To: return 0;
372 Change: } To: }
***************** Version 2 *****************
User: Raywill Date: 07-06-19 Time: 21:43
Checked in $/LexAly
Comment:
加入了while语句,空语句的判断
Changes:
3 Change:
To:
36 Del: for(i=0;i<10;i++){
37 Del: $$j=i+10;
38 Del: $$$$$$$$printf("%d",j);
39 Del: $$$$$};
40 Del: $$$$$$$$$
41 Del: '$'就是那些诡异字符
95 Change: int current_line = 0;
To: int current_line = 1;
***************** Version 1 *****************
User: Raywill Date: 07-06-19 Time: 21:16
Created LexAly.cpp
Comment:
词法语法基本完成。后期完善工作中
- VSS是个不错的东西~
- Prototype.js是个不错的东西
- gnuplot是个不错的东西
- mysqlandbox是个不错的东西
- 基于Groovy的Grails,也许是个不错的东西
- 觉得写个游戏的东西也不错
- 不错的东西
- 不错的东西: AutoMapper
- TreeMap是个不错的选择
- Springsource forum是个不错的地方
- sae是个不错的平台
- secureCrt是个不错的软件
- 基础设施是个不错的起点
- AI是个不错的选择
- linux是个迷人的东西
- grid是个有用的东西
- ADS是个非常古怪的东西
- matlab的se是个什么东西
- 瑞星“碎甲(Anti-Rootkits)”技术说明
- 安全的动力 窥探杀毒软件引擎相关技术
- “幽灵”秘密入侵 系统安全模式遭全面破坏
- 一个简单的C语言词法分析与语法分析器【原】
- Delphi制作简单下载者(不可自行定制)
- VSS是个不错的东西~
- sohurobot,抓取搜狐首页的新闻部分的链接
- shawl.qiu Javascript 渐隐渐显类 Faded V1.0
- 网络IT
- JSP分页代码...
- String#inspect
- [ZT]基于ICMP的木马的编写
- C#日期格式化
- RIP路由协议中的split-horizon与split-horizon with poisoned reverse剖析