mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-29 06:22:51 -06:00
Work on web api & apps based on the C run-time system
+ PGFService.hs: add command c-grammar, include probability in parse results + js/gftranslation.js: add start position and limit parameters, return more info to applications + Simple Translator: show two wide coverage translations + Wide coverage demo: show parse tree and probability (intended as grammar debugging aids)
This commit is contained in:
@@ -5,30 +5,36 @@ var gftranslate = {}
|
||||
|
||||
gftranslate.jsonurl="/robust/Translate8.pgf"
|
||||
gftranslate.grammar="Translate" // the name of the grammar
|
||||
gftranslate.languages="Bul Chi Eng Fin Fre Ger Hin Swe".split(" ")
|
||||
// hardwired for now
|
||||
|
||||
gftranslate.call=function(querystring,cont) {
|
||||
http_get_json(gftranslate.jsonurl+querystring,cont)
|
||||
}
|
||||
|
||||
// Translate a sentence to the given target language
|
||||
gftranslate.translate=function(source,from,to,cont) {
|
||||
// Translate a sentence
|
||||
gftranslate.translate=function(source,from,to,start,limit,cont) {
|
||||
var encsrc=encodeURIComponent(source)
|
||||
var g=gftranslate.grammar
|
||||
function extract(result) {
|
||||
cont(result[0].translations[0].linearizations[0].text)
|
||||
}
|
||||
function extract(result) { cont(result[0].translations) }
|
||||
if(encsrc.length<200) // match limit in runtime/c/utils/pgf-server.c
|
||||
gftranslate.call("?command=c-translate&input="+encsrc
|
||||
+"&from="+g+from+"&to="+g+to+"&limit=1",extract)
|
||||
else cont("[GF robust parser: sentence too long]")
|
||||
+"&from="+g+from+"&to="+g+to
|
||||
+"&start="+start+"&limit="+limit,extract)
|
||||
else cont([{error:"sentence too long"}])
|
||||
}
|
||||
|
||||
// Get functions to test which source and target langauges are supported
|
||||
gftranslate.get_support=function(cont) {
|
||||
if(!gftranslate.targets) gftranslate.targets=toSet(gftranslate.languages)
|
||||
function ssupport(code) { return gftranslate.targets[code] }
|
||||
function tsupport(code) { return gftranslate.targets[code] }
|
||||
cont(ssupport,tsupport)
|
||||
function support(code) { return gftranslate.targets[code] }
|
||||
function init2(grammar_info) {
|
||||
var ls=grammar_info.languages
|
||||
gftranslate.grammar=grammar_info.name
|
||||
var langs=[], pre=gftranslate.grammar, n=pre.length
|
||||
for(var i=0;i<ls.length;i++)
|
||||
if(ls[i].name.substr(0,n)==pre) langs.push(ls[i].name.substr(n))
|
||||
gftranslate.targetlist=langs
|
||||
gftranslate.targets=toSet(langs)
|
||||
cont(support,support)
|
||||
}
|
||||
if(gftranslate.targets) cont(support,support)
|
||||
else gftranslate.call("?command=c-grammar",init2)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user