編譯原理詞法分析

2021-06-18 14:14:07 字數 2245 閱讀 2383

/*

編譯原理實驗一:詞法分析練習

*/#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 語言上的運算 正規表示式 正則集合 正規表示式的代數定律...