• 大小: 7.97MB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-01
  • 语言: 其他
  • 标签: 编译原理  

资源简介

里面包括了哈工大威海,编译原理实验的全部源码和报告 有词法分析 语法分析 语义分析和中间代码生成 VC 6.0编写

资源截图

代码片段和文件信息

#include  
#include   
#include   
#include    
using namespace std;  
#define  MAX 5        
char ch =‘ ‘;     
string keyword[5]={“do““else““if““while“ “then“ };
                 // 常见关键字数组 只用了部分
//************************关键字的处理过程****************************************
int isKeyWord(string c){        
   int i;
   for(i=0;i      if(keyword[i].compare(c)==0)
  return 1;  //与关键字数组中用相同的就返回真,否则假
       } 
    return 0;
}
//************************字母的处理过程****************************************
int isAlpha(char c) {      
    if(((c<=‘z‘)&&(c>=‘a‘))||((c<=‘Z‘)&&(c>=‘A‘))) 
return 1; //比较字母的ASCII码值,在大小写范围内,返回真,否则假。
    else 
return 0;
}
//************************数字的处理过程****************************************
int isNum(char c){        
     if(c>=‘0‘&&c<=‘9‘) 
 return 1; //比较字母的ASCII码值,在0-9范围内,返回真,否则假。
     else 
 return 0;
}
//************************运算符处理过程*******************************************
// 过程中指针总是向前看一个,决定当前的各种单词是否结束,或是根据后边的输入消除当前字符二义性。
void caculate(FILE *fpinchar *out_fin){
ofstream out(out_finios::out); //文件token.txt输入内存
    string arr=““;                          //字符串    
 while((ch=fgetc(fpin))!=EOF)
 {        
         arr=““;                         
         if(ch==‘ ‘||ch==‘\t‘||ch==‘\n‘)
 {
 }   //空格,缩进,换行,均不做操作   
         else if(isAlpha(ch))
 {                    //若有字符
              while(isAlpha(ch)||isNum(ch))
{      //当有字符或数字的时候,循环
                    arr=arr+ch;           
                    ch=fgetc(fpin);         
  }
fseek(fpin-1LSEEK_CUR);        //循环结束后,重定位流指针从当前位置左移一位。开始判断新的输入是什么类型 
if (isKeyWord(arr))
{
out< }    //若是关键字,则输出类型1,关键字 
else  out<               }

 else if(isNum(ch)){  
  int  i=1;//若是数字
                  while(isNum(ch))// 数字 || . &&(得到一个字符||字符是e||输入是e)
  {   
  arr+=ch;
  ch=fgetc(fpin);
  i++;
  }
                 // fseek(fpin-iLSEEK_CUR);  // 指针左移3
                  out<             }
       else switch(ch){          
               case‘+‘:
               case‘-‘ :
               case‘*‘ :
               case‘=‘ :
               case‘/‘ :out<               case‘(‘ :
               case‘)‘ :
               case‘[‘ :
               case‘]‘ :     
               case‘;‘ :
   case‘#‘ :
               case‘.‘ :
               case‘‘ :
               case‘{‘ :
               case‘}‘ :out<    
  /* case ‘“‘:{
    string string1=““;
do 
{
 string1+=ch;
ch=fgetc(fpin);
 } while (ch!=‘“‘);//循环得到 ““
string1+=ch;          
out< }
br

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-05-24 22:07  编译原理实验\
     目录           0  2012-05-23 02:04  编译原理实验\2\
     目录           0  2012-05-24 22:07  编译原理实验\编译原理实验\
     目录           0  2012-05-24 22:07  编译原理实验\编译原理实验2\
     文件     2712032  2012-05-23 00:35  编译原理实验\编译原理实验2.zip
     目录           0  2012-05-24 22:07  编译原理实验\编译原理实验2\编译原理实验上一届的\
     目录           0  2012-05-24 22:07  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\
     目录           0  2012-05-24 22:07  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\Debug\
     文件      577621  2011-07-09 22:02  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\Debug\token1.exe
     文件      826032  2011-07-09 22:02  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\Debug\token1.ilk
     文件      253033  2011-07-09 22:02  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\Debug\token1.obj
     文件     2178064  2011-07-09 22:02  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\Debug\token1.pch
     文件     1147904  2011-07-09 22:02  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\Debug\token1.pdb
     文件       74752  2011-07-09 22:02  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\Debug\vc60.idb
     文件      110592  2011-07-09 22:02  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\Debug\vc60.pdb
     文件         597  2011-07-09 22:02  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\token.txt
     文件        6736  2011-07-10 11:09  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\token1.cpp
     文件        4284  2011-07-09 22:03  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\token1.dsp
     文件         520  2011-07-09 22:02  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\token1.dsw
     文件       41984  2012-05-18 16:45  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\token1.ncb
     文件       48640  2012-05-18 16:45  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\token1.opt
     文件        1300  2011-07-09 22:02  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\token1.plg
     文件          98  2011-06-02 23:57  编译原理实验\编译原理实验2\编译原理实验上一届的\实验一,token1\tokentest.txt
     目录           0  2012-05-24 22:07  编译原理实验\编译原理实验2\编译原理实验上一届的\实验三,YUYI1\
     目录           0  2012-05-24 22:07  编译原理实验\编译原理实验2\编译原理实验上一届的\实验三,YUYI1\Debug\
     文件         172  2011-07-11 11:39  编译原理实验\编译原理实验2\编译原理实验上一届的\实验三,YUYI1\Debug\string.txt
     文件         114  2011-07-11 11:38  编译原理实验\编译原理实验2\编译原理实验上一届的\实验三,YUYI1\Debug\test.txt
     文件         296  2011-07-11 11:39  编译原理实验\编译原理实验2\编译原理实验上一届的\实验三,YUYI1\Debug\token.txt
     文件       82944  2011-07-11 11:34  编译原理实验\编译原理实验2\编译原理实验上一届的\实验三,YUYI1\Debug\vc60.idb
     文件      110592  2011-07-11 11:34  编译原理实验\编译原理实验2\编译原理实验上一届的\实验三,YUYI1\Debug\vc60.pdb
     文件      610387  2011-07-11 11:34  编译原理实验\编译原理实验2\编译原理实验上一届的\实验三,YUYI1\Debug\YUYI1.exe
............此处省略86个文件信息

评论

共有 条评论