void Statement() { switch (Symb.type) { case IDENT: { Gener(TA, varAddr(Symb.ident)); Symb = readLexem(); Compare(ASSIGN, __LINE__); Expression(); Gener(ST); break; } case kwWRITE: Symb = readLexem(); Expression(); Gener(WRT); break; case kwREAD: Symb = readLexem(); char id[MAX_IDENT_LEN]; Compare_IDENT(id, __LINE__); Gener(TA, varAddr(id)); Gener(RD); Gener(ST); break; case kwIF: { Symb = readLexem(); Condition(); int adrIFJ = Gener(IFJ); Compare(kwTHEN, __LINE__); Statement(); ElsePart(adrIFJ); break; } case kwWHILE: { int a1 = GetIC(); Symb = readLexem(); Condition(); int aIFJ = Gener(IFJ); Compare(kwDO, __LINE__); Statement(); Gener(JU, a1); PutIC(aIFJ); break; } case kwBEGIN: CompoundStatement(); break; default: break; } }
int hime_ProtoHandler(XIMS ims, IMProtocol *call_data) { // dbg("hime_ProtoHandler %x ims\n", ims); current_ims = ims; switch (call_data->major_code) { case XIM_OPEN: #define MAX_CONNECT 20000 { IMOpenStruct *pimopen=(IMOpenStruct *)call_data; if(pimopen->connect_id > MAX_CONNECT - 1) return True; #if DEBUG && 0 dbg("open lang %s connectid:%d\n", pimopen->lang.name, pimopen->connect_id); #endif return True; } case XIM_CLOSE: #if DEBUG && 0 dbg("XIM_CLOSE\n"); #endif return True; case XIM_CREATE_IC: #if DEBUG && 0 dbg("CREATE_IC\n"); #endif CreateIC((IMChangeICStruct *)call_data); return True; case XIM_DESTROY_IC: { IMChangeICStruct *pimcha=(IMChangeICStruct *)call_data; #if DEBUG && 0 dbg("DESTROY_IC %d\n", pimcha->icid); #endif DeleteIC(pimcha->icid); } return True; case XIM_SET_IC_VALUES: #if DEBUG && 0 dbg("SET_IC\n"); #endif SetIC((IMChangeICStruct *)call_data); return True; case XIM_GET_IC_VALUES: #if DEBUG && 0 dbg("GET_IC\n"); #endif GetIC((IMChangeICStruct *)call_data); return True; case XIM_FORWARD_EVENT: #if DEBUG && 0 dbg("XIM_FORWARD_EVENT\n"); #endif return xim_ForwardEventHandler((IMForwardEventStruct *)call_data); case XIM_SET_IC_FOCUS: #if DEBUG && 0 dbg("XIM_SET_IC_FOCUS\n"); #endif return xim_hime_FocusIn((IMChangeFocusStruct *)call_data); case XIM_UNSET_IC_FOCUS: #if DEBUG && 0 dbg("XIM_UNSET_IC_FOCUS\n"); #endif return xim_hime_FocusOut((IMChangeFocusStruct *)call_data); case XIM_RESET_IC: #if DEBUG && 0 dbg("XIM_UNSET_IC_FOCUS\n"); #endif return True; case XIM_TRIGGER_NOTIFY: #if DEBUG && 0 dbg("XIM_TRIGGER_NOTIFY\n"); #endif MyTriggerNotifyHandler((IMTriggerNotifyStruct *)call_data); return True; case XIM_PREEDIT_START_REPLY: #if DEBUG && 1 dbg("XIM_PREEDIT_START_REPLY\n"); #endif return True; case XIM_PREEDIT_CARET_REPLY: #if DEBUG && 1 dbg("XIM_PREEDIT_CARET_REPLY\n"); #endif return True; case XIM_STR_CONVERSION_REPLY: #if DEBUG && 1 dbg("XIM_STR_CONVERSION_REPLY\n"); #endif return True; default: printf("Unknown major code.\n"); break; } return True; }
Bool MyGetICValuesHandler (IMChangeICStruct * call_data) { GetIC (call_data); return True; }