startcomment comcon:comcon { /* $XConsortium: context.dat /main/3 1995/07/17 19:52:49 lehors $ */ /* Copyright 1986 Tandem Computers Incorporated. This product and information is proprietary of Tandem Computers Incorporated. Copyright (c) 1986, 1987, 1988, 1989 Hewlett-Packard Co. Context.dat defines the state transitions for program ELTDEF. */ } ; endcomment incom:incom ; entstart start:entdec error:entdec ; entsystem entval:typedec {enttype(M_SYSTEM) ;} ; entst entval:typedec {enttype(M_STARTTAG) ;} ; entet entval:typedec {enttype(M_ENDTAG) ;} ; entmd entval:typedec {enttype(M_MD) ;} ; entpi entval:piorsdata {enttype(M_PI) ;} ; entsdata entval:piorsdata {enttype(M_SDATA) ;} ; entcdata entval:typedec {enttype(M_CDATAENT) ;} ; typecode piorsdata:codetagc { entity->wheredef = M_DELTDEF ; enttype(entity->type == M_PI ? M_CODEPI : M_CODESDATA) ; entity->codeindex = ++codeent ; } ; endofcode inentc:start ; lit value:value, litcon:litcon ; lita value:value, litcon:litcon ; entlit entval:declitent, piorsdata:declitent, typedec:declitent {entclen = 0 ;} declitent:postent, edeclitent:postent { entcontent[entclen] = M_EOS ; entity->content = (M_WCHAR *) m_malloc(entclen + 1, "entity content") ; w_strcpy(entity->content, entcontent) ; entity->wheredef = M_DELTDEF ; } ; entlita entval:declitaent, piorsdata:declitaent, typedec:declitaent {entclen = 0 ;} declitaent:postent, edclitaent:postent { entcontent[entclen] = M_EOS ; entity->content = (M_WCHAR *) m_malloc(entclen + 1, "entity content") ; w_strcpy(entity->content, entcontent) ; entity->wheredef = M_DELTDEF ; } ; cro litcon:litcon ; litrs litcon:litcon ; litrsc litcon:litcon ; litre litcon:litcon ; litrec litcon:litcon ; littab litcon:litcon ; littabc litcon:litcon ; litspace litcon:litcon ; litcspace litcon:litcon ; refc charent:charent ; signon start:insignon {restart = RSIGNON ;} error:insignon ; gdef start:globdef, insignon:globdef { endsignon() ; restart = RGLOBDEF ; /* fprintf(globdef, "#line %d \"%s\"\n", m_line, iffile) ; */ } error:globdef { endsignon() ; /* fprintf(globdef, "#line %d \"%s\"\n", m_line, iffile) ; */ } ; gdec start:globdec, insignon:globdec { endsignon() ; restart = RGLOBDEC ; /* fprintf(globdec, "#line %d \"%s\"\n", m_line, iffile) ; */ } globdef:globdec { restart = RGLOBDEC ; /* fprintf(globdec, "#line %d \"%s\"\n", m_line, iffile) ; */ } error:globdec { if (! signonend) endsignon() ; restart = RGLOBDEC ; /* fprintf(globdec, "#line %d \"%s\"\n", m_line, iffile) ; */ } ; inisstring start:iniss, insignon:iniss { endsignon() ; gss = stringcnt ; instring = TRUE ; } inies:iniss { endstring() ; gss = stringcnt ; if (gss) m_error("Multiple specification of global start string") ; instring = TRUE ; } inisc:iniss, iniec:iniss, initc:iniss, inipc:iniss, inistc:iniss { if (gss) m_error("Multiple specification of global start string") ; gss = stringcnt ; instring = TRUE ; } globdef:iniss, globdec:iniss { gss = stringcnt ; instring = TRUE ; } ; iniestring start:inies, insignon:inies { endsignon() ; ges = stringcnt ; instring = TRUE ; } iniss:inies { if (ges) m_error("Multiple specification of global end string") ; endstring() ; ges = stringcnt ; instring = TRUE ; } inisc:inies, iniec:inies, initc:inies, inipc:inies, inistc:inies { if (ges) m_error("Multiple specification of global end string") ; ges = stringcnt ; instring = TRUE ; } globdef:inies, globdec:inies { ges = stringcnt ; instring = TRUE ; } ; inistring start:inistc, insignon:inistc { endsignon() ; /* fprintf(stfile, "#line %d \"%s\"\n", m_line, iffile) ; */ finistc = FALSE ; } iniss:inistc, inies:inistc { finistc = FALSE ; endstring() ; if (! finistc) m_error("Multiple specification of global string code") ; } iniec:inistc, initc:inistc, inipc:inistc, inisc:inistc { if (! finistc) m_error("Multiple specification of global string code") ; /* fprintf(stfile, "#line %d \"%s\"\n", m_line, iffile) ; */ finistc = FALSE ; } globdef:inistc, globdec:inistc { finistc = FALSE ; /* fprintf(stfile, "#line %d \"%s\"\n", m_line, iffile) ; */ } ; inistart start:inisc, insignon:inisc { endsignon() ; /* fprintf(sfile, "#line %d \"%s\"\n", m_line, iffile) ; */ } iniss:inisc, inies:inisc {endstring() ;} iniec:inisc, initc:inisc, inipc:inisc, inistc:inisc, globdef:inisc, globdec:inisc { /* fprintf(sfile, "#line %d \"%s\"\n", m_line, iffile) ; */ } ; iniend start:iniec, insignon:iniec { endsignon() ; /* fprintf(efile, "#line %d \"%s\"\n", m_line, iffile) ; */ } iniss:iniec, inies:iniec {endstring() ;} inisc:iniec, initc:iniec, inipc:iniec, inistc:iniec, globdef:iniec, globdec:iniec { /* fprintf(efile, "#line %d \"%s\"\n", m_line, iffile) ; */ } ; initext start:initc, insignon:initc { endsignon() ; /* fprintf(tfile, "#line %d \"%s\"\n", m_line, iffile) ; */ finitext = FALSE ; } iniss:initc, inies:initc {endstring() ;} inisc:initc, iniec:initc, inipc:initc, inistc:initc, globdef:initc, globdec:initc { /* fprintf(tfile, "#line %d \"%s\"\n", m_line, iffile) ; */ finitext = FALSE ; } ; initpi start:inipc, insignon:inipc { endsignon() ; /* fprintf(pfile, "#line %d \"%s\"\n", m_line, iffile) ; */ finipi = FALSE ; } iniss:inipc, inies:inipc {endstring() ;} inisc:inipc, iniec:inipc, initc:inipc, inistc:inipc, globdef:inipc, globdec:inipc { /* fprintf(pfile, "#line %d \"%s\"\n", m_line, iffile) ; */ finipi = FALSE ; } ; elt start:needn, insignon:needn { endsignon() ; endini() ; } inelt:needn globdef:needn, globdec:needn, inisc:needn, iniec:needn, initc:needn, inipc:needn {endini() ;} inss:needn, ines:needn {endstring() ;} insc:needn inec:needn intc:needn inpc:needn instc:needn inparam:needn preparam:needn error:needn ; tagc postent:start codetagc:inentc { startcode(entity->codeindex, &inent, entfile, "c", nopar, nopar, "") ; } close:preparam sschain:inss { *getaction(starray) = stringcnt ; instring = TRUE ; } eschain:ines { *getaction(etarray) = stringcnt ; instring = TRUE ; } pcchain:inpc { *getaction(pcarray) = ++pactions ; startcode(pactions, &inpc, pfile, "p", pproto, pformal, pftype) ; } tcchain:intc { *getaction(tcarray) = ++tactions ; startcode(tactions, &intext, tfile, "t", tproto, tformal, tftype) ; } scchain:insc { *getaction(scarray) = ++sactions ; startcode(sactions, &insc, sfile, "s", nopar, nopar, "") ; } ecchain:inec { *getaction(ecarray) = ++eactions ; startcode(eactions, &inec, efile, "e", nopar, nopar, "") ; } stcchain:instc { *getaction(stcarray) = ++stactions ; startcode(stactions, &instc, stfile, "st", stproto, stformal, stft) ; } ; sep sschain:sschain {*getaction(starray) = stringcnt ;} eschain:eschain {*getaction(etarray) = stringcnt ;} pcchain:pcchain {*getaction(pcarray) = pactions + 1 ;} tcchain:tcchain {*getaction(tcarray) = tactions + 1 ;} scchain:scchain {*getaction(scarray) = sactions + 1 ;} ecchain:ecchain {*getaction(ecarray) = eactions + 1 ;} stcchain:stcchain {*getaction(stcarray) = stactions + 1 ;} postvalue:invalue ; param preparam:inparam ; vi cvar:pname cvalue:value ; rend postpname:inparam ; grpo postpname:invalue ; grpc invalue:postpname postvalue:postpname ; sss inelt:sschain inss:sschain, ines:sschain {endstring() ;} inpc:sschain intc:sschain insc:sschain inec:sschain instc:sschain inparam:sschain preparam:sschain ; ess iniss:inisc, inss:inelt {endstring() ;} ; ses inelt:eschain inss:eschain, ines:eschain {endstring() ;} inpc:eschain intc:eschain insc:eschain inec:eschain instc:eschain inparam:eschain preparam:eschain ; ees inies:inisc, ines:inelt {endstring() ;} ; scode inss:scchain, ines:scchain {endstring() ;} inparam:scchain inelt:scchain inpc:scchain intc:scchain insc:scchain inec:scchain instc:scchain preparam:scchain ; ecode inss:ecchain, ines:ecchain {endstring() ;} insc:ecchain inparam:ecchain inelt:ecchain inec:ecchain intc:ecchain inpc:ecchain instc:eschain preparam:ecchain ; tcode inss:tcchain, ines:tcchain {endstring() ;} insc:tcchain inec:tcchain inparam:tcchain inelt:tcchain preparam:tcchain inpc:tcchain intc:tcchain instc:tcchain ; pcode inelt:pcchain preparam:pcchain inparam:pcchain inss:pcchain, ines:pcchain {endstring() ;} inpc:pcchain intc:pcchain insc:pcchain inec:pcchain instc:pcchain ; stcode inelt:stcchain preparam:stcchain inparam:stcchain inss:stcchain, ines:stcchain {endstring() ;} inpc:stcchain intc:stcchain insc:stcchain inec:stcchain instc:stcchain ; endfile start:finish, insignon:finish { endsignon() ; endini() ; } globdef:finish, globdec:finish, inistc:finish, inisc:finish, iniec:finish, initc:finish, inipc:finish {endini() ;} ; wildcard stcchain:stcchain, sschain:sschain, eschain:eschain, scchain:scchain, ecchain:ecchain, tcchain:tcchain, pcchain:pcchain { *nextchain = (CHAIN *) m_malloc(sizeof(CHAIN), "chain") ; (*nextchain)->elt = 1 ; (*nextchain)->next = NULL ; nextchain = &(*nextchain)->next ; } ; literal value:postvalue {value(literal) ;} ; name needn:close {startelement() ;} inparam:cvar {storecvar() ;} pname:postpname {storepname() ;} invalue:cvalue {cvalue() ;} value:postvalue {value(name) ;} entdec:entval {addent() ;} stcchain:stcchain, sschain:sschain, eschain:eschain, scchain:scchain, ecchain:ecchain, tcchain:tcchain, pcchain:pcchain { *nextchain = (CHAIN *) m_malloc(sizeof(CHAIN), "chain") ; (*nextchain)->next = NULL ; if ((*nextchain)->elt = m_packedlook(m_entree, name)) (*nextchain)->elt++ ; else m_err1("Undefined element: %s", name) ; nextchain = &(*nextchain)->next ; } ; text declitent:declitent { if (entclen >= M_LITLEN) { curcon = EDECLITENT ; m_error("Entity content too long") ; } else entcontent[entclen++] = textchar ; } declitaent:declitaent { if (entclen >= M_LITLEN) { curcon = EDCLITAENT ; m_error("Entity content too long") ; } else entcontent[entclen++] = textchar ; } edeclitent:edeclitent edclitaent:edclitaent insignon:insignon { socr = (LOGICAL) (textchar == '\n') ; signonmsg[sochar++] = textchar ; if (sochar >= SOCHAR) { m_error("Exceeded buffer for sign-on message") ; exit(TRUE) ; } } globdef:globdef { fprintf(globdef, "%c", textchar) ; /* if (textchar == '\n') fprintf(globdef, "#line %d \"%s\"\n", m_line, iffile) ; */ } globdec:globdec { fprintf(globdec, "%c", textchar) ; /* if (textchar == '\n') fprintf(globdec, "#line %d \"%s\"\n", m_line, iffile) ; */ } iniss:iniss, inss:inss { if (! stringstart) fprintf(string, ",\n") ; fprintf(string, " %d", textchar) ; stringstart = FALSE ; stringcnt++ ; } inies:inies, ines:ines { if (! stringstart) fprintf(string, ",\n") ; fprintf(string, " %d", textchar) ; stringstart = FALSE ; stringcnt++ ; } inisc:inisc, insc:insc { fprintf(sfile, "%c", textchar) ; /* if (textchar == '\n') fprintf(sfile, "#line %d \"%s\"\n", m_line, iffile) ; */ } iniec:iniec, inec:inec { fprintf(efile, "%c", textchar) ; /* if (textchar == '\n') fprintf(efile, "#line %d \"%s\"\n", m_line, iffile) ; */ } initc:initc, intc:intc { fprintf(tfile, "%c", textchar) ; /* if (textchar == '\n') fprintf(tfile, "#line %d \"%s\"\n", m_line, iffile) ; */ } inipc:inipc, inpc:inpc { fprintf(pfile, "%c", textchar) ; /* if (textchar == '\n') fprintf(pfile, "#line %d \"%s\"\n", m_line, iffile) ; */ } inistc:inistc, instc:instc { fprintf(stfile, "%c", textchar) ; /* if (textchar == '\n') fprintf(stfile, "#line %d \"%s\"\n", m_line, iffile) ; */ } inentc:inentc { fprintf(entfile, "%c", textchar) ; /* if (textchar == '\n') fprintf(entfile, "#line %d \"%s\"\n", m_line, iffile) ; */ } ;