VOID BaseClass::Parse(struct ParseMessage &pmsg) { AttrClass::Parse(pmsg); pmsg.SkipSpaces(); struct ArgList args[] = { { "HREF", &URL, ARG_URL, NULL }, { "TARGET", &Target, ARG_URL, NULL }, { NULL, NULL, 0, NULL } }; ScanArgs(pmsg.Locked, args); if(URL) { ULONG last, i = last = 0; while(URL[i]) { if(URL[i++] == '/') last = i; } URL[last] = '\0'; } pmsg.Host->Base = this; }
VOID LIClass::Parse(struct ParseMessage &pmsg) { pmsg.SetLock(); pmsg.NextEndBracket(); #ifdef OUTPUT PrintTag(pmsg.Locked); #endif LONG number = pmsg.OL_Cnt[pmsg.OL_Level]; struct ArgList args[] = { { "VALUE", &number, ARG_NUMBER, NULL }, { NULL, NULL, 0, NULL } }; ScanArgs(pmsg.Locked, args); if(pmsg.OpenCounts[tag_OL]) { if(pmsg.OL_Level < 3) { Number = number++; pmsg.OL_Cnt[pmsg.OL_Level] = number; } } TreeClass::Parse(pmsg); }
/** 行の解析 @param[in] buf 行(先頭から) @param[in] linelen 行の長さ @param[in] linenum 行番号 */ bool COutlineErlang::parse( const wchar_t* buf, int linelen, CLogicInt linenum ) { const wchar_t* pos = buf; const wchar_t* const end = buf + linelen; if( m_state == STATE_FUNC_FOUND ){ m_state = STATE_NORMAL; } if( m_state == STATE_NORMAL ){ pos = ScanFuncName( buf, end, pos ); if( m_state != STATE_NORMAL ){ m_lnum = linenum; } } while( pos < end ){ switch( m_state ){ case STATE_FUNC_CANDIDATE_FIN: pos = EnterArgs( end, pos ); break; case STATE_FUNC_ARGS1: pos = ScanArgs1( end, pos ); break; case STATE_FUNC_ARGS: pos = ScanArgs( end, pos ); break; case STATE_FUNC_ARGS_FIN: pos = EnterCond( end, pos ); break; default: PleaseReportToAuthor(NULL, _T("COutlineErlang::parse Unknown State: %d"), m_state ); break; } if( m_state == STATE_FUNC_FOUND ){ build_arity( m_argcount ); break; } } return m_state == STATE_FUNC_FOUND; }
int main(int argc, char *argv[]) { #ifdef AFS_AIX32_ENV /* * The following signal action for AIX is necessary so that in case of a * crash (i.e. core is generated) we can include the user's data section * in the core dump. Unfortunately, by default, only a partial core is * generated which, in many cases, isn't too useful. */ struct sigaction nsa; sigemptyset(&nsa.sa_mask); nsa.sa_handler = SIG_DFL; nsa.sa_flags = SA_FULLDUMP; sigaction(SIGSEGV, &nsa, NULL); #endif ScanArgs(argc, argv); /* now read each line of the CopyList */ if (Copy(file1, file2, !oneLevel, 0)) return(1); /* some type of failure */ return(0); }
int main(int argc, char *argv[]) { int retval; /* return from yyparse */ ScanArgs(argc, argv); if (ifile == NULL) ifile = "stdin"; else { gotInFile = 1; if (freopen(ifile,"r",stdin) == NULL) { fprintf(stderr, "%s: can't open %s for input\n", prog, ifile); exit(1); } } if ((string_temp = (char *) malloc((unsigned) (maxstring+1))) == 0) { fprintf(stderr, "%s: can't allocate %d char string; try a smaller -s value\n", prog, maxstring); exit(1); } if (ofile == NULL) ofile = "stdout"; else { #ifdef __MACH__ (void)unlink(ofile); #endif /* __MACH__ */ if (freopen(ofile,"w",stdout) == NULL) { fprintf(stderr, "%s: can't open %s for output\n", prog, ofile); exit(1); } } InitOFile(); if (hfile != NULL) { #ifdef __MACH__ (void)unlink(hfile); #endif /* __MACH__ */ if ((header = fopen(hfile,"w")) == NULL) { fprintf(stderr, "%s: can't open %s for output\n", prog, hfile); exit(1); } } if (header != NULL) InitHFile(); InitWellKnownPSNames(); if ((retval = yyparse()) != 0) fprintf(stderr,"%s: error in parsing %s\n",prog,ifile); else if (errorCount != 0) { fprintf(stderr,"%s: errors were encountered\n",prog); retval = errorCount; } if (hfile != NULL) FinishHFile(); exit (retval); }
VOID BackFillClass::Parse(struct ParseMessage &pmsg) { struct ArgList args[] = { { "BACKGROUND", &Source, ARG_URL, NULL }, { "BGCOLOR", &BackgroundRGB, ARG_COLOUR, NULL }, { NULL, NULL, 0, NULL } }; ScanArgs(pmsg.Locked, args); TreeClass::Parse(pmsg); }
VOID TextAreaClass::Parse(struct ParseMessage &pmsg) { pmsg.SetLock(); pmsg.NextEndBracket(); #ifdef OUTPUT PrintTag(pmsg.Locked); #endif BOOL disabled = FALSE, readonly = FALSE; struct ArgList args[] = { { "NAME", &Name, ARG_STRING, NULL }, { "DISABLED", &disabled, ARG_SWITCH, NULL }, { "READONLY", &readonly, ARG_SWITCH, NULL }, { "COLS", &Columns, ARG_NUMBER, NULL }, { "ROWS", &Rows, ARG_NUMBER, NULL }, { NULL, NULL, 0, NULL } }; Rows = 10; Columns = 40; ScanArgs(pmsg.Locked, args); if(disabled) Flags |= FLG_TextArea_Disabled; if(readonly) Flags |= FLG_TextArea_ReadOnly; pmsg.SetLock(); pmsg.NextStartBracket(); Contents = new (std::nothrow) char[pmsg.Current-pmsg.Locked+1]; if (!Contents) return; STRPTR src = pmsg.Locked, dst = Contents; while(*src != '<' && *src) { struct EntityInfo *entity; if(*src == '&' && (entity = GetEntityInfo(src+1))) { *dst++ = entity->ByteCode; src += strlen(entity->Name)+1; if(*src == ';') src++; } else { *dst++ = *src++; } } *dst = '\0'; Flags |= FLG_AllElementsPresent | FLG_ArgumentsRead;; pmsg.Gadgets = TRUE; }
VOID OLClass::Parse(struct ParseMessage &pmsg) { pmsg.SetLock(); pmsg.NextEndBracket(); #ifdef OUTPUT PrintTag(pmsg.Locked); #endif STRPTR type = NULL; LONG start = 1; struct ArgList args[] = { { "TYPE", &type, ARG_STRING, NULL }, { "START", &start, ARG_NUMBER, NULL }, { NULL, NULL, 0, NULL } }; ScanArgs(pmsg.Locked, args); if(type) { switch(*type) { case 'a': Type = OL_LowerAlpha; break; case 'A': Type = OL_UpperAlpha; break; case 'i': Type = OL_LowerRoman; break; case 'I': Type = OL_UpperRoman; break; } delete type; } APTR handle; if((handle = Backup(pmsg, 1, tag_LI))) { if(++pmsg.OL_Level < 3) pmsg.OL_Cnt[pmsg.OL_Level] = start; TreeClass::Parse(pmsg); pmsg.OL_Level--; Restore(pmsg.OpenCounts, 1, handle); } }
VOID BrClass::Parse(struct ParseMessage &pmsg) { AttrClass::Parse(pmsg); pmsg.SkipSpaces(); const char *ClearKeywords[] = { "LEFT", "RIGHT", "ALL", NULL }; LONG clear = -1; struct ArgList args[] = { { "CLEAR", &clear, ARG_KEYWORD, ClearKeywords }, { NULL, NULL, 0, NULL } }; ScanArgs(pmsg.Locked, args); Clear = clear+1; }
VOID MapClass::Parse(struct ParseMessage &pmsg) { pmsg.SetLock(); pmsg.NextEndBracket(); #ifdef OUTPUT PrintTag(pmsg.Locked); #endif struct ArgList args[] = { { "NAME", &Name, ARG_URL, NULL }, { NULL, NULL, 0, NULL } }; ScanArgs(pmsg.Locked, args); TreeClass::Parse(pmsg); }
VOID FontClass::Parse(struct ParseMessage &pmsg) { pmsg.SetLock(); pmsg.NextEndBracket(); #ifdef OUTPUT PrintTag(pmsg.Locked); #endif STRPTR font = NULL; struct ArgList args[] = { { "COLOR", &FontRGB, ARG_COLOUR, NULL }, { "SIZE", &font, ARG_STRING, NULL }, { NULL, NULL, 0, NULL } }; ScanArgs(pmsg.Locked, args); LONG size = Font_None; if(font && sscanf(font, "%*[+-]%ld", &size) == 1) { switch(*font) { case '+': size = Font_H4 - ((size > 3) ? 3 : size); break; case '-': size = Font_H4 + ((size > 2) ? 2 : size); break; default: size = Font_Fixed - ((size > 6) ? 6 : size); break; } } // if(font) printf("Converted: %d (%s)\n", size, font); delete font; Font = size; TreeClass::Parse(pmsg); }
VOID PClass::Parse(struct ParseMessage &pmsg) { pmsg.SetLock(); pmsg.NextEndBracket(); #ifdef OUTPUT PrintTag(pmsg.Locked); #endif struct ArgList args[] = { { "ALIGN", &Alignment, ARG_KEYWORD, AlignKeywords }, { NULL, NULL, 0, NULL } }; Alignment = (ULONG)-1; ScanArgs(pmsg.Locked, args); Alignment++; TreeClass::Parse(pmsg); }
VOID TableClass::Parse(struct ParseMessage &pmsg) { pmsg.SetLock(); pmsg.NextEndBracket(); #ifdef OUTPUT PrintTag(pmsg.Locked); #endif APTR handle; UBYTE group = pmsg.OpenGroups[group_Tablecell]; pmsg.OpenGroups[group_Tablecell] = 0; if((handle = Backup(pmsg, 11, tag_DD, tag_DL, tag_DT, tag_LI, tag_P, tag_TD, tag_TH, tag_TR, tag_FONT, tag_CENTER, tag_B))) { struct ArgList args[] = { { "BACKGROUND", &Source, ARG_URL, NULL }, { "BGCOLOR", &BackgroundRGB, ARG_COLOUR, NULL }, { "BORDER", &BorderSize, ARG_NUMBER, NULL }, { "WIDTH", &GivenWidth, ARG_VALUE, NULL }, { "CELLSPACING", &Spacing, ARG_NUMBER, NULL }, { "CELLPADDING", &Padding, ARG_NUMBER, NULL }, { "ALIGN", &Alignment, ARG_KEYWORD, AlignKeywords }, { NULL, NULL, 0, NULL } }; Spacing = Padding = 2; Alignment = -1; ScanArgs(pmsg.Locked, args); Alignment++; UBYTE *old_opens = new (std::nothrow) UBYTE [tag_NumberOf + group_NumberOf]; if (!old_opens) return; memcpy(old_opens, pmsg.OpenCounts, tag_NumberOf + group_NumberOf); memset(old_opens, 0, tag_NumberOf + group_NumberOf); UBYTE old_align = pmsg.CellAlignment; UBYTE old_valign = pmsg.CellVAlignment; pmsg.CellAlignment = 0; pmsg.CellVAlignment = Align_Middle; BackFillClass::Parse(pmsg); pmsg.CellAlignment = old_align; pmsg.CellVAlignment = old_valign; memcpy(pmsg.OpenCounts, old_opens, tag_NumberOf + group_NumberOf); delete[] old_opens; Restore(pmsg.OpenCounts, 8, handle); struct ChildsList *prev = (struct ChildsList *)&FirstChild, *first = FirstChild; while(first) { if(first->Obj->id() != tag_TR) { if(first->Obj->id() == tag_COMMENT || first->Obj->id() == tag_Text) { prev->Next = first->Next; delete first->Obj; delete first; first = prev->Next; } else { class TRClass *tr = new (std::nothrow) class TRClass(); if (!tr) return; tr->setId(tag_TR); tr->setFlags(tr->flags() | FLG_ArgumentsRead); tr->AddChild(first->Obj); tr->Verify(); first->Obj = tr; prev = first; first = first->Next; while(first && first->Obj->group() == group_Tablecell) { tr->AddChild(first->Obj); prev->Next = first->Next; delete first; first = prev->Next; } } } else { prev = first; first = first->Next; } } RealFirstChild = FirstChild; } pmsg.OpenGroups[group_Tablecell] = group; }