-function zeroOrOnceDo(f) {
- return (x) => {
- var wrapped_old_x = { _tag: "Some", value: x };
- var wrapped_new_x = thenDo(wrapped_old_x, f);
- if (wrapped_new_x._tag != "None") {
- return wrapped_new_x;
- }
- else {
- return wrapped_old_x;
- }
- };
-}
-exports.zeroOrOnceDo = zeroOrOnceDo;
-function tokenize(input) {
- var input_matchee_pair = toSome({ matched: "",
- remained: input });
- // integer = ([+]|[-])\d\d?
- let integer = (x) => {
- let wrapped_x = toSome(x);
- let plusMinus = orDo(match1Char('+'), match1Char('-')); // ([+]|[-])
- let d = matchRange('0', '9'); // \d
- return thenDo(thenDo(thenDo(wrapped_x, zeroOrOnceDo(plusMinus)), d), zeroOrMoreDo(d));
- };
- console.log(input + ", result: ");
- console.log(thenDo(input_matchee_pair, integer));
- // TODO: id, string, space, basic operator, 3 marks: @, {, }.
-}
-exports.tokenize = tokenize;
-tokenize("+123");
-tokenize("123");
-tokenize("-123");
-tokenize(" 123");
-tokenize("c123");
+var typePair = (x) => {
+ let a = thenDo(thenDo(x.maybeTokens, typeName), tId);
+ if (a._tag == "Some") {
+ let matched = a.value.matched;
+ let slice = matched.slice(matched.length - 2);
+ console.log("slice" + slice);
+ let b = { maybeTokens: a, ast: slice };
+ return b;
+ }
+ else {
+ let b = { maybeTokens: a, ast: [] };
+ return b;
+ }
+};
+/**
+ * function's arguments
+ * FN_ARGS = TYPE_PAIR ("," TYPE_PAIR)+
+ */
+var fnArgs = (x) => {
+ let wrapper = { maybeTokens: toSome(x), ast: [] };
+ let a = typePair(wrapper);
+ console.log("AAAAA" + util.inspect(a, { showHidden: true, depth: null }));
+ let abanibi = typePair(a);
+ console.log("ABNB" + util.inspect(abanibi, { showHidden: true, depth: null }));
+ return { maybeTokens: abanibi.maybeTokens, ast: [a.ast, abanibi.ast] };
+};
+let tree = fnArgs(commandTPair);
+console.log("CHRANN" + util.inspect(tree, { showHidden: true, depth: null }));