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:
  词法语法基本完成。后期完善工作中

 

原创粉丝点击