/*
編譯原理實驗一:詞法分析練習
*/#include #include #include #define tokenmax 100
#define progmax 1000
#define k_esc 27
void analytics(); //詞法分析
void scanner(); //輸入掃瞄
bool isletter(char ch);//判斷字元是否為字母
bool isdigit(char ch);//判斷字元是否為數字
bool concat(char token,char ch);//將ch連線在token後面
int reserve(char token);//對token中字串查關鍵字表,若是關鍵字返回其編碼,否則返回識別符號種別碼10
double ezhishu(int x,double e);//求以e為底的指數
bool iszheng11();//11正規式判斷,判斷是否是(+|-)d+(.d+)(ed+)的科學計數
//全域性變數
char prog[progmax],token[tokenmax];
char ch;
int syn,ptrp,ptrt;//ptrp是緩衝區prog的指標//ptrt是token的指標
double sum;
char *rwtab[6]=;
int main()
}while(key!=k_esc);
return 0;
} //輸入字串並進行詞法分析,返回二元組
void analytics()while(ch!='#');
ptrp=0;
do }while(syn!=0 && syn!=-1);
}void scanner()
else if (ch=='=')
else
break;
case '>':
ptrt=0;
token[ptrt++]=ch;
ch=prog[ptrp++];
if (ch=='=')
else
break;
case '+':
ptrt=0;
token[ptrt++]=ch;
ch=prog[ptrp++];
if(isdigit(ch))
}else
case '-':
ptrt=0;
token[ptrt++]=ch;
ch=prog[ptrp++];
if(isdigit(ch))
}else
case '*':syn=15; token[0]=ch; return;
case '/':syn=16; token[0]=ch; return;
case ':':
ptrt=0;
token[ptrt++]=ch;
ch=prog[ptrp++];
if (ch=='=')
else
return;
case '(':syn=27; token[0]=ch; return;
case ';':syn=26; token[0]=ch; return;
case '=':syn=25; token[0]=ch; return;
case ')':syn=28; token[0]=ch; return;
case '#':syn=0; token[0]=ch; return;
default:
syn= -1; token[0]=ch;return ;}}
}bool isletter(char ch)
bool isdigit(char ch)
bool concat(char token,char ch)
i++;
} return false;
}bool iszheng11()
temp1=--ptrp;
if(ch=='.')
if(ch=='e')
if(temp2=ptrp)
else
} else if(ch=='e')
if(temp20;sum*=e);
return sum;
}
編譯原理課後練習,詞法分析的題目。要求分析乙個科學計數的正規式,實在不會化簡,就直接寫了
詞法分析(編譯原理)
詞法分析 英語 lexical analysis 是電腦科學中將字串行轉換為單詞 token 序列的過程。進行詞法分析的程式或者函式叫作詞法分析器 lexical analyzer,簡稱lexer 也叫掃瞄器 scanner 詞法分析器一般以函式的形式存在,供語法分析器呼叫。完成詞法分析任務的程式稱...
編譯原理詞法分析
1 注意識別符號和無符號整數的重複問題,本人採用map解決。2 cin ch自動忽略空白字元。include include include include using namespace std struct pairs int isboundaries char ch return 3 case...
編譯原理 詞法分析
根據龍書 編譯原理 和 網易雲課堂華保健的 編譯原理 整理而成的。下面是思維導圖的筆記 技術過程 詞法分析的整體流程 2.詞法分析 詞法分析階段 生成詞法單元 一些基礎概念 模式 詞素 詞法單元的規約 串 string 語言 language 語言上的運算 正規表示式 正則集合 正規表示式的代數定律...