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

📄 adsmcoutput.y

📁 这个工具集提供以下结构化分析和UML分析中所用的图形化绘图工具:ER-diagrams, data and event flow diagrams and state-transition diagr
💻 Y
字号:
%{#include "adsmcoutputparse.h"  /*typedef char *CHAR_PTR;#define YYSTYPE CHAR_PTR#define YYDEBUG 1  */int mctraceindex; int mctrace[100]; int mcfeedback; int enabledindex; int enabledhyperedge[2000]; int enabledstatenumber[2000]; char *sourcename[2000];  /* name of source */ char *targetname[2000];    /* name of target */ int sourcestatenumber[2000]; int targetstatenumber[2000]; /* what statecounter does sourcestatenumber[i] belong to?*/ int statecounter; int sourceindex, targetindex;%}%union  {  char *str_ptr;}  /* BISON Declarations */%token IQ QUOTE COMMENT COUNTER  HASH ISZERO ISONE STATE NL ARROW%token <str_ptr> STRING ENABLED IN/* Grammar follows */%%input:  line ;line:  start middle end ;arrowstringseq: STRING arrowstringseq {}| ISONE arrowstringseq | ISZERO arrowstringseq | ARROW arrowstringseq|;stringseq: STRING stringseq {}| ISONE stringseq | ISZERO stringseq |;stringlines: stringseq NL stringlines |;start: stringlines COMMENT arrowstringseq NL;middle:  middle1 middle2 {mcfeedback=1;}|{mcfeedback=0;};middle1: COMMENT stringseq NL  /* "as demonstrated by */ ;middle2: feedback middle4 | feedback;middle4: COMMENT loop COMMENT NL feedback| middle4 COMMENT loop COMMENT NL feedback;feedback:  enabledfeedback {};enabledfeedback: stateseq enabledfeedback2 enabledfeedback {statecounter++;}|/*| enabledfeedback  stateseq enabledfeedback2  { statecounter++;}*/;stateseq:  ARROW state STRING STRING NL {} /* "-> State 1.1 <-" */;state : STATE ;enabledfeedback2 :    enabledfeedbackatom enabledfeedback2 |;enabledfeedbackatom: STRING ENABLED NL {  int i=3; /* STRING starts with "HE_" */  char temp[5];  while ($1[i]!='-'){    temp[i-3]=$1[i];    i++;  }  temp[i-3]='\0';  enabledhyperedge[enabledindex]  = atoi(temp);  enabledstatenumber[enabledindex]= statecounter ;  enabledindex++;}|    STRING ISZERO /*NL  potential source node */{  char temp[100];  int len;  strcpy(temp,$1);  len=strcspn(temp,"=\r\n");  /* printf("name\t%d\t%s\n",len,temp);*/  sourcename[sourceindex]= (char *)malloc(len+1);  strncpy(sourcename[sourceindex],temp,len);    sourcename[sourceindex][len]='\0';  sourcestatenumber[sourceindex]=statecounter;  sourceindex++;}|    STRING ISONE /* NL   potential target node */{  char temp[100];  int len;  strcpy(temp,$1);  len=strcspn(temp," =\r\n");  /*  printf("name\t%d\t%s\n",len,temp);*/  targetname[targetindex]= (char *)malloc(len+1);  strncpy(targetname[targetindex],temp,len);    targetname[targetindex][len]='\0';  targetstatenumber[targetindex]=statecounter;  targetindex++;}|  STRING STRING ISZERO  {}|  STRING STRING ISONE {}/* |  STRING STRING STRING STRING NL {}*/| ENABLED NL {}| NL {}| COUNTER STRING NL       { 	           mctrace[mctraceindex] =atoi($2);          mctraceindex++;       } ;hashseq: HASH | hashseq HASH;loop: stringseq /* STRING= "loop starts here" */;end: end1 end2 |;end1: hashseq NL stringseq commentseq NL stringseq   ;end2: hashseq stringseq commentseq NL stringseq ;/*stringseqnl: stringseqnl NL | NL | stringseq NL | stringseqnl stringseq NL;*/commentseq: COMMENT commentseq| COMMENT; %%

⌨️ 快捷键说明

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