詞法分析程式

2021-04-12 20:18:34 字數 1556 閱讀 4853

上課沒聽啥,一邊看書,一邊做的。基本上,老師的要求是實現了,能把乙個句子(也可以是一整個程式,但還不完善,由於時間急,很多情況來不及考慮了)中的單詞項分析出它是保留字,還是識別符號,運算子等等。

開始是在控制台下做得,**也比較純正:

//lex.h

#ifndef lex_h

#define

lex_h

#include 

<

list

>

#include 

<

string

>

#include 

<

cstddef

>

#define

rev 1

#define

idf 2

#define

con 3

#define

opr 4

#define

fon 5

using

namespace

std;

#endif

//lex.cpp

#include "lex.h"

#include

#include

clex::clex(string str):strindex(0),instr(str)

bool clex::isletter(char& chr) const

bool clex::isdigit(char& chr) const

size_t clex::retract()

void clex::setrevstr()

;size_t num=sizeof tempstr/sizeof tempstr[0];

for(size_t i=0;i

bool clex::isreserve(string& wstr)

bool clex::isidentifier(string& wstr)   //should put behind isreserve

bool clex::isconst(string& wstr)

;size_t num=sizeof tempstr/sizeof tempstr[0];

for(size_t i=0;i

bool clex::isoper(string& wstr)

void clex::setfrontier()

;size_t num=sizeof tempstr/sizeof tempstr[0];

for(size_t i=0;i

bool clex::isfrontier(string& wstr)

void clex::setatt(word& tw)

void clex::getbc()}

void clex::output()

注:getline(cin,str);讀取標準輸入的一行並賦值給str,單純的cin>>str由於空格優先限定原則每次至多只能讀取乙個單詞。如輸入"if ( i = 1 )",str將為"if"而不是"if ( i = 1 )"。

詞法分析程式

include include char scanin 300 scanout 300 extern int testscan char scanin 300 scanout 300 file fin,fout 指向輸入輸出檔案的指標 int main include include include...

詞法分析程式

include include void fenxi char c,char b void word char a void number char a int i 定義全域性變數i int s 1 用來記錄是否存在非法字元 main printf n void number char a 對數字字...

詞法分析程式

1.詞法分析程式的功能 輸入 所給文法的源程式字串。輸出 二元組構成的序列。其中 syn為單詞種別碼。token為存放的單詞自身字串。2.符號與種別碼的對照表 3.詞法規則 字母 a a b c y z 數字 a 1 2 3 4 5 6 7 8 9 s a sa sa0 整數常數 a 1 2 3 4...