forked from GitHub/gf-core
gfse: supply information about what's defined in the exampe language to the server functions for example-based grammar writing
This commit is contained in:
@@ -42,8 +42,8 @@ data Environ = Env {getTypeMap :: TypeMap, -- mapping between a
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
getNext :: Environ -> ([MyFunc],[MyFunc])
|
getNext :: Environ -> Environ -> ([MyFunc],[MyFunc])
|
||||||
getNext env =
|
getNext env example_env =
|
||||||
let sgs = getSigs env
|
let sgs = getSigs env
|
||||||
allfuncs = getAll env
|
allfuncs = getAll env
|
||||||
names = Set.fromList $ map getName $ concat $ Map.elems sgs
|
names = Set.fromList $ map getName $ concat $ Map.elems sgs
|
||||||
|
|||||||
@@ -22,12 +22,16 @@ cgiMain' root cwd cache =
|
|||||||
do command <- getInp "command"
|
do command <- getInp "command"
|
||||||
environ <- parseEnviron =<< getInp "state"
|
environ <- parseEnviron =<< getInp "state"
|
||||||
case command of
|
case command of
|
||||||
"possibilities" -> outputJSONP (E.getNext environ)
|
"possibilities" -> doPossibilities environ
|
||||||
"provide_example" -> doProvideExample root cwd cache environ
|
"provide_example" -> doProvideExample root cwd cache environ
|
||||||
"abstract_example" -> doAbstractExample cwd cache environ
|
"abstract_example" -> doAbstractExample cwd cache environ
|
||||||
"test_function" -> doTestFunction cwd cache environ
|
"test_function" -> doTestFunction cwd cache environ
|
||||||
_ -> throwCGIError 400 ("Unknown command: "++command) []
|
_ -> throwCGIError 400 ("Unknown command: "++command) []
|
||||||
|
|
||||||
|
doPossibilities environ =
|
||||||
|
do example_environ <- parseEnviron =<< getInp "example_state"
|
||||||
|
outputJSONP (E.getNext environ example_environ)
|
||||||
|
|
||||||
doProvideExample root cwd cache environ =
|
doProvideExample root cwd cache environ =
|
||||||
do Just lang <- readInput "lang"
|
do Just lang <- readInput "lang"
|
||||||
fun <- getCId "fun"
|
fun <- getCId "fun"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Editor improvements for example-based grammar writing:
|
Editor improvements for example-based grammar writing:
|
||||||
+ Remove the same language from the example language menu
|
+ Remove the same language from the example language menu
|
||||||
- Send the other language environment to getNext
|
+ Send the other language environment to getNext
|
||||||
- Compile a new .pgf automatically when needed
|
- Compile a new .pgf automatically when needed
|
||||||
- Update buttons automatically when functions are added or removed
|
- Update buttons automatically when functions are added or removed
|
||||||
- Switch over to using AbsParadigmsEng.pgf instead of the old exprToAPI function
|
- Switch over to using AbsParadigmsEng.pgf instead of the old exprToAPI function
|
||||||
|
|||||||
@@ -51,8 +51,8 @@ function ask_possibilities(g,ci) {
|
|||||||
if(!conc.example_lang) conc.example_lang=g.concretes[0].langcode;
|
if(!conc.example_lang) conc.example_lang=g.concretes[0].langcode;
|
||||||
reload_grammar(g);
|
reload_grammar(g);
|
||||||
}
|
}
|
||||||
|
var exci=conc_index(g,conc.example_lang);
|
||||||
exb_call(g,ci,"possibilities",{},show_poss)
|
exb_call(g,ci,"possibilities",{example_state:exb_state(g,exci)},show_poss)
|
||||||
}
|
}
|
||||||
|
|
||||||
var parser = { Eng: "ParseEngAbs.pgf",
|
var parser = { Eng: "ParseEngAbs.pgf",
|
||||||
|
|||||||
@@ -14,18 +14,29 @@ function defined_funs(g) {
|
|||||||
return df;
|
return df;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the type of a named function in the abstract syntax
|
||||||
function function_type(g,fun) {
|
function function_type(g,fun) {
|
||||||
with(g.abstract)
|
with(g.abstract)
|
||||||
for(var i in funs) if(funs[i].name==fun) return funs[i].type
|
for(var i in funs) if(funs[i].name==fun) return funs[i].type
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the lincat defined in a given concrete syntax for an abstract category
|
||||||
function cat_lincat(conc,cat) {
|
function cat_lincat(conc,cat) {
|
||||||
with(conc)
|
with(conc)
|
||||||
for(var i in lincats) if(lincats[i].cat==cat) return lincats[i].type
|
for(var i in lincats) if(lincats[i].cat==cat) return lincats[i].type
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the index of the concrete syntax with a given langcode
|
||||||
|
function conc_index(g,langcode) {
|
||||||
|
var c=g.concretes;
|
||||||
|
for(var ix=0;ix<c.length;ix++)
|
||||||
|
if(c[ix].langcode==langcode) return ix
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function rename_category(g,oldcat,newcat) {
|
function rename_category(g,oldcat,newcat) {
|
||||||
function rename_cats(cats) {
|
function rename_cats(cats) {
|
||||||
for(var i in cats) if(cats[i]==oldcat) cats[i]=newcat;
|
for(var i in cats) if(cats[i]==oldcat) cats[i]=newcat;
|
||||||
|
|||||||
Reference in New Issue
Block a user