//Transformation from SBVR Logical Formulation to ISO Common Logic eval(translateCode(readFile('SBVR'))) eval(translateCode(readFile('PrettyTree'))) ometa SBVR2CL { $ :x = apply(x) | empty -> '', trans [:t apply(t):ans] -> ans, token :x [:t ?{t==x} apply(x):ans] -> ans, num anything:n ?{!isNaN(n)} -> [`num, n], model ("term"|"fcTp"|"rule")*:xs -> [`model].concat(xs), term anything:w -> [`term, w], fcTp ("term":t "verb":v->[t,v])*:r $("term"):e -> [`fcTp].concat(this._cLst(r)).concat([e]), rule trans*:xs -> [`rule].concat(xs), verb anything:v -> [`verb, v], obl trans*:xs -> [`obl].concat(xs), nec trans*:xs -> [`nec].concat(xs), pos trans*:xs -> [`pos].concat(xs), prm trans*:xs -> [`prm].concat(xs), neg trans*:xs -> [`neg].concat(xs), univQ "var":v trans*:xs -> [`univQ, v].concat(xs), existQ "var":v trans*:xs -> [`existQ, v].concat(xs), exactQ "card":i "var":v trans*:xs -> [`exactQ, i, v].concat(xs), atMostQ "maxCard":a "var":v trans*:xs -> [`atMostQ, a, v].concat(xs), atLeastQ "minCard":i "var":v trans*:xs -> [`atLeastQ, i, v].concat(xs), numRngQ "minCard":i "maxCard":a "var":v trans*:xs -> [`numRngQ, i, a].concat(xs), minCard "num":n -> [`minCard, n], maxCard "num":n -> [`maxCard, n], var number:n trans*:w -> [`var, n].concat(w), bind anything:w number:n -> [`bind, w, n], aFrm trans*:xs -> [`aFrm].concat(xs) } SBVR2CL._cLst = function(v) { for(var i=1;i