anchor.diff:    <<
        CIfrNumeric NObj;
        UINT32 DataTypeSize;
  +     BOOLEAN IsSupported;
     >>
     L:Numeric                                            << NObj.SetLineNo(L->getLine()); >>
     vfrQuestionHeader[NObj] ","                          << // check data type
  
positive.code:     vfrSetMinMaxStep[OObj]
    }
    vfrStatementQuestionOptionList
    E:EndOneOf                                           << CRT_END_OP (E); >>
    ";"
    ;
  
  
negative.code:   }
    vfrSetMinMaxStep[NObj]
    vfrStatementQuestionOptionList
    E:EndNumeric                                         << 
                                                            IsSupported = FALSE;
                                                            switch (_GET_CURRQEST_DATATYPE()) {
                                                              case EFI_IFR_TYPE_NUM_SIZE_8:
                                                              case EFI_IFR_TYPE_NUM_SIZE_16:
                                                              case EFI_IFR_TYPE_NUM_SIZE_32:
                                                              case EFI_IFR_TYPE_NUM_SIZE_64:
                                                                IsSupported = TRUE;
                                                                break;
                                                              default:
                                                                break;
                                                            }
                                                            if (!IsSupported) {
                                                              _PCATCH (VFR_RETURN_INVALID_PARAMETER, L->getLine(), "Numeric question only support UINT8, UINT16, UINT32 and UINT64 data type.");
                                                            }
                                                            CRT_END_OP (E); 
                                                         >>
    ";"
    ;
  
  