/*---语法访问对象-----------------------------------------------*/函数pgf_online(选项){var服务器={//状态变量(私有):grammars_url:“/grammars/”,其他语法URL:[],grammar_list:空,current_grammar_url:空,//方法:switch_grammar:函数(grammar_url,续){this.currentgrammarurl=this.grammarsurl+语法url;if(cont)cont();},add_grammars_url:function(语法url,续){this.other_grammars_urls.push(语法url);if(cont)cont();},switch_to_other_grammar:函数(grammar_url,续){this.current_grammar_url=语法url;if(cont)cont();},get_grammarlist:函数(cont,err){if(this.grammarlist)cont(this.grammarllist)其他http_get_json(this.grammars_url+“grammars.cgi”,cont,err);},get_grammarlists:function(cont,err){//可能多次调用cont!var ds=this.other_grammars_urls;var n=1+ds.长度;功能对(dir){返回函数(语法列表){cont(dir,grammarlist,n)}}函数ignore_error(err){console.log(err)}this.getgrammarlist(配对(this.grammarsurl),err)for(ds中的var i)http_get_json(ds[i]+“grammars.cgi”,pair(ds[i),ignore_error);},pgf调用:函数(cmd、args、cont、err){var url=this.current_grammar_url+“?command=”+cmd+encodeArgs(args)http_get_json(url、cont、err);},get_languages:函数(续,错误){this.pgf调用(“语法”,{},cont,err);},grammar_info:函数(cont,err){this.pgf调用(“语法”,{},cont,err);},get_random:函数(args,cont,err){//cat,limitargs.random=数学.random();//副作用!!this.pgf调用(“random”,args,cont,err);},线性化:函数(args,cont,err){//树,到this.pgf调用(“线性化”,args,cont,err);},完成:函数(args,cont,err){//from,input,cat,limitthis.pgf调用(“完成”,args,cont,err);},解析:函数(args,cont,err){//from,input,catthis.pgf调用(“解析”,args,cont,err);},translate:函数(args,cont,err){//from,input,cat,tothis.pgf调用(“translate”,args,cont,err);},translategroup:function(args,cont,err){//from,input,cat,tothis.pgf调用(“translategroup”,args,cont,err);},浏览:函数(args,cont,err){//id,formatif(!args.format)args.format=“json”;//sife效应!!this.pgf调用(“浏览”,args,cont,err);}};for(选项中的var o)服务器[o]=选项[o];if(server.grammar_list&&server.grammar_list.length>0)server.switch_grammar(server.grammar_list[0]);返回服务器;}