#include<stdio.h>
#include<iostream>
#include<string>
#include<map>
using namespace std;
int m,n;
string buffer;
map<string, string> dict;
string gettoken(){
static char lastchar = ' ';
while(isspace(lastchar)){
lastchar = getchar();
}
char ch = ' ';
bool isslash = false;
string ret;
switch(lastchar){
case '{':
case '}':
case ':':
case ',':
ch = lastchar;
lastchar = getchar();
return string(1, ch);
case EOF:
return "";
case '"':
lastchar = getchar();
while(true){
if (isslash){
ret.push_back(lastchar);
lastchar = getchar();
isslash = false;
}else{
if (lastchar == '\"'){
lastchar = getchar();
return ret;
}else if(lastchar == '\\'){
isslash = true;
lastchar = getchar();
}else{
ret.push_back(lastchar);
lastchar = getchar();
}
}
}
}
return "";
}
void dealwith(string prefix){
string key;
string value;
while(true){
key = gettoken();
if(key == ","){
continue;
}else if (key == "}"){
break;
}else{
gettoken(); // eat token ":";
value = gettoken();
if (value == "{"){
dict[prefix+key] = "OBJECT";
dealwith(prefix+key+".");
}else{
dict[prefix+key] = value;
}
}
}
}
int main(){
// freopen("in.txt", "r", stdin);
cin>>m>>n;
getchar();
gettoken();
dealwith("");
string temp;
for (int i = 0; i<n; i++){
cin>>temp;
if (dict[temp] == ""){
cout<<"NOTEXIST"<<endl;
}else if (dict[temp] == "OBJECT"){
cout<<"OBJECT"<<endl;
}else{
cout<<"STRING"<<" "<<dict[temp]<<endl;
}
}
return 0;
}
CCF CSP JSON查询
最新推荐文章于 2021-04-08 22:05:27 发布