📄 parser.dlg
字号:
<</* parser.dlg -- DLG Description of scanner * * Generated from: antlr.g * * Terence Parr, Will Cohen, and Hank Dietz: 1989-1998 * Purdue University Electrical Engineering * With AHPCRC, University of Minnesota * ANTLR Version 1.33MR14 */#define ANTLR_VERSION 13314#include "pcctscfg.h"#include PCCTS_STDIO_H#include "set.h"#include <ctype.h>#include "syn.h"#include "hash.h"#include "generic.h"#define zzcr_attr(attr,tok,t)#include "antlr.h"#include "tokens.h"#include "dlgdef.h"LOOKAHEADvoid zzerraction(){ (*zzerr)("invalid token"); zzadvance(); zzskip();}>><<%%lexaction/* maintained, but not used for now */set AST_nodes_refd_in_actions = set_init;int inAlt = 0;set attribsRefdFromAction;int UsedOldStyleAttrib = 0;int UsedNewStyleLabel = 0;#ifdef __USE_PROTOSchar *inline_set(char *);#elsechar *inline_set();#endif/* MR1 10-Apr-97 MR1 Previously unable to put right shift operator *//* MR1 in DLG action */int tokenActionActive=0; /* MR1 */ >><<%%lexactionstatic char *#ifdef __USE_PROTOSgetFileNameFromTheLineInfo(char *toStr, char *fromStr)#elsegetFileNameFromTheLineInfo(toStr, fromStr)char *toStr, *fromStr;#endif{ int i, j, k; if (!fromStr || !toStr) return toStr; /* find the first " */ for (i=0; (i<MaxFileName) && (fromStr[i] != '\n') && (fromStr[i] != '\r') && (fromStr[i] != '\"'); i++) /* nothing */ ; if ( (i == MaxFileName) || (fromStr[i] == '\n') || (fromStr[i] == '\r') ) { return toStr;} /* find the second " */ for (j=i+1;(j<MaxFileName) &&(fromStr[j] != '\n') &&(fromStr[j] != '\r') &&(fromStr[j] != '\"');j++) /* nothing */ ; if ((j == MaxFileName) ||(fromStr[j] == '\n') ||(fromStr[j] == '\r') ) { return toStr;} /* go back until the last / or \ */ for (k=j-1;(fromStr[k] != '\"') &&(fromStr[k] != '/') &&(fromStr[k] != '\\');k--) /* nothing */ ; /* copy the string after " / or \ into toStr */ for (i=k+1; fromStr[i] != '\"'; i++) {toStr[i-k-1] = fromStr[i];} toStr[i-k-1] = '\0'; return toStr;}/* MR14 end of a block to support #line in antlr source code */ >><<%%lexaction#ifdef __USE_PROTOSvoid mark_label_used_in_sem_pred(LabelEntry *le) /* MR10 */#elsevoid mark_label_used_in_sem_pred(le) /* MR10 */LabelEntry *le;#endif{ TokNode *tn; require (le->elem->ntype == nToken,"mark_label_used... ntype != nToken"); tn=(TokNode *)le->elem; require (tn->label != 0,"mark_label_used... TokNode has no label"); tn->label_used_in_semantic_pred=1;}>>%%START@ << NLA = Eof; /* L o o k F o r A n o t h e r F i l e */ { FILE *new_input; new_input = NextFile(); if ( new_input == NULL ) { NLA=Eof; return; } fclose( input ); input = new_input; zzrdstream( input ); zzskip(); /* Skip the Eof (@) char i.e continue */ } >>[\t\ ]+ << NLA = 76; zzskip(); >>\n|\r|\r\n << NLA = 77; zzline++; zzskip(); >>\[ << NLA = 78; zzmode(ACTIONS); zzmore(); istackreset(); pushint(']'); >>\<\< << NLA = 79; action_file=CurFile; action_line=zzline; zzmode(ACTIONS); zzmore(); list_free(&CurActionLabels,0); /* MR10 */ numericActionLabel=0; /* MR10 */ istackreset(); pushint('>'); >>\" << NLA = 80; zzmode(STRINGS); zzmore(); >>/\* << NLA = 81; zzmode(COMMENTS); zzskip(); >>\*/ << NLA = 82; warn("Missing /*; found dangling */"); zzskip(); >>// << NLA = 83; zzmode(CPP_COMMENTS); zzskip(); >>#line[\ \t]* [0-9]+ {[\ \t]* \"~[\"]+\" ([\ \t]* [0-9]*)* } (\n|\r|\r\n) << NLA = 84; zzline = atoi(zzbegexpr+5) - 1; zzline++; zzmore(); getFileNameFromTheLineInfo(FileStr[CurFile], zzbegexpr); >>#line ~[\n\r]* (\n|\r|\r\n) << NLA = 85; zzline++; zzmore(); >>\>\> << NLA = 86; warn("Missing <<; found dangling \>\>"); zzskip(); >>. << NLA = WildCard; >>\@ << NLA = 88; FoundException = 1; /* MR6 */ FoundAtOperator = 1; >>{\\}#header << NLA = 92; >>{\\}#first << NLA = 93; >>{\\}#parser << NLA = 94; >>{\\}#tokdefs << NLA = 95; >>\} << NLA = 96; >>class << NLA = 97; >>\{ << NLA = 100; >>! << NLA = 101; >>\< << NLA = 102; >>\> << NLA = 103; >>: << NLA = 104; >>; << NLA = 105; >>{\\}#lexaction << NLA = 106; >>{\\}#lexmember << NLA = 107; >>{\\}#lexprefix << NLA = 108; >>{\\}#pred << NLA = 109; >>\|\| << NLA = 110; >>&& << NLA = 111; >>\( << NLA = 112; >>\) << NLA = 113; >>{\\}#lexclass << NLA = 114; >>{\\}#errclass << NLA = 115; >>{\\}#tokclass << NLA = 116; >>.. << NLA = 117; >>{\\}#token << NLA = 118; >>= << NLA = 119; >>[0-9]+ << NLA = 120; >>\| << NLA = 121; >>\~ << NLA = 122; >>^ << NLA = 123; >>{\\}#pragma << NLA = 124; >>approx << NLA = 125; >>LL(1) << NLA = 126; >>LL(2) << NLA = 127; >>\* << NLA = 128; >>\+ << NLA = 129; >>? << NLA = 130; >>=> << NLA = 131; >>exception << NLA = 132; >>default << NLA = 133; >>catch << NLA = 134; >>[a-z] [A-Za-z0-9_]* << NLA = NonTerminal; while ( zzchar==' ' || zzchar=='\t' ) { zzadvance(); } if ( zzchar == ':' && inAlt ) NLA = LABEL; >>[A-Z] [A-Za-z0-9_]* << NLA = TokenTerm; while ( zzchar==' ' || zzchar=='\t' ) { zzadvance(); } if ( zzchar == ':' && inAlt ) NLA = LABEL; >>{\\}#[A-Za-z0-9_]* << NLA = 135; warn(eMsg1("unknown meta-op: %s",LATEXT(1))); zzskip(); >>%%STRINGS@ << NLA = Eof; >>\" << NLA = QuotedTerm; zzmode(START); >>\n|\r|\r\n << NLA = 3; zzline++; warn("eoln found in string"); zzskip(); >>\\(\n|\r|\r\n) << NLA = 4; zzline++; zzmore(); >>\\~[] << NLA = 5; zzmore(); >>~[\n\r\"\\]+ << NLA = 6; zzmore(); >>%%ACTION_STRINGS@ << NLA = Eof; >>\" << NLA = 7; zzmode(ACTIONS); zzmore(); >>\n|\r|\r\n << NLA = 8; zzline++; warn("eoln found in string (in user action)"); zzskip(); >>\\(\n|\r|\r\n) << NLA = 9; zzline++; zzmore(); >>\\~[] << NLA = 10; zzmore(); >>~[\n\r\"\\]+ << NLA = 11; zzmore(); >>%%ACTION_CHARS@ << NLA = Eof; >>' << NLA = 12; zzmode(ACTIONS); zzmore(); >>\n|\r|\r\n << NLA = 13; zzline++; warn("eoln found in char literal (in user action)"); zzskip(); >>\\~[] << NLA = 14; zzmore(); >>~[\n\r'\\]+ << NLA = 15; zzmore(); >>%%ACTION_COMMENTS@ << NLA = Eof; >>\*/ << NLA = 16; zzmode(ACTIONS); zzmore(); >>\* << NLA = 17; zzmore(); >>\n|\r|\r\n << NLA = 18; zzline++; zzmore(); DAWDLE; >>~[\n\r\*]+ << NLA = 19; zzmore(); >>%%TOK_DEF_COMMENTS@ << NLA = Eof; >>\*/ << NLA = 20; zzmode(PARSE_ENUM_FILE); zzmore(); >>\* << NLA = 21; zzmore(); >>\n|\r|\r\n << NLA = 22; zzline++; zzmore(); DAWDLE; >>~[\n\r\*]+ << NLA = 23; zzmore(); >>%%TOK_DEF_CPP_COMMENTS@ << NLA = Eof; >>\n|\r|\r\n << NLA = 24; zzline++; zzmode(PARSE_ENUM_FILE); zzskip(); DAWDLE; >>~[\n\r]+ << NLA = 25; zzskip(); >>%%ACTION_CPP_COMMENTS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -