⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 machop.c

📁 简单的编译词法分析 in c
💻 C
字号:
/*  machop.c  We have to implement four operations to machine:  CONNECTION:             -----------       -----------       ----> |   m1    | ----> |   m2    |             -----------       -----------  UNION:                   --------         epsilon  /|  m1  |\                /  --------  \         ---->[S]             [Z]---->                \            /	          \--------/                   |  m2  |                   --------   STAR:                    ----------                    |        |                    v        |              -----------    |        ----->|    m1   |-----              -----------   SUB-MACHINE:                  'ch'       ----->[S]-------->[Z]------>   */#include "machop.h"#include<stdio.h>#define STKSIZ 10Mach mstk[STKSIZ];int msp = 0;#undef STKSIZ#define PUSH(m) (mstk[msp++] = m)#define POP() (mstk[--msp])#define EMPTY() (msp == 0)#define PEEK() (mstk[msp-1])#define EP '$'void conn(){  Mach m1, m2, m3;
  m2 = POP();  m1 = POP();  addtran(m1.t, m2.h, EP);  m3.h = m1.h;   m3.t = m2.t;  PUSH(m3);}void uni(){  Mach m1, m2, m3;  stat s, z;  m2 = POP();  m1 = POP();  s = new_st();  z = new_st();  addtran(s, m1.h, EP);  addtran(s, m2.h, EP);  addtran(m1.t, z, EP);  addtran(m2.t, z, EP);  m3.h = s;  m3.t = z;  PUSH(m3);}void star(){  Mach m1;  m1 = PEEK();  addtran(m1.t, m1.h, EP);  addtran(m1.h, m1.t, EP);}void subm(char ch){  Mach m1;  stat s, z;  s = new_st();  z = new_st();  addtran(s, z, ch);  m1.h = s;  m1.t = z;    PUSH(m1);}void finalm(){  finm = PEEK();  printf("\nstart state: %d\nfinal state: %d\n", 	 finm.h, finm.t);}#undef PUSH#undef POP#undef EMPTY#undef PEEKextern char expr[];extern int elen;void genm(){ int i;  puts("\nLevel3:\n\t");   for (i=0; i<elen; i++) {    char ch = expr[i];    switch (ch) {    case '.':      conn();      break;    case '|':      uni();      break;    case '*':      star();      break;    default:      subm(ch);      break;    }  }  finalm();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -