詞法分析之LED檔案生成程式 除錯中

2021-04-18 20:28:14 字數 4316 閱讀 7284

#include #include #include

/* 關鍵字表巨集定義 */ #define keytype  int // #define errtype  -1 #define files  0 #define date  1 #define font_name 2 #define font_size 3 #define times  4 #define head  5 #define data_begin 6 #define data_end 7 #define keylen  8

/* led位元位定義 */ #define div (('1')-('0')) // 分隔符代表的整數 01 #define limit_times '0'  // 限次/限時控制開關,'0'限次,'1'限時。 #define is_time  '0'  // 是否定時,'0'定時,'1'不定時 #define text_type '0'  // 單行文字型別值(靜態0,左滾1,右滾2,上滾3,下滾4) #define font_type '0'  // 字型(取值為0、4、8、12字元型數字,分別為常規、粗體、斜體、粗斜體)

char *keyword[keylen] = ;

keytype matchwithkeyword(char *strbuff); // 關鍵字表查表 int getstring(char *strbuff,file *fp); int writeledfile(file *writefilepoint,char *filenamebuff,char *fontbuff,char *fontsize,char *times,char *headbuff,char *bodybuff);

ch = fgetc(readfilepoint);    while(ch!='>')    // 迴圈讀入標記值到臨時緩衝區           // 迴圈結束後,緩衝區中將存放<>之間的字串    tempbuff[len] = '/0';  // 將字元陣列構造成字串        switch(matchwithkeyword(tempbuff)) // 識別每個字串的型別       }   else    ch = fgetc(readfilepoint);  }    fclose(readfilepoint);  return 1; }

int getstring(char *strbuff,file *fp)  strbuff[i] = '/0';  return i; }

int writeledfile(file *writefilepoint,char *filenamebuff,char *fontbuff,char *fontsize,char *times,char *headbuff,char *bodybuff)

return 1; }

int initfilehead(int pagenumber,unsigned char *buff) // 初始化檔案頭  buff[0] = pagenumber; // 初始化頁面數  buff[0] = 0;  buff[1] = 0;  buff[2] = 0;

return 1; // 建立成功後返回1 }

int initdatapagehead(int offset,unsigned char *buff) // 初始化資料頁頭部資訊  buff[0] = offset; // 初始化資料頁內部資料偏移  buff[0] = 0;  buff[1] = 0;  buff[2] = 0;

return 1; // 建立成功後返回1 }

int initdatapageinfo(unsigned char *outputbuff,int *datapagelength,unsigned char looptimes)

int initdatatext(unsigned char *textbuff,int *datatextlength,unsigned char font) // 初始化頁內文字顯示資訊 閱讀

(2)|

(0)

/******************** ** **led檔案生成工具 ** *********************/

#include #include #include

#define div (('1')-('0')) // 巨集定義分隔符代表的整數 01 #define dpi_len sizeof(data_page_info) #define dpt_len sizeof(data_page_text)

typedef struct n_data_page_textdata_page_text,*p_data_page_text;

/* 乙個位元組的偏移量:從資料頁顯示信 息開始到本資料頁結束的長度(整型) 三個零:特徵位00+00+00(整型) */

typedef struct n_datepage // 資料頁結構定義 date_page,*p_date_page;

/* led檔案頭:第乙個位元組:頁數目(整型) 三個零:特徵位00+00+00(整型) */

typedef struct n_led // led檔案定義 led,*p_led;

int dpt_len = 0; int dpi_len = 0; unsigned char buff[1024*1024];

int get_text_length(); file *f1,*f2,*f3; file *fpo1,*fpo2,*fpo3,*fpo4; void init_dp(); void init_dpt(p_data_page_text dpt); void init_dpi(p_data_page_info dpi);

int main()   fwrite(buff,file_len,1,fpo4);  }  fclose(fpo4);  return 1; }

void init_dp()  chr = fgetc(f1);  while(!feof(f1))    fwrite(buff,dpi_len+dpt_len+4,1,fpo3); } void init_dpt(p_data_page_text dpt)   k = 0;   buff[len++] = 1;   while(dpt->y[k])      k = 0;   buff[len++] = 1;   while(dpt->l[k])      k = 0;   buff[len++] = 1;   while(dpt->h[k])      k = 0;   buff[len++] = 1;   buff[len++] = dpt->text_action;   buff[len++] = 1;   for(int n = 0; n < 3; n++)    buff[len++] = dpt->bgcolor[n];   buff[len++] = 1;   while(dpt->font[k])      k = 0;   buff[len++] = 1;   while(dpt->font_size[k])      k = 0;   buff[len++] = 1;   for(int l = 0; l < 3; l++)    buff[len++] = dpt->font_color[l];   buff[len++] = 1;   buff[len++] = dpt->font_style;   buff[len++] = 1;   buff[len++] = dpt->roll_speed_align;   buff[len++] = 1;   while(dpt->text[k])      k = 0;   buff[len++] = 1;   buff[len++] = dpt->end1;   buff[len++] = 1;   buff[len++] = dpt->end2;   buff[len++] = 1;   buff[len++] = dpt->end3;   buff[len++] = dpt->end4;   dpt_len += len;      fwrite(buff,len,1,fpo1);  } }

void init_dpi(p_data_page_info dpi)  k = 0;  buff[dpi_len++] = 1;  buff[dpi_len++] = '0';  buff[dpi_len++] = 1;  buff[dpi_len++] = 1;  buff[dpi_len++] = dpi->limit_time_flag;  buff[dpi_len++] = 1;  buff[dpi_len++] = dpi->times;  buff[dpi_len++] = 1;  buff[dpi_len++] =  dpi->is_time;  buff[dpi_len++] = 1;  while(dpi->wuci_time[k]!='\0')    k = 0;  buff[dpi_len++] = dpi->gap;  while(dpi->shike_time[k]!='\0')     buff[dpi_len++] = 1;   } /* 取得文字長度 */ int get_text_length()  fclose(fpi);    return length; }

詞法分析程式

上課沒聽啥,一邊看書,一邊做的。基本上,老師的要求是實現了,能把乙個句子 也可以是一整個程式,但還不完善,由於時間急,很多情況來不及考慮了 中的單詞項分析出它是保留字,還是識別符號,運算子等等。開始是在控制台下做得,也比較純正 lex.h ifndef lex h define lex h incl...

詞法分析程式

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 對數字字...