/* ParseStatement - parse a statement */ void ParseStatement(ParseContext *c, Token tkn) { /* dispatch on the statement keyword */ switch (tkn) { case T_REM: /* just a comment so ignore the rest of the line */ break; case T_DEF: ParseDef(c); break; case T_END_DEF: ParseEndDef(c); break; case T_DIM: ParseDim(c); break; case T_LET: ParseLet(c); break; case T_IF: ParseIf(c); break; case T_ELSE: ParseElse(c); break; case T_ELSE_IF: ParseElseIf(c); break; case T_END_IF: ParseEndIf(c); break; case T_END: ParseEnd(c); break; case T_FOR: ParseFor(c); break; case T_NEXT: ParseNext(c); break; case T_DO: ParseDo(c); break; case T_DO_WHILE: ParseDoWhile(c); break; case T_DO_UNTIL: ParseDoUntil(c); break; case T_LOOP: ParseLoop(c); break; case T_LOOP_WHILE: ParseLoopWhile(c); break; case T_LOOP_UNTIL: ParseLoopUntil(c); break; case T_STOP: ParseStop(c); break; case T_GOTO: ParseGoto(c); break; case T_RETURN: ParseReturn(c); break; case T_PRINT: ParsePrint(c); break; case T_IDENTIFIER: if (SkipSpaces(c) == ':') { DefineLabel(c, c->token, codeaddr(c)); break; } UngetC(c); default: SaveToken(c, tkn); ParseImpliedLetOrFunctionCall(c); break; } }
int CTcapParser::DoTcapParse(unsigned char* inbuf, int inbuf_len, struct TCAPParseResult *result, unsigned char tcaptpye) { int iParseRslt = -1; char szDebug[255]; memset(szDebug, 0, sizeof(szDebug)); if (NULL == inbuf || inbuf_len <= 0) { Print("!!!WARN: %s:%s:DoTcapParse... the input parameter is error!", __FILE__, __FUNCTION__); return -1; } STcapIEHeader stTag; if(ParseIEHeader(inbuf, inbuf_len, &stTag) < 0) { Print("!!!WARN: %s::%d:TCAP MESSAGE PARSE TAG ERROR!", __FILE__, __LINE__); return -1; } memset(result,0,sizeof(*result)); result->ucTcapMsgType = stTag.tagID; if(0 == tcaptpye) //ITU-T TCAP { switch (stTag.tagID) { case TCAP_MSG_BEGIN: iParseRslt = ParseBegin(stTag.pData, stTag.dataLen, result); break; case TCAP_MSG_CONTINUE: iParseRslt = ParseContinue(stTag.pData, stTag.dataLen, result); break; case TCAP_MSG_END: iParseRslt = ParseEnd(stTag.pData, stTag.dataLen, result); break; case TCAP_MSG_UNIDIRE: iParseRslt = ParseUnidire(stTag.pData, stTag.dataLen, result); break; case TCAP_MSG_ABORT: iParseRslt = ParseAbort(stTag.pData, stTag.dataLen, result); break; default: //sprintf(szDebug, "DoTcapParse... The unknown Tcap_Message is :%02x\n",stTag.tagID); //DEBUG(EN_PRINT_LEVEL_WARNING)(szDebug); Print("DoTcapParse... The unknown Tcap_Message is :%02x\n",stTag.tagID); break; } } else // ANSI TCAP { switch(stTag.tagID) { case ANSI_TCAP_PT_UNIDIRE: iParseRslt = ParseANSIUnidire(stTag.pData, stTag.dataLen, result); break; case ANSI_TCAP_PT_QWP: iParseRslt = ParseANSIQWP(stTag.pData, stTag.dataLen, result); break; case ANSI_TCAP_PT_NQWP: iParseRslt = ParseANSINQWP(stTag.pData, stTag.dataLen, result); break; case ANSI_TCAP_PT_RSP: iParseRslt = ParseANSIRsp(stTag.pData, stTag.dataLen, result); break; case ANSI_TCAP_PT_CWP: iParseRslt = ParseANSICWP(stTag.pData, stTag.dataLen, result); break; case ANSI_TCAP_PT_NCWP: iParseRslt = ParseANSINCWP(stTag.pData, stTag.dataLen, result); break; case ANSI_TCAP_PT_ABORT: iParseRslt = ParseANSIAbort(stTag.pData, stTag.dataLen, result); break; default: break; } } return iParseRslt; }