1
0
forked from GitHub/gf-core

Syntax editor; add new helper for parsing type signatures (not complete)

This commit is contained in:
john.j.camilleri
2012-11-27 12:00:41 +00:00
parent 7faa501542
commit 53e6546a53
2 changed files with 37 additions and 7 deletions

View File

@@ -58,7 +58,7 @@ function ASTNode(data) {
function AST(fun, cat) {
// local helper function for building ASTNodes
newNode = function(fun, cat) {
var newNode = function(fun, cat) {
return new ASTNode({
"fun": fun,
"cat": cat,
@@ -205,4 +205,36 @@ function AST(fun, cat) {
}
}
// Parse type signature into a JSON object
// (This probably needs a better home)
AST.parse_type_signature = function(str) {
var obj = {
type: undefined,
name: [],
deps: [],
args: [],
ret: undefined
};
var ix = str.indexOf(":");
// judgement type
var bits = str.substr(0, ix).split(" ");
obj.type = bits[0];
// name (possibly with constructors)
obj.name = bits.slice(1);
// function args (possibly with type dependency)
var bits = map(function(s){return s.trim()}, str.substr(ix+1).split("->"));
for (var i=0 ; i<bits.length-1; i++) {
var bit = bits[i];
obj.args.push(bit);
}
// return type
obj.ret = bits[bits.length-1];
return obj;
}