int YAltitude::_parseAttr(yJsonStateMachine& j) { if(!strcmp(j.token, "qnh")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _qnh = floor(atof(j.token) * 1000.0 / 65536.0 + 0.5) / 1000.0; return 1; } if(!strcmp(j.token, "technology")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _technology = _parseString(j); return 1; } failed: return YSensor::_parseAttr(j); }
int _parse(LPCWSTR jstr,int pos,int maxlen,Json* jv){ int i = pos; for(;(uint)i<(uint)maxlen;i++){ if(_isSpaceChar(jstr[i])){ continue; }else if(jstr[i]=='{'){ jv->_type = json_object; jv->_objectValue = new ObjectLink<Json::DICTION>; i = _parseObject(jstr,i+1,maxlen,jv->_objectValue); }else if(jstr[i]=='['){ jv->_type = json_array; jv->_arrayValue = new ObjectLink<Json>; i = _parseArray(jstr,i+1,maxlen,jv->_arrayValue); }else if(jstr[i]=='\"'){ jv->_type = json_string; jv->_strValue = new String; i = _parseString(jstr,i+1,maxlen,jv->_strValue); }else if(jstr[i]=='\''){ jv->_type = json_binary; jv->_binaryValue = new Memory<char>; i = _parseBinary(jstr,i+1,maxlen,jv->_binaryValue); }else{ int nextPos = _getNextWord(jstr,i,maxlen); if(_isTrue(jstr,i,nextPos)){ jv->_type = json_boolean; jv->_boolValue = true; }else if(_isFalse(jstr,i,nextPos)){ jv->_type = json_boolean; jv->_boolValue = false; }else if(_isNull(jstr,i,nextPos)){ }else if(_isDouble(jstr,i,nextPos,jv->_doubleValue)){ jv->_type = json_double; }else if(_isInteger(jstr,i,nextPos,jv->_intValue)){ jv->_type = json_integer; }else return -1; i = nextPos; } break; } return i; }
int _parseAll(LPCWSTR jstr,int pos,int maxlen,Json* jv){ while(_isSpaceChar(jstr[pos])){ pos++; if(pos==maxlen) return -1; } if(jstr[pos]=='\"'){ jv->_type = json_string; jv->_strValue = new String; pos = _parseString(jstr,pos+1,maxlen,jv->_strValue); }else if(jstr[pos]=='\''){ jv->_type = json_binary; jv->_binaryValue = new Memory<char>; pos = _parseBinary(jstr,pos+1,maxlen,jv->_binaryValue); }else if(jstr[pos]=='['){ jv->_type = json_array; jv->_arrayValue = new ObjectLink<Json>; pos = _parseArray(jstr,pos+1,maxlen,jv->_arrayValue); }else if(jstr[pos]=='{'){ jv->_type = json_object; jv->_objectValue = new ObjectLink<Json::DICTION>; pos = _parseObject(jstr,pos+1,maxlen,jv->_objectValue); }else{ int nextPos = _getNextWord(jstr,pos,maxlen); if(_isTrue(jstr,pos,nextPos)){ jv->_type = json_boolean; jv->_boolValue = true; }else if(_isFalse(jstr,pos,nextPos)){ jv->_type = json_boolean; jv->_boolValue = false; }else if(_isNull(jstr,pos,nextPos)){ //jv本来就是 null 。 }else if(_isInteger(jstr,pos,nextPos,jv->_intValue)){ jv->_type = json_integer; }else if(_isDouble(jstr,pos,nextPos,jv->_doubleValue)){ jv->_type = json_double; }else return -1; pos = nextPos; } return pos; }
JValue* Parser::_parseValue() { switch(_cur_token.type()) { case TT_STRING: return _parseString(); case TT_INTEGER: return _parseInt(); case TT_REAL: return _parseReal(); case TT_TRUE: return _parseTrue(); case TT_FALSE: return _parseFalse(); case TT_NULL: return _parseNull(); case TT_ARRAY_OPEN_BRACE: return _parseArray(); case TT_OBJECT_OPEN_BRACE: return _parseObject(); default: _err = _instream->error(); return NULL; } }
int YColorLed::_parseAttr(yJsonStateMachine& j) { if(!strcmp(j.token, "rgbColor")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _rgbColor = atoi(j.token); return 1; } if(!strcmp(j.token, "hslColor")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _hslColor = atoi(j.token); return 1; } if(!strcmp(j.token, "rgbMove")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; if(j.st != YJSON_PARSE_STRUCT) goto failed; while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) { if(!strcmp(j.token, "moving")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _rgbMove.moving = atoi(j.token); } else if(!strcmp(j.token, "target")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _rgbMove.target = atoi(j.token); } else if(!strcmp(j.token, "ms")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _rgbMove.ms = atoi(j.token); } } if(j.st != YJSON_PARSE_STRUCT) goto failed; return 1; } if(!strcmp(j.token, "hslMove")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; if(j.st != YJSON_PARSE_STRUCT) goto failed; while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) { if(!strcmp(j.token, "moving")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _hslMove.moving = atoi(j.token); } else if(!strcmp(j.token, "target")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _hslMove.target = atoi(j.token); } else if(!strcmp(j.token, "ms")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _hslMove.ms = atoi(j.token); } } if(j.st != YJSON_PARSE_STRUCT) goto failed; return 1; } if(!strcmp(j.token, "rgbColorAtPowerOn")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _rgbColorAtPowerOn = atoi(j.token); return 1; } if(!strcmp(j.token, "blinkSeqSize")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _blinkSeqSize = atoi(j.token); return 1; } if(!strcmp(j.token, "blinkSeqMaxSize")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _blinkSeqMaxSize = atoi(j.token); return 1; } if(!strcmp(j.token, "blinkSeqSignature")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _blinkSeqSignature = atoi(j.token); return 1; } if(!strcmp(j.token, "command")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _command = _parseString(j); return 1; } failed: return YFunction::_parseAttr(j); }
bool LanguageMetadataParser::_parseRule() throw(LanguageException) { //rule ::= rule-identifier unnecessary-character '::=' unnecessary-character rule-definition unnecessary-character ';'; //variables LMRuleIdentifier ruleIdentifier; LMRuleDefinition ruleDefinition; if (_parseRuleIdentifier()) { _parseUnnecessaryCharacters(); if (_parseString("::=")) { _parseUnnecessaryCharacters(); //on parse la définition de la règle if (_parseRuleDefinition()) { _parseUnnecessaryCharacters(); if (_parseString(";")) { //on récupert le dernier identifiant de règle if (_ruleIdentifierStack.size() >= 1) { ruleIdentifier = _ruleIdentifierStack.top(); _ruleIdentifierStack.pop(); } else { //traitement des erreurs throw LanguageException(_languageIdentifier, tr("euh ...")); } //on récupert la dernière definition de la règle if (_ruleDefinitionStack.size() >= 1) { ruleDefinition = _ruleDefinitionStack.top(); _ruleDefinitionStack.pop(); } else { //traitement des erreurs throw LanguageException(_languageIdentifier, tr("euh ...")); } //ajout de la règle dans le tableau des règles _rules[ruleIdentifier] = ruleDefinition; return true; } else { throw LanguageException(_languageIdentifier, _languageMetadataBuffer->getCurrentLine() - 1, tr("syntaxe incorrecte, symbole \";\" absent.")); } } else { throw LanguageException(_languageIdentifier, _languageMetadataBuffer->getCurrentLine(), tr("syntaxe incorrecte, règle non défini après le symbole \"::=\".")); } } else { throw LanguageException(_languageIdentifier, _languageMetadataBuffer->getCurrentLine(), tr("syntaxe incorrecte, symbole \"::=\" absent.")); } } return false; }
int YNetwork::_parse(yJsonStateMachine& j) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL || j.st != YJSON_PARSE_STRUCT) { failed: return -1; } while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) { if(!strcmp(j.token, "logicalName")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _logicalName = _parseString(j); } else if(!strcmp(j.token, "advertisedValue")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _advertisedValue = _parseString(j); } else if(!strcmp(j.token, "readiness")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _readiness = (Y_READINESS_enum)atoi(j.token); } else if(!strcmp(j.token, "macAddress")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _macAddress = _parseString(j); } else if(!strcmp(j.token, "ipAddress")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _ipAddress = _parseString(j); } else if(!strcmp(j.token, "subnetMask")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _subnetMask = _parseString(j); } else if(!strcmp(j.token, "router")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _router = _parseString(j); } else if(!strcmp(j.token, "ipConfig")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _ipConfig = _parseString(j); } else if(!strcmp(j.token, "primaryDNS")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _primaryDNS = _parseString(j); } else if(!strcmp(j.token, "secondaryDNS")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _secondaryDNS = _parseString(j); } else if(!strcmp(j.token, "userPassword")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _userPassword = _parseString(j); } else if(!strcmp(j.token, "adminPassword")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _adminPassword = _parseString(j); } else if(!strcmp(j.token, "discoverable")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _discoverable = (Y_DISCOVERABLE_enum)atoi(j.token); } else if(!strcmp(j.token, "wwwWatchdogDelay")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _wwwWatchdogDelay = atoi(j.token); } else if(!strcmp(j.token, "callbackUrl")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _callbackUrl = _parseString(j); } else if(!strcmp(j.token, "callbackMethod")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _callbackMethod = (Y_CALLBACKMETHOD_enum)atoi(j.token); } else if(!strcmp(j.token, "callbackEncoding")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _callbackEncoding = (Y_CALLBACKENCODING_enum)atoi(j.token); } else if(!strcmp(j.token, "callbackCredentials")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _callbackCredentials = _parseString(j); } else if(!strcmp(j.token, "callbackMinDelay")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _callbackMinDelay = atoi(j.token); } else if(!strcmp(j.token, "callbackMaxDelay")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _callbackMaxDelay = atoi(j.token); } else if(!strcmp(j.token, "poeCurrent")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1; _poeCurrent = atoi(j.token); } else { // ignore unknown field yJsonSkip(&j, 1); } } if(j.st != YJSON_PARSE_STRUCT) goto failed; return 0; }
int YNetwork::_parseAttr(yJsonStateMachine& j) { if(!strcmp(j.token, "readiness")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _readiness = (Y_READINESS_enum)atoi(j.token); return 1; } if(!strcmp(j.token, "macAddress")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _macAddress = _parseString(j); return 1; } if(!strcmp(j.token, "ipAddress")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _ipAddress = _parseString(j); return 1; } if(!strcmp(j.token, "subnetMask")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _subnetMask = _parseString(j); return 1; } if(!strcmp(j.token, "router")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _router = _parseString(j); return 1; } if(!strcmp(j.token, "ipConfig")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _ipConfig = _parseString(j); return 1; } if(!strcmp(j.token, "primaryDNS")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _primaryDNS = _parseString(j); return 1; } if(!strcmp(j.token, "secondaryDNS")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _secondaryDNS = _parseString(j); return 1; } if(!strcmp(j.token, "ntpServer")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _ntpServer = _parseString(j); return 1; } if(!strcmp(j.token, "userPassword")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _userPassword = _parseString(j); return 1; } if(!strcmp(j.token, "adminPassword")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _adminPassword = _parseString(j); return 1; } if(!strcmp(j.token, "httpPort")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _httpPort = atoi(j.token); return 1; } if(!strcmp(j.token, "defaultPage")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _defaultPage = _parseString(j); return 1; } if(!strcmp(j.token, "discoverable")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _discoverable = (Y_DISCOVERABLE_enum)atoi(j.token); return 1; } if(!strcmp(j.token, "wwwWatchdogDelay")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _wwwWatchdogDelay = atoi(j.token); return 1; } if(!strcmp(j.token, "callbackUrl")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _callbackUrl = _parseString(j); return 1; } if(!strcmp(j.token, "callbackMethod")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _callbackMethod = (Y_CALLBACKMETHOD_enum)atoi(j.token); return 1; } if(!strcmp(j.token, "callbackEncoding")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _callbackEncoding = (Y_CALLBACKENCODING_enum)atoi(j.token); return 1; } if(!strcmp(j.token, "callbackCredentials")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _callbackCredentials = _parseString(j); return 1; } if(!strcmp(j.token, "callbackMinDelay")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _callbackMinDelay = atoi(j.token); return 1; } if(!strcmp(j.token, "callbackMaxDelay")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _callbackMaxDelay = atoi(j.token); return 1; } if(!strcmp(j.token, "poeCurrent")) { if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed; _poeCurrent = atoi(j.token); return 1; } failed: return YFunction::_parseAttr(j); }