From b444bc3daf041625f175caf789bfba4743db493b Mon Sep 17 00:00:00 2001 From: "ben@dcdc.io" Date: Sun, 28 Apr 2019 00:04:45 +0100 Subject: [PATCH] before indent bug fix --- .vscode/settings.json | 7 + dist/martha.ast.js | 116 ++-- dist/martha.ast.js.map | 2 +- dist/martha.emit.js | 19 + dist/martha.emit.js.map | 2 +- dist/martha.grammar.js | 137 +++- dist/martha.grammar.js.map | 2 +- dist/martha.js | 7 +- dist/martha.js.map | 2 +- dist/martha.program.js.map | 2 +- dist/test/genesis.spec.js | 14 +- dist/test/genesis.spec.js.map | 2 +- dist/test/kallis.Result.ma.spec.js | 1 - dist/test/kallis.Result.ma.spec.js.map | 2 +- dist/test/martha.ast.spec.js | 27 +- dist/test/martha.ast.spec.js.map | 2 +- dist/test/martha.grammar.spec.js | 519 ++++++++++----- dist/test/martha.grammar.spec.js.map | 2 +- dist/test/martha.spec.js | 2 +- dist/test/martha.spec.js.map | 2 +- src/genani/genesis.1.ma | 31 +- src/genani/genesis.1.ma.json | 104 +++ src/genani/organisation.ma | 34 +- src/kallis/_kallis.Result.im | 846 +------------------------ src/martha.ast.ts | 118 ++-- src/martha.emit.ts | 21 +- src/martha.grammar.ts | 223 +++++-- src/test/genesis.spec.ts | 21 +- src/test/kallis.Result.ma.spec.ts | 1 - src/test/martha.ast.spec.ts | 49 +- src/test/martha.grammar.spec.ts | 63 +- syntax.m.txt | 8 +- 32 files changed, 1082 insertions(+), 1306 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 src/genani/genesis.1.ma.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..77f7ca3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "mocha.files.glob": "src/test/**/*.ts", + "mocha.requires": [ + "ts-node/register" + ], + "wallaby.outputContentSize": 409600 +} \ No newline at end of file diff --git a/dist/martha.ast.js b/dist/martha.ast.js index 73ef4f2..36e6550 100644 --- a/dist/martha.ast.js +++ b/dist/martha.ast.js @@ -15,7 +15,8 @@ const isa = (T) => (x) => { }; const namedmany = (cst, name) => { const fcst = flat(cst); - return fcst.filter(x => x.named === name); + const result = fcst.filter(x => x && x.named === name); + return result; }; const named = (cst, name) => { return namedmany(cst, name).length > 0 ? namedmany(cst, name)[0] : undefined; @@ -55,8 +56,11 @@ class AST { } return modcst; } + static tupleargumentdef(result, cst) { + return emit(martha_emit_1.TupleArgumentDef, { arguments: flat(cst) }); + } static argumentdef(result, cst) { - let argspec = named(flat(cst), "argspec"); + let argspec = cst && named(flat(cst), "argspec"); // ? return emit(martha_emit_1.ArgumentDef, { name: result.one("varname"), type: cst ? flat(cst).filter(isa(martha_emit_1.TypeRef)) : [], @@ -64,10 +68,7 @@ class AST { }); } static argumentdefs(result, cst) { - return { - op: "argdefs", - parameters: flat(cst) - }; + return flat(cst); } static returndef(result, cst) { let argspec = named(flat(cst), "argspec"); @@ -77,21 +78,30 @@ class AST { }); } static methoddef(result, cst) { + flat(named(cst, "type").cst); // ? let fcst = flat(cst); let accessors = named(fcst, "accessors"); - let returndef = cst && flat(cst).find((x) => x instanceof martha_emit_1.ReturnDef); - return emit(martha_emit_1.MethodDef, { + let type = named(fcst, "type"); + let nextstate = named(fcst, "nextstate") ? named(fcst, "nextstate").cst : undefined; + let returndef = named(fcst, "returndef"); // ? + let output = emit(martha_emit_1.MethodDef, { // TODO: new Token s/c because unknown definitily typed behaviour around || - name: result.one("ctor") || result.one("name") || new martha_emit_1.Token(), - attributes: cst && flat(cst).filter(isa(martha_emit_1.Attribute)), + name: undefined, + attributes: fcst.filter(isa(martha_emit_1.Attribute)), accessors: accessors.result.tokens.map((t) => emit(martha_emit_1.Token, { value: t.result.value, index: t.result.startloc })), - arguments: cst ? flat(flat(cst).filter((x) => x.op == "argdefs").map((x) => x.parameters)) : [], - body: cst ? flat(cst).filter((x) => x instanceof martha_emit_1.Statement) : [], - return: returndef, + arguments: fcst.filter(isa(martha_emit_1.ArgumentDef)), + body: fcst.filter(isa(martha_emit_1.Statement)), + return: returndef }); + // next state for transitional methoddefs + if (nextstate) { + output = emit(martha_emit_1.TransitioningMethodDef, Object.assign({}, output, { nextstate })); + } + return output; } static typedef(result, cst) { let fcst = flat(cst); + let stateblocks = named(fcst, "stateblocks"); let basetype = named(fcst, "basetype"); let types = fcst .filter(x => x) @@ -103,36 +113,65 @@ class AST { basetype: basetype ? flat(basetype.cst)[0] : undefined }; type.members = fcst.filter(isa(martha_emit_1.MemberDef)); - type.methods = fcst.filter(isa(martha_emit_1.MethodDef)); + type.states = stateblocks ? stateblocks.cst : undefined; return emit(martha_emit_1.TypeDef, type); }); }); return flat(types); } - static typedef_index(result, cst) { - //console.log(flat(flat(namedmany(cst, "types"))[0].cst)) + static stateblock(result, cst) { + let fcst = flat(cst); // ? + let body = flat(namedmany(fcst, "body").map(c => c.cst)); // ? + let state = named(fcst, "state").cst[0]; + let members = body.filter(isa(martha_emit_1.MemberDef)); + let substates = body.filter(isa(martha_emit_1.StateBlockDef)); + let statedef = emit(martha_emit_1.StateBlockDef, { + state, + members, + substates + }); + return statedef; + } + static typedef_type(result, cst) { + /** + * name, types, indexer, callsignature + */ + flat(cst); // ? let ref = emit(martha_emit_1.TypeRef, { - nameref: cst ? flat(namedmany(cst, "name").map(c => c.cst)) : undefined, - types: cst ? flat(namedmany(cst, "types").map(c => AST.typedef_index(result, c.cst))) : undefined, - indexer: cst ? flat(namedmany(cst, "indexer").map(c => AST.typedef_index(result, c.cst || []))) : undefined, + nameref: cst ? flat(namedmany(cst, "name").map(c => c.cst)) : [], + callargs: cst ? flat(namedmany(cst, "callsignature").map(c => c.cst)) : [], + typeargs: cst ? flat(namedmany(cst, "types").map(c => c.cst)) : [], + indexargs: cst ? flat(namedmany(cst, "indexer").map(c => c.cst)) : [], }); return ref; // return cst ? (result.get("typename") || []).concat([{index:flat(cst)}]) : result.get("typename") } - static typedef_type(result, cst) { - return AST.typedef_index(result, cst); - } static typedef_member(result, cst) { // TODO: memberdef type - let fcst = flat(cst).filter(x => x); - return fcst - .filter(isa(martha_emit_1.Reference)) - .map(x => emit(martha_emit_1.MemberDef, { - type: fcst[0], - name: x.name, - getter: named(fcst, "getter") ? named(fcst, "getter").cst : [], - setter: named(fcst, "setter") ? named(fcst, "setter").cst : [], - })); + const fcst = flat(cst); + const members = fcst.filter(isa(martha_emit_1.MemberDef)); // ? + const body = flat(namedmany(fcst, "body").filter(x => x.cst).map(x => x.cst)); + members.forEach(member => { + member.body = body; + }); + return fcst.filter(isa(martha_emit_1.MemberDef)); //? + } + static typedef_member_dec(result, cst) { + // membernames { vartuples*, vars* typehint, transition, getter, setter + const fcst = flat(cst); + const modifiers = named(fcst, "modifiers").result.tokens.map((t) => emit(martha_emit_1.Token, { value: t.result.value, index: t.result.startloc })); + const names = flat(named(fcst, "membernames").cst); + const args = named(fcst, "callsignature"); // ? + const typehint = named(fcst, "typehint"); + const transition = named(fcst, "transition"); + const _arguments = flat(named(fcst, "vars").cst || []); + return [emit(martha_emit_1.MemberDef, { + modifiers: (modifiers || []).map((m) => emit(martha_emit_1.Token, m.result)), + transition: transition ? transition.cst : [], + name: names[0], + type: typehint ? typehint.cst[0] : undefined, + arguments: _arguments + })]; } static typedef_name(result, cst) { return { @@ -235,7 +274,6 @@ class AST { return "pop"; } static pushed(result, cst) { - console.log(cst); let depth = flat(cst).filter(x => x === "push").length; let r = flat(cst).filter(x => x !== "push" && !x.target); while (depth--) { @@ -386,10 +424,11 @@ class AST { } static macrodef(result, cst) { let fcst = flat(cst); - let name = named(fcst, "name").result.one("member") || named(fcst, "name").result.one("string").match(/.(.*)./)[1]; - let rules = fcst.filter(isa(martha_emit_1.MacroRuleDef)); - let macro = emit(martha_emit_1.MacroDef, { name, rules }); - console.log(macro); + let def = named(fcst, "def").cst; + let name = named(def, "name").result.one("member") || named(def, "name").result.one("string").match(/.(.*)./)[1]; + let insert = named(def, "insert").cst[0]; + let rule = fcst.filter(isa(martha_emit_1.MacroRuleDef))[0]; + let macro = emit(martha_emit_1.MacroDef, { name: emit(martha_emit_1.Token, name), insert, rule }); return macro; } static macrorule(result, cst) { @@ -397,7 +436,10 @@ class AST { return emit(martha_emit_1.MacroRuleDef, { rule: [fcst[0]], body: fcst.slice(1) }); } static importdef(result, cst) { - return emit(martha_emit_1.ImportDef, { name: flat(cst).find(x => isa(martha_emit_1.Reference)(x)).name }); + return emit(martha_emit_1.ImportDef, { + name: named(flat(cst), "name").cst[0], + library: named(flat(cst), "library") ? named(flat(cst), "library").cst[0] : undefined + }); } static expandmacro(macro) { return (result, cst) => { diff --git a/dist/martha.ast.js.map b/dist/martha.ast.js.map index 4a12090..b5244e7 100644 --- a/dist/martha.ast.js.map +++ b/dist/martha.ast.js.map @@ -1 +1 @@ -{"version":3,"file":"martha.ast.js","sourceRoot":"","sources":["../src/martha.ast.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"martha.ast.js","sourceRoot":"","sources":["../src/martha.ast.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/martha.emit.js b/dist/martha.emit.js index 52abade..94a0335 100644 --- a/dist/martha.emit.js +++ b/dist/martha.emit.js @@ -407,6 +407,7 @@ exports.MinusMinus_Postfix = MinusMinus_Postfix; class Emit { static Emit(ctor, m) { //return new ctor() + delete m.__TYPE__; return Object.assign(new ctor(), m); } } @@ -435,6 +436,12 @@ ArgumentDef = __decorate([ serializable ], ArgumentDef); exports.ArgumentDef = ArgumentDef; +let TupleArgumentDef = class TupleArgumentDef { +}; +TupleArgumentDef = __decorate([ + serializable +], TupleArgumentDef); +exports.TupleArgumentDef = TupleArgumentDef; let Statement = class Statement { }; Statement = __decorate([ @@ -447,6 +454,12 @@ MethodDef = __decorate([ serializable ], MethodDef); exports.MethodDef = MethodDef; +let TransitioningMethodDef = class TransitioningMethodDef extends MethodDef { +}; +TransitioningMethodDef = __decorate([ + serializable +], TransitioningMethodDef); +exports.TransitioningMethodDef = TransitioningMethodDef; let List = class List { }; List = __decorate([ @@ -483,6 +496,12 @@ TypeDef = __decorate([ serializable ], TypeDef); exports.TypeDef = TypeDef; +let StateBlockDef = class StateBlockDef { +}; +StateBlockDef = __decorate([ + serializable +], StateBlockDef); +exports.StateBlockDef = StateBlockDef; let Lambda = class Lambda extends MethodDef { }; Lambda = __decorate([ diff --git a/dist/martha.emit.js.map b/dist/martha.emit.js.map index 02248db..9c63a85 100644 --- a/dist/martha.emit.js.map +++ b/dist/martha.emit.js.map @@ -1 +1 @@ -{"version":3,"file":"martha.emit.js","sourceRoot":"","sources":["../src/martha.emit.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"martha.emit.js","sourceRoot":"","sources":["../src/martha.emit.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/martha.grammar.js b/dist/martha.grammar.js index ed3fd18..fe0f26a 100644 --- a/dist/martha.grammar.js +++ b/dist/martha.grammar.js @@ -9,6 +9,7 @@ const flat = (arr) => { return arr.reduce((acc, val) => Array.isArray(val) ? acc.concat(flat(val)) : acc.concat(val), []); }; +const inf = (refrule) => rule(/\s*/, refrule, /\s*/); class WithParserContext { constructor(context) { this.context = context; @@ -134,6 +135,8 @@ class Op { this.splat = token("splat", "..."); this.infix_comma = rule(/\s*,\s*/); this.infix_colon = rule(/\s*\:\s*/); + this.infix_arrow = rule(/\s*\-\>\s*/); + this.infix_fatarrow = rule(/\s*\=\>\s*/); this.lsquare = token("lsquare", "["); this.rsquare = token("rsquare", "]"); this.lcurly = token("lcurly", "{"); @@ -322,9 +325,13 @@ class Kwrd { this.static = token("static", /static/); this.ctor = token("ctor", /constructor/); this.macro = "macro"; + this.for = "for"; this.when = "when"; this.use = "use"; + this.from = "from"; this.type = "type"; + this.machine = "machine"; + this.state = "state"; this.interface = "interface"; this.is = "is"; this.as = "as"; @@ -341,8 +348,8 @@ class Ref extends WithParserContext { constructor(context) { super(context); // members and variables - this._member = token("member", /[a-z_\$\@][a-z0-9\$\@]*/i); - this.varname = token("varname", /[a-z_\$\@][a-z0-9\$\@]*/i); + this._member = token("member", /[a-z_\$\@][_a-z0-9\$\@]*/i); + this.varname = token("varname", /[a-z_\$\@][_a-z0-9\$\@]*/i); this.member = rule(this._member, many(this.context.op.dot, this._member)) .yields(martha_ast_1.AST.reference); this.typename = token("typename", /[a-z_\$\@][a-z0-9\$\@]*/i); @@ -380,7 +387,6 @@ class Util extends WithParserContext { super(context); this.indents = []; this.pushIndent = rule(this.context.ws.space0ton, this.context.ws.newline, this.context.ws.indent).yields((r) => { - console.log("push"); this.indents.push(r.one("indent").value); }); this.peekIndent = rule(this.context.ws.newline, (input) => { @@ -392,13 +398,12 @@ class Util extends WithParserContext { return tibu_1.Result.fault(input); }); this.popIndent = rule((input) => { - console.log("pop"); this.indents.pop(); return tibu_1.Result.pass(input); }); this.EOF = rule((input) => input.location === input.source.length ? tibu_1.Result.pass(input) : tibu_1.Result.fault(input)); - this.block = (begin, repeat) => rule(many(this.context.ws.newline), begin, /[ \t]*:[ \t]*/, either(all(this.pushIndent, repeat, many(this.peekIndent, repeat), this.popIndent), all(repeat, many(repeat), /[ \t]*/), all(repeat, many(repeat), this.EOF), all(optional(/\s*/), this.EOF))); + this.block = (begin, repeat) => rule(many(this.context.ws.newline), begin, /[ \t]*=[ \t]*/, either(all(this.pushIndent, repeat, many(this.peekIndent, repeat), this.popIndent), all(repeat, many(repeat), /[ \t]*/), all(repeat, many(repeat), this.EOF), all(optional(/\s*/), this.EOF))); } } exports.Util = Util; @@ -472,14 +477,33 @@ class Def extends WithParserContext { ) .yields(named("argspec"))) .yields(martha_ast_1.AST.argumentsspec); - this.argumentdef = rule(optional(this.context.op.splat), () => this.context.def.typedef_type, this.context.op.infix_colon, this.context.ws.lr0ton(this.context.ref.varname), optional(this.argumentspec)) + this.argumentdef = rule(optional(this.context.op.splat), this.context.ws.lr0ton(this.context.ref.varname), this.context.op.infix_colon, () => this.context.def.typedef_type, optional(this.argumentspec)) .yields(martha_ast_1.AST.argumentdef); - this.returndef = rule(() => this.context.def.typedef_type, optional(this.argumentspec)) + this.returndef = rule(() => this.context.ref.member, optional(this.argumentspec)) .yields(martha_ast_1.AST.returndef); this.argumentdefs = rule(this.argumentdef, many(this.context.op.infix_comma, this.argumentdef)) .yields(martha_ast_1.AST.argumentdefs); - this.methoddef = rule(optional(rule("@", this.context.stmt.statement, /\s*/).yields(martha_ast_1.AST.attribute)), this.context.util.block(all(rule(many(either(this.context.kwrd.anyaccess, this.context.kwrd.abstract, this.context.kwrd.export, this.context.kwrd.extern, this.context.kwrd.static, this.context.kwrd.async, this.context.kwrd.atomic, this.context.kwrd.critical), this.context.ws.space1ton)).yields(named("accessors")), either(all(this.returndef, this.context.ws.lr0ton(this.context.op.colon), token("name", /\w+/)), this.context.kwrd.ctor), optional(this.context.ws.lr0ton(this.context.op.lparen), optional(this.argumentdefs), this.context.ws.lr0ton(this.context.op.rparen))), this.context.stmt.statement)) - .yields(martha_ast_1.AST.methoddef); + /* + methoddef = rule( + optional(rule("@", this.context.stmt.statement, this.context.ws.space0ton).yields(AST.attribute)), + this.context.util.block( + all( + rule(() => this.membermodifiers).yields(named("accessors")), + rule(() => this.context.def.typedef_type).yields(named("returntype")), + rule(() => this.context.ref.member).yields(named("name")), + rule(() => this.context.def.argumentspec).yields(named("returnspec")), + optional( + this.context.ws.lr0ton(this.context.op.arrow), + // next state(s) + rule(this.context.ref.member).yields(named("nextstate")) + ) + ), + this.context.stmt.statement + ) + ) + .yields(AST.methoddef) + ; + */ /* methoddec = rule( optional(rule(this.context.kwrd.anyaccess, many(this.context.ws.space1ton, this.context.kwrd.anyaccess), this.context.ws.space1ton).yields(AST.anyaccess)), @@ -500,35 +524,72 @@ class Def extends WithParserContext { ) ) ;*/ - this.macrodef = rule(this.context.util.block(rule(all(this.context.kwrd.macro, this.context.ws.space1ton, either(this.context.ref._member, this.context.val.str))).yields(named("name")), rule(this.context.util.block(rule(this.context.kwrd.as, this.context.ws.space1ton, rule(this.context.stmt.statement)), this.context.stmt.statement)).yields(martha_ast_1.AST.macrorule))) + this.macrodef = rule(this.context.util.block(rule(all(this.context.kwrd.macro, this.context.ws.space1ton, rule(either(this.context.ref._member, this.context.val.str)).yields(named("name")), this.context.ws.space1ton, this.context.kwrd.for, this.context.ws.space1ton, rule(this.context.ref.member).yields(named("insert")))).yields(named("def")), rule(this.context.util.block(rule(this.context.kwrd.as, this.context.ws.space1ton, rule(this.context.stmt.statement)), this.context.stmt.statement)).yields(martha_ast_1.AST.macrorule))) .yields(martha_ast_1.AST.macrodef); this.macrodefs = rule(many(this.macrodef, optional(this.context.ws.ANY_WS))) .yields(martha_ast_1.AST.flatcst); + this.modifiers_N = rule(many(either(this.context.kwrd.anyaccess, this.context.kwrd.abstract, this.context.kwrd.export, this.context.kwrd.extern, this.context.kwrd.static, this.context.kwrd.async, this.context.kwrd.atomic, this.context.kwrd.critical), this.context.ws.space1ton)).yields(named("modifiers")); this.membernames = rule(this.context.ref.member, many(optional(this.context.op.infix_comma, this.context.ref.member))) .yields((result, cst) => { return flat(cst); }); - this.importdef = rule(this.context.kwrd.import, this.context.ws.space1ton, this.context.ref.member) + this.importdef = rule(this.context.kwrd.import, this.context.ws.space1ton, rule(this.context.ref.member).yields(named("name")), optional(this.context.ws.space1ton, this.context.kwrd.from, this.context.ws.space1ton, rule(this.context.ref.member).yields(named("library")))) .yields(martha_ast_1.AST.importdef); this.importdefs = rule(many(this.importdef, optional(this.context.ws.ANY_WS))) .yields(martha_ast_1.AST.flatcst); this.typedef_name = rule(this.context.ref.typename, many(this.context.op.infix_comma, this.context.ref.typename)) .yields(martha_ast_1.AST.typedef_name); - this.typedef_index = rule(rule(this.context.ref.member, many(this.context.ws.space1ton, this.context.ref.member)).yields(named("name")), + this.typedef_type = rule(rule(this.context.ref.member).yields(named("name")), // TODO: generic - optional(rule(this.context.op.langle, + optional(rule(inf(this.context.op.langle), // TODO: upgrade to bracket/block - rule(all(() => this.context.def.typedef_index)).yields(named("types")), many(this.context.op.infix_comma, rule(all(() => this.context.def.typedef_index)).yields(named("types"))), this.context.op.rangle)), + rule(all(() => this.context.def.typedef_type)), many(this.context.op.infix_comma, rule(all(() => this.context.def.typedef_type))), inf(this.context.op.rangle)).yields(named("types"))), // indexer - optional(rule(this.context.op.lsquare, optional(all(() => this.context.def.typedef_index)), this.context.op.rsquare).yields(named("indexer")))) - .yields(martha_ast_1.AST.typedef_index); - this.typedef_type = rule(this.typedef_index) + optional(rule(inf(this.context.op.lsquare), optional(() => this.context.def.typedef_type), inf(this.context.op.rsquare)).yields(named("indexer"))), + // func type + optional(rule(inf(this.context.op.lparen), optional(() => this.context.def.typedef_type), many(this.context.op.infix_comma, rule(all(() => this.context.def.typedef_type))), inf(this.context.op.rparen)).yields(named("callsignature"))), + // return type + optional(this.context.op.infix_fatarrow, rule(all(() => this.context.def.typedef_type)))) .yields(martha_ast_1.AST.typedef_type); - this.typedef_member = rule(this.typedef_index, this.context.op.infix_colon, this.membernames, optional(either(all(this.context.ws.lr0ton(this.context.op.fatarrow), this.context.stmt.statement), all(this.context.ws.lr0ton(this.context.op.assign), this.context.stmt.statement), all(this.context.ws.space1ton, this.context.util.block(this.context.kwrd.with, either(this.context.util.block("get", this.context.stmt.statement).yields(named("getter")), this.context.util.block("set", this.context.stmt.statement).yields(named("setter")))))))) + /* + typedef_method = rule( + this.membermodifiers, + this.membernames + )*/ + this.typedef_member_dec = rule(this.modifiers_N, rule(this.membernames).yields(named("membernames")), + /* + () + x y z + (x, y) + (x, y) z + x:int y:int + (x:int, y:int) + */ + // + rule(many(either(rule(this.context.op.lparen, optional(this.context.ws.space0ton, rule(this.modifiers_N, this.context.ref.varname, optional(this.context.op.infix_colon, this.typedef_type, optional(this.argumentspec))).yields(martha_ast_1.AST.argumentdef), many(this.context.op.infix_comma, rule(this.modifiers_N, this.context.ref.varname, optional(this.context.op.infix_colon, this.typedef_type, optional(this.argumentspec))).yields(martha_ast_1.AST.argumentdef))), this.context.op.rparen).yields(martha_ast_1.AST.tupleargumentdef), rule(many(rule(this.context.ws.space0ton, this.modifiers_N, this.context.ref.varname, optional(this.context.op.infix_colon, this.typedef_type, optional(this.argumentspec))).yields(martha_ast_1.AST.argumentdef)))))).yields(named("vars")), + // optional type hint + optional(this.context.op.infix_colon, rule(this.typedef_type, optional(this.argumentspec)).yields(named("typehint"))), + // transitioner + optional(this.context.op.infix_arrow, rule(this.context.ref.member).yields(named("transition"))), optional( + // getter settter blocks + all(this.context.ws.space1ton, this.context.kwrd.with, either(this.context.util.block("get", this.context.stmt.statement).yields(named("getter")), this.context.util.block("set", this.context.stmt.statement).yields(named("setter")))))) + .yields(martha_ast_1.AST.typedef_member_dec); + this.typedef_member = rule( + /* + foo: int + static foo: int + static foo = 1 + () = void + multiply x y = x * y + multiply(x, y) = x * y // tuple + */ + this.context.util.block(this.typedef_member_dec, rule(() => this.context.statements).yields(named("body")))) .yields(martha_ast_1.AST.typedef_member); this.typedef_basetype = rule(() => this.context.def.typedef_type) .yields(named("basetype")); - this.typedef = rule(this.context.util.block(rule(this.context.kwrd.type, this.context.ws.space1ton, this.typedef_name, optional(this.context.ws.space1ton, this.context.kwrd.is, this.context.ws.space1ton, this.typedef_basetype)), rule(many(either(this.methoddef, this.typedef_member))))) + this.typedef_stateblock = rule(this.context.util.block(rule(this.context.kwrd.state, this.context.ws.space1ton, rule(this.context.ref.member).yields(named("state"))), rule(many(either(() => this.typedef_stateblock, this.typedef_member, this.typedef_member_dec))).yields(named("body"))).yields(martha_ast_1.AST.stateblock)) + .yields(named("stateblocks")); + this.typedef = rule(this.context.util.block(rule(either(this.context.kwrd.type, this.context.kwrd.machine), this.context.ws.space1ton, this.typedef_name, optional(this.context.ws.space1ton, this.context.kwrd.is, this.context.ws.space1ton, this.typedef_basetype)), rule(many(either(this.typedef_stateblock, this.typedef_member, this.typedef_member_dec))))) .yields(martha_ast_1.AST.typedef); this.typedefs = rule(many(this.typedef, optional(this.context.ws.ANY_WS))) .yields(martha_ast_1.AST.flatcst); @@ -613,20 +674,42 @@ class ParserContext { target.add(ref.rule); } } + getSourceCode(astNode) { + if (astNode.__TYPE__) { + const typename = astNode.__proto__.constructor.name; + if (typename == "Statement") { + const ops = astNode.statement; + return ops.map(op => this.getSourceCode(op)).join("\r\n"); + } + console.log(typename); + if (typename == "Apply") { + const lhs = this.getSourceCode(astNode.to); + const rhs = this.getSourceCode(astNode.apply); + return `${lhs} ${rhs}`; + } + if (typename == "String") { + return "string"; + } + if (typename == "Reference") { + return astNode.name.value; + } + } + return astNode.__proto__.constructor.name; + } addMacro(macro) { console.log("## VISIT MACRO"); - const identity = (x) => x.name; + const identity = (x) => x.rule.rule.map(rule => `${x.insert.value}#${this.getSourceCode(rule)}`); + console.log(identity(macro)); if (this.macroDefs.find(x => identity(x) === identity(macro))) { throw new Error(`Macro ${identity(macro)} is already registered.`); } + let parts = macro.rule.rule.map((rule) => { + return rule.statement.map(stmt => { + console.log(stmt); + return stmt; + }); + }); /* - let parts = macro.rule.map((t:string) => { - if (t.startsWith("$")) { - return this.getRuleRef(t) - } else { - return this.ws.lr0ton(token(t, t)) - } - }) console.log(parts) this.macroDefs.push(macro) this.addRule({ diff --git a/dist/martha.grammar.js.map b/dist/martha.grammar.js.map index c49701e..5289645 100644 --- a/dist/martha.grammar.js.map +++ b/dist/martha.grammar.js.map @@ -1 +1 @@ -{"version":3,"file":"martha.grammar.js","sourceRoot":"","sources":["../src/martha.grammar.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"martha.grammar.js","sourceRoot":"","sources":["../src/martha.grammar.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/martha.js b/dist/martha.js index 6aceee4..c152b25 100644 --- a/dist/martha.js +++ b/dist/martha.js @@ -7,7 +7,10 @@ class Martha { this.program = new martha_grammar_1.ParserContext(); } parse(source) { - return this.program.parse(source.source, source.identity); + let program = this.program.parse(source.source, source.identity); + let errors = []; + this.visit(program, errors); + return program; } load(source) { let programdef = source instanceof martha_program_1.ProgramDef ? source : this.parse(source); @@ -16,6 +19,7 @@ class Martha { } visit(programdef, errors) { // TODO visit imports + console.log(programdef.macros); this.visitMacros(programdef.macros, errors); // visittypes this.visitTypes(programdef.types, errors); @@ -27,6 +31,7 @@ class Martha { visitMacro(macro, errors) { try { this.program.addMacro(macro); + console.log(macro); } catch (e) { throw e; diff --git a/dist/martha.js.map b/dist/martha.js.map index 3fa1ece..518c006 100644 --- a/dist/martha.js.map +++ b/dist/martha.js.map @@ -1 +1 @@ -{"version":3,"file":"martha.js","sourceRoot":"","sources":["../src/martha.ts"],"names":[],"mappings":";;AAAA,qDAAiD;AACjD,qDAA8C;AAG9C;IAGI;QACI,IAAI,CAAC,OAAO,GAAG,IAAI,8BAAa,EAAE,CAAA;IACtC,CAAC;IACM,KAAK,CAAC,MAAuC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC7D,CAAC;IACM,IAAI,CAAC,MAAoD;QAC5D,IAAI,UAAU,GAAG,MAAM,YAAY,2BAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3E,IAAI,MAAM,GAAS,EAAE,CAAA;QACrB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAClC,CAAC;IACO,KAAK,CAAC,UAAqB,EAAE,MAAY;QAC7C,qBAAqB;QACrB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAE3C,aAAa;QACb,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEzC,uBAAuB;IAC3B,CAAC;IACO,WAAW,CAAC,MAAiB,EAAE,MAAY;QAC/C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IAC3D,CAAC;IACO,UAAU,CAAC,KAAc,EAAE,MAAY;QAC3C,IAAI;YACA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;SAC/B;QACD,OAAO,CAAC,EAAE;YACN,MAAM,CAAC,CAAA;SACV;IACL,CAAC;IACO,UAAU,CAAC,KAAe,EAAE,MAAY;QAC5C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IACvD,CAAC;IACO,SAAS,CAAC,IAAY,EAAE,MAAY;QACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;CACJ;AAxCD,wBAwCC"} \ No newline at end of file +{"version":3,"file":"martha.js","sourceRoot":"","sources":["../src/martha.ts"],"names":[],"mappings":";;AAAA,qDAAiD;AACjD,qDAA8C;AAG9C,MAAa,MAAM;IAGf;QACI,IAAI,CAAC,OAAO,GAAG,IAAI,8BAAa,EAAE,CAAA;IACtC,CAAC;IACM,KAAK,CAAC,MAAuC;QAChD,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChE,IAAI,MAAM,GAAS,EAAE,CAAA;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC3B,OAAO,OAAO,CAAA;IAClB,CAAC;IACM,IAAI,CAAC,MAAoD;QAC5D,IAAI,UAAU,GAAG,MAAM,YAAY,2BAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3E,IAAI,MAAM,GAAS,EAAE,CAAA;QACrB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAClC,CAAC;IACO,KAAK,CAAC,UAAqB,EAAE,MAAY;QAC7C,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAE3C,aAAa;QACb,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEzC,uBAAuB;IAC3B,CAAC;IACO,WAAW,CAAC,MAAiB,EAAE,MAAY;QAC/C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IAC3D,CAAC;IACO,UAAU,CAAC,KAAc,EAAE,MAAY;QAC3C,IAAI;YACA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;SACrB;QACD,OAAO,CAAC,EAAE;YACN,MAAM,CAAC,CAAA;SACV;IACL,CAAC;IACO,UAAU,CAAC,KAAe,EAAE,MAAY;QAC5C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IACvD,CAAC;IACO,SAAS,CAAC,IAAY,EAAE,MAAY;QACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;CACJ;AA7CD,wBA6CC"} \ No newline at end of file diff --git a/dist/martha.program.js.map b/dist/martha.program.js.map index 17727c2..e20db4b 100644 --- a/dist/martha.program.js.map +++ b/dist/martha.program.js.map @@ -1 +1 @@ -{"version":3,"file":"martha.program.js","sourceRoot":"","sources":["../src/martha.program.ts"],"names":[],"mappings":";;AAEA;CAKC;AALD,gCAKC"} \ No newline at end of file +{"version":3,"file":"martha.program.js","sourceRoot":"","sources":["../src/martha.program.ts"],"names":[],"mappings":";;AAEA,MAAa,UAAU;CAKtB;AALD,gCAKC"} \ No newline at end of file diff --git a/dist/test/genesis.spec.js b/dist/test/genesis.spec.js index 9cbb4e4..24710e6 100644 --- a/dist/test/genesis.spec.js +++ b/dist/test/genesis.spec.js @@ -19,10 +19,16 @@ function parse(file) { return parsed; } describe("genesis", () => { - let f = parse(__dirname + "../../genesis/Macros.ma"); - console.log(f.macros); - console.log(f.types[0].members); - console.log(f.types[0].basetype); + it("should be a program", () => { + try { + let f = parse(__dirname + "../../genani/genesis.1.ma"); + f; /* ?+ */ + } + catch (e) { + console.log(e); + } + }); + return; let iballot = parse(__dirname + "../../genesis/IBallot.ma"); let iparty = parse(__dirname + "../../genesis/IParty.ma"); let itoken = parse(__dirname + "../../genesis/IToken.ma"); diff --git a/dist/test/genesis.spec.js.map b/dist/test/genesis.spec.js.map index d87f4a3..275b8b7 100644 --- a/dist/test/genesis.spec.js.map +++ b/dist/test/genesis.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"genesis.spec.js","sourceRoot":"","sources":["../../src/test/genesis.spec.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA8B;AAC9B,iBAAe;AAEf,sCAAmC;AACnC,uCAAwB;AAIxB,IAAI,MAAM,GAAG,IAAI,eAAM,EAAE,CAAA;AAEzB,eAAe,IAAW;IACtB,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACvC,IAAI,MAAM,GAAI,MAAM,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,GAAG,EAAE,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAA;IACvD,EAAE,CAAC,aAAa,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACrB,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,CAAC,CAAA;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACrB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAEhC,IAAI,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,0BAA0B,CAAC,CAAA;IAC3D,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,CAAC,CAAA;IACzD,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,CAAC,CAAA;IACzD,IAAI,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,0BAA0B,CAAC,CAAA;IAC3D,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,GAAG,wBAAwB,CAAC,CAAA;IACvD,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,GAAG,wBAAwB,CAAC,CAAA;IAEvD,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC3B,aAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAC9B,+FAA+F;QAC/F,kEAAkE;QAClE,sBAAsB;QACtB,QAAQ;QACR,aAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAC7B,aAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAC7B,aAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAC9B,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAC5B,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAE5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEpB,iEAAiE;QACjE,yCAAyC;QACzC,+FAA+F;IACnG,CAAC,CAAC,CAAA;AAGN,CAAC,CAAC,CAAA"} \ No newline at end of file +{"version":3,"file":"genesis.spec.js","sourceRoot":"","sources":["../../src/test/genesis.spec.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA8B;AAC9B,iBAAe;AAEf,sCAAmC;AACnC,uCAAwB;AAIxB,IAAI,MAAM,GAAG,IAAI,eAAM,EAAE,CAAA;AAEzB,SAAS,KAAK,CAAC,IAAW;IACtB,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACvC,IAAI,MAAM,GAAI,MAAM,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,GAAG,EAAE,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAA;IACvD,EAAE,CAAC,aAAa,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC3B,IAAG;YACC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,GAAG,2BAA2B,CAAC,CAAA;YACtD,CAAC,CAAA,CAAC,QAAQ;SACb;QAAC,OAAM,CAAC,EAAE;YACP,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;SACjB;IACL,CAAC,CAAC,CAAA;IAGF,OAAO;IAEP,IAAI,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,0BAA0B,CAAC,CAAA;IAC3D,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,CAAC,CAAA;IACzD,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,CAAC,CAAA;IACzD,IAAI,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,0BAA0B,CAAC,CAAA;IAC3D,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,GAAG,wBAAwB,CAAC,CAAA;IACvD,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,GAAG,wBAAwB,CAAC,CAAA;IAEvD,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC3B,aAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAC9B,+FAA+F;QAC/F,kEAAkE;QAClE,sBAAsB;QACtB,QAAQ;QACR,aAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAC7B,aAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAC7B,aAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAC9B,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAC5B,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAE5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEpB,iEAAiE;QACjE,yCAAyC;QACzC,+FAA+F;IACnG,CAAC,CAAC,CAAA;AAGN,CAAC,CAAC,CAAA"} \ No newline at end of file diff --git a/dist/test/kallis.Result.ma.spec.js b/dist/test/kallis.Result.ma.spec.js index cba9432..cca2fa2 100644 --- a/dist/test/kallis.Result.ma.spec.js +++ b/dist/test/kallis.Result.ma.spec.js @@ -17,7 +17,6 @@ describe("kallis.Result", () => { let program = martha.parse({ source: masource, identity: "" }); it("should be a program", () => { console.log(program.types[0]); - console.dir(program.types[0].methods[2].body[0].statement[0]); chai_1.expect(program).to.not.be.null; fs.writeFileSync(__dirname + "../../kallis/_kallis.Result.im", JSON.stringify(program, null, 2)); }); diff --git a/dist/test/kallis.Result.ma.spec.js.map b/dist/test/kallis.Result.ma.spec.js.map index 0dec475..2a3523b 100644 --- a/dist/test/kallis.Result.ma.spec.js.map +++ b/dist/test/kallis.Result.ma.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"kallis.Result.ma.spec.js","sourceRoot":"","sources":["../../src/test/kallis.Result.ma.spec.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA8B;AAC9B,iBAAe;AAEf,sCAAmC;AACnC,uCAAwB;AAGxB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,+BAA+B,EAAE,MAAM,CAAC,CAAA;IACnF,IAAI,MAAM,GAAG,IAAI,eAAM,EAAE,CAAA;IACzB,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAC,EAAE,EAAC,CAAC,CAAA;IAE1D,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/D,aAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAE9B,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACpG,CAAC,CAAC,CAAA;AAGN,CAAC,CAAC,CAAA"} \ No newline at end of file +{"version":3,"file":"kallis.Result.ma.spec.js","sourceRoot":"","sources":["../../src/test/kallis.Result.ma.spec.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA8B;AAC9B,iBAAe;AAEf,sCAAmC;AACnC,uCAAwB;AAGxB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,+BAA+B,EAAE,MAAM,CAAC,CAAA;IACnF,IAAI,MAAM,GAAG,IAAI,eAAM,EAAE,CAAA;IACzB,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAC,EAAE,EAAC,CAAC,CAAA;IAE1D,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7B,aAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;QAE9B,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACpG,CAAC,CAAC,CAAA;AAGN,CAAC,CAAC,CAAA"} \ No newline at end of file diff --git a/dist/test/martha.ast.spec.js b/dist/test/martha.ast.spec.js index c1aff79..25a848c 100644 --- a/dist/test/martha.ast.spec.js +++ b/dist/test/martha.ast.spec.js @@ -14,24 +14,43 @@ const parserContext = new martha_grammar_1.ParserContext(); const Def = parserContext.def; const Stmt = parserContext.stmt; describe('syntax.m', () => { - it('accepts type:\n Binary\nwith:\n object: left\n object: right\n', () => { + it('accepts type:\n Binary\nwith:\n left: object\n right: object\n', () => { // input - let input = 'type Binary:\n object: left\n object: right\n'; + let input = 'type Binary:\n left: object\n right: object\n'; let proc = false; // output let output = (r, c) => { chai_1.expect(flat(c)).to.deep.eq([martha_emit_1.Emit.Emit(martha_emit_1.TypeDef, { name: martha_emit_1.Emit.Emit(martha_emit_1.Token, { value: "Binary", index: 5 }), + basetype: undefined, members: [ martha_emit_1.Emit.Emit(martha_emit_1.MemberDef, { type: martha_emit_1.Emit.Emit(martha_emit_1.TypeRef, { nameref: [ martha_emit_1.Emit.Emit(martha_emit_1.Reference, { - name: martha_emit_1.Emit.Emit(martha_emit_1.Token, { value: "object", index: 0 }) + name: martha_emit_1.Emit.Emit(martha_emit_1.Token, { value: "object", index: 17 }) }) ], + typeargs: [], + indexargs: [] }), - name: { value: "left", index: 0 } + name: { value: "left", index: 25 }, + getter: [], + setter: [] + }), + martha_emit_1.Emit.Emit(martha_emit_1.MemberDef, { + type: martha_emit_1.Emit.Emit(martha_emit_1.TypeRef, { + nameref: [ + martha_emit_1.Emit.Emit(martha_emit_1.Reference, { + name: martha_emit_1.Emit.Emit(martha_emit_1.Token, { value: "object", index: 34 }) + }) + ], + typeargs: [], + indexargs: [] + }), + name: { value: "right", index: 42 }, + getter: [], + setter: [] }) ] })]); diff --git a/dist/test/martha.ast.spec.js.map b/dist/test/martha.ast.spec.js.map index d780c09..d125ec3 100644 --- a/dist/test/martha.ast.spec.js.map +++ b/dist/test/martha.ast.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"martha.ast.spec.js","sourceRoot":"","sources":["../../src/test/martha.ast.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,iBAAe;AAEf,+BAAkD;AAClD,gDAAkN;AAClN,sDAAkD;AAClD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,WAAI,CAAC;AAE1D,MAAM,IAAI,GAAG,CAAC,GAAS,EAAS,EAAE;IAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,IAAI,8BAAa,EAAE,CAAA;AACzC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAA;AAC7B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAA;AAE/B,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAC/E,QAAQ;QACR,IAAI,KAAK,GAAG,qDAAqD,CAAA;QACjE,IAAI,IAAI,GAAG,KAAK,CAAA;QAChB,SAAS;QACT,IAAI,MAAM,GAAG,CAAC,CAAc,EAAE,CAAK,EAAE,EAAE;YACnC,aAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CACtB,CAAE,kBAAI,CAAC,IAAI,CAAC,qBAAO,EAAE;oBACjB,IAAI,EAAE,kBAAI,CAAC,IAAI,CAAC,mBAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;oBACrD,OAAO,EAAE;wBACL,kBAAI,CAAC,IAAI,CAAC,uBAAS,EAAE;4BACjB,IAAI,EAAE,kBAAI,CAAC,IAAI,CAAC,qBAAO,EAAE;gCACrB,OAAO,EAAE;oCACL,kBAAI,CAAC,IAAI,CAAC,uBAAS,EAAE;wCACjB,IAAI,EACJ,kBAAI,CAAC,IAAI,CAAC,mBAAK,EAAE,EAAC,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAC;qCAC9C,CAAC;iCACL;6BACJ,CAAC;4BACF,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;yBACpC,CAAC;qBACL;iBACJ,CAAC,CAAE,CAAE,CAAA;YACV,IAAI,GAAG,IAAI,CAAA;QACf,CAAC,CAAA;QACD,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAC9C,aAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"} \ No newline at end of file +{"version":3,"file":"martha.ast.spec.js","sourceRoot":"","sources":["../../src/test/martha.ast.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/test/martha.grammar.spec.js b/dist/test/martha.grammar.spec.js index dfc6db8..822893f 100644 --- a/dist/test/martha.grammar.spec.js +++ b/dist/test/martha.grammar.spec.js @@ -26,19 +26,23 @@ describe("types", () => { it("should parse a base type name", () => { chai_1.expect(tibu_1.Tibu.parse(`Bar`)(Def.typedef_basetype)[0].cst).to.deep.eq([[{ __TYPE__: 'TypeRef', + callreturn: undefined, nameref: [{ __TYPE__: 'Reference', name: { value: 'Bar', index: 0 } }], + types: [], indexer: [] }]]); }); it("should parse a type member", () => { - chai_1.expect(tibu_1.Tibu.parse(`Type: Member`)(Def.typedef_member)).to.deep.eq([[{ + chai_1.expect(tibu_1.Tibu.parse(`Member: Type`)(Def.typedef_member_dec)).to.deep.eq([[{ __TYPE__: 'MemberDef', type: { __TYPE__: 'TypeRef', - nameref: [{ __TYPE__: 'Reference', name: { value: 'Type', index: 0 } }], + callreturn: undefined, + nameref: [{ __TYPE__: 'Reference', name: { value: 'Type', index: 8 } }], + types: [], indexer: [] }, - name: { value: 'Member', index: 6 }, + name: { value: 'Member', index: 0 }, getter: [], setter: [] }]]); @@ -51,10 +55,11 @@ describe("types", () => { nameref: [ martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "Bar", index: 12 } }) ], - indexer: [] + typeargs: [], + indexargs: [] }), members: [], - methods: [] + states: undefined }) ]]); }); @@ -64,43 +69,189 @@ describe("types", () => { name: { value: "Foo", index: 5 }, basetype: undefined, members: [], - methods: [] + states: undefined }) ]]); }); it("should parse a basic type with a member variable", () => { - chai_1.expect(tibu_1.Tibu.parse(`type Foo is Bar:\n Party: this`)(Def.typedef)) + chai_1.expect(tibu_1.Tibu.parse(`type Foo is Bar:\n this: Party`)(Def.typedef)) .to.deep.eq([[ martha_emit_1.Emit.Emit(martha_emit_1.TypeDef, { name: { value: "Foo", index: 5 }, basetype: martha_emit_1.Emit.Emit(martha_emit_1.TypeRef, { nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "Bar", index: 12 } })], - indexer: [] + typeargs: [], + indexargs: [] }), members: [ martha_emit_1.Emit.Emit(martha_emit_1.MemberDef, { type: martha_emit_1.Emit.Emit(martha_emit_1.TypeRef, { - nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "Party", index: 21 } })], - indexer: [] + nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "Party", index: 27 } })], + typeargs: [], + indexargs: [] }), - name: { value: "this", index: 28 }, + name: { value: "this", index: 21 }, getter: [], setter: [] }) ], - methods: [] + states: undefined }) ]]); }); it("should parse a 1+n type with member variables", () => { - chai_1.expect(tibu_1.Tibu.parse(`type Foo, Bar is Base:\n Addr: addr0, addr1`)(Def.typedefs)).to.deep.eq([[ + chai_1.expect(tibu_1.Tibu.parse(`type Foo, Bar is Base:\n addr0, addr1: Addr`)(Def.typedefs)).to.deep.eq([ + [ { - name: "Foo", basetype: "Base", methods: [], members: [{ type: "Addr", name: "addr0" }, { type: "Addr", name: "addr1" }] + __TYPE__: 'TypeDef', + name: { + value: 'Foo', + index: 5 + }, + basetype: { + __TYPE__: 'TypeRef', + callreturn: undefined, + nameref: [ + { + __TYPE__: 'Reference', + name: { + value: 'Base', + index: 17 + } + } + ], + types: [], + indexer: [] + }, + members: [ + { + __TYPE__: 'MemberDef', + type: { + __TYPE__: 'TypeRef', + callreturn: undefined, + nameref: [ + { + __TYPE__: 'Reference', + name: { + value: 'Addr', + index: 41 + } + } + ], + types: [], + indexer: [] + }, + name: { + value: 'addr0', + index: 27 + }, + getter: [], + setter: [] + }, + { + __TYPE__: 'MemberDef', + type: { + __TYPE__: 'TypeRef', + callreturn: undefined, + nameref: [ + { + __TYPE__: 'Reference', + name: { + value: 'Addr', + index: 41 + } + } + ], + types: [], + indexer: [] + }, + name: { + value: 'addr1', + index: 34 + }, + getter: [], + setter: [] + } + ], + methods: [], + states: undefined }, { - name: "Bar", basetype: "Base", methods: [], members: [{ type: "Addr", name: "addr0" }, { type: "Addr", name: "addr1" }] + __TYPE__: 'TypeDef', + name: { + value: 'Bar', + index: 10 + }, + basetype: { + __TYPE__: 'TypeRef', + callreturn: undefined, + nameref: [ + { + __TYPE__: 'Reference', + name: { + value: 'Base', + index: 17 + } + } + ], + types: [], + indexer: [] + }, + members: [ + { + __TYPE__: 'MemberDef', + type: { + __TYPE__: 'TypeRef', + callreturn: undefined, + nameref: [ + { + __TYPE__: 'Reference', + name: { + value: 'Addr', + index: 41 + } + } + ], + types: [], + indexer: [] + }, + name: { + value: 'addr0', + index: 27 + }, + getter: [], + setter: [] + }, + { + __TYPE__: 'MemberDef', + type: { + __TYPE__: 'TypeRef', + callreturn: undefined, + nameref: [ + { + __TYPE__: 'Reference', + name: { + value: 'Addr', + index: 41 + } + } + ], + types: [], + indexer: [] + }, + name: { + value: 'addr1', + index: 34 + }, + getter: [], + setter: [] + } + ], + methods: [], + states: undefined } - ]]); + ] + ]); }); }); }); @@ -118,13 +269,41 @@ describe("Def", () => { let input = "{.x}"; // output let output = (r, c) => { - console.log(c[0][0]); - chai_1.expect(flat(c)).to.deep.eq([ - { statement: [ - { name: "this.x" } + // TODO: why does this need JSON stringify?? + chai_1.expect(JSON.stringify(flat(c))).to.deep.eq(JSON.stringify([ + { + "named": "argspec", + "result": { + "tokens": [ + { + "name": "spec", + "result": { + "success": true, + "startloc": 1, + "endloc": 1, + "value": "", + "children": [], + yielded: undefined + } + } + ] + }, + "cst": [ + { + "__TYPE__": "Statement", + "statement": [ + { + "__TYPE__": "Reference", + "name": { + "value": "this.x", + "index": 1 + } + } + ] + } ] } - ]); + ])); }; parse(input)(rule(Def.argumentspec).yields(output)); }); @@ -133,10 +312,16 @@ describe("Def", () => { let input = "{.x.y}"; // output let output = (r, c) => { - chai_1.expect(flat(c)).to.deep.eq([ - martha_emit_1.Emit.Emit(martha_emit_1.Statement, { statement: [{ name: "this.x.y" }] - }) - ]); + chai_1.expect(JSON.stringify(flat(c))).to.deep.eq(JSON.stringify([{ named: 'argspec', + result: { tokens: [{ name: 'spec', + result: { success: true, + startloc: 1, + endloc: 1, + value: '', + children: [], + yielded: undefined } }] }, + cst: [{ __TYPE__: 'Statement', + statement: [{ __TYPE__: 'Reference', name: { value: 'this.x.y', index: 1 } }] }] }])); }; parse(input)(rule(Def.argumentspec).yields(output)); }); @@ -189,9 +374,16 @@ describe("Def", () => { let input = "{func}"; // output let output = (r, c) => { - chai_1.expect(flat(c)).to.deep.eq([ - martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "func", index: 1 } }) - ]); + chai_1.expect(flat(c)).to.deep.eq([{ named: 'argspec', + result: { tokens: [{ name: 'spec', + result: { success: true, + startloc: 1, + endloc: 1, + value: '', + children: [], + yielded: undefined } }] }, + cst: [{ __TYPE__: 'Statement', + statement: [{ __TYPE__: 'Reference', name: { value: 'func', index: 1 } }] }] }]); chai_1.expect(r.tokens.length).to.eq(0); }; parse(input)(rule(Def.argumentspec).yields(output)); @@ -200,16 +392,17 @@ describe("Def", () => { describe('argumentdef', () => { it('accepts Type:name', () => { // input - let input = "Type:name"; + let input = "name:Type"; // output let output = (r, c) => { - chai_1.expect(flat(c)).to.deep.eq([ - { - type: "Type", - name: "name", - spec: [], - } - ]); + chai_1.expect(flat(c)).to.deep.eq([{ __TYPE__: 'ArgumentDef', + name: { value: 'name', index: 0 }, + type: [{ __TYPE__: 'TypeRef', + callreturn: undefined, + nameref: [{ __TYPE__: 'Reference', name: { value: 'Type', index: 5 } }], + types: [], + indexer: [] }], + spec: [] }]); chai_1.expect(r.tokens.length === 2); }; parse(input)(rule(Def.argumentdef).yields(output)); @@ -218,22 +411,22 @@ describe("Def", () => { describe('argumentdef', () => { it('accepts Type:name{.x > 10}', () => { // input - let input = "Type:name{.x > 10}"; + let input = "name:Type{.x > 10}"; // output let output = (r, c) => { - chai_1.expect(flat(c)).to.deep.eq([ - { - __TYPE__: "ArgumentDef", - type: [martha_emit_1.Emit.Emit(martha_emit_1.TypeRef, {})], - name: { name: { value: "name", index: 5 } }, - spec: [ - martha_emit_1.Emit.Emit(martha_emit_1.Gt, { - left: martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "this.x", index: 10 } }), - right: martha_emit_1.Emit.Emit(martha_emit_1.Literal, { type: "integer", value: { value: "10", index: 15 } }) - }) - ] - } - ]); + chai_1.expect(flat(c)).to.deep.eq([{ __TYPE__: 'ArgumentDef', + name: { value: 'name', index: 0 }, + type: [{ __TYPE__: 'TypeRef', + callreturn: undefined, + nameref: [{ __TYPE__: 'Reference', name: { value: 'Type', index: 5 } }], + types: [], + indexer: [] }], + spec: [{ __TYPE__: 'Statement', + statement: [{ __TYPE__: 'Gt', + left: { __TYPE__: 'Reference', name: { value: 'this.x', index: 10 } }, + right: { __TYPE__: 'Literal', + type: 'integer', + value: { value: '10', index: 15 } } }] }] }]); chai_1.expect(r.tokens.length === 2); }; parse(input)(rule(Def.argumentdef).yields(output)); @@ -246,8 +439,10 @@ describe("Def", () => { let output = (r, c) => { chai_1.expect(flat(c)).to.deep.eq([{ __TYPE__: 'ReturnDef', type: { __TYPE__: 'TypeRef', + callreturn: undefined, nameref: [{ __TYPE__: 'Reference', name: { value: 'void', index: 0 } }], - indexer: [] }, + indexer: [], + types: [] }, spec: [] } ]); chai_1.expect(r.tokens.length).to.eq(0); @@ -256,48 +451,22 @@ describe("Def", () => { }); it('accepts int{> 10}', () => { // input - let input = 'void{> 10}'; + let input = 'int{> 10}'; let proc = false; // output let output = (r, c) => { - chai_1.expect(flat(c)).to.deep.eq([ - { - "__TYPE__": "ReturnDef", - "type": { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "void", - "index": 0 - } - } - ], - "indexer": [] - }, - "spec": [ - { - "__TYPE__": "Gt", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "this", - "index": 5 - } - }, - "right": { - "__TYPE__": "Literal", - "type": "integer", - "value": { - "value": "10", - "index": 7 - } - } - } - ] - } - ]); + chai_1.expect(flat(c)).to.deep.eq([{ __TYPE__: 'ReturnDef', + type: { __TYPE__: 'TypeRef', + callreturn: undefined, + nameref: [{ __TYPE__: 'Reference', name: { value: 'int', index: 0 } }], + types: [], + indexer: [] }, + spec: [{ __TYPE__: 'Statement', + statement: [{ __TYPE__: 'Gt', + left: { __TYPE__: 'Reference', name: { value: 'this', index: 4 } }, + right: { __TYPE__: 'Literal', + type: 'integer', + value: { value: '10', index: 6 } } }] }] }]); chai_1.expect(r.tokens.length).to.eq(0); proc = true; }; @@ -331,13 +500,13 @@ describe("Def", () => { describe('methoddef', () => { it('accepts constructor:', () => { // input - let input = 'constructor:'; + let input = 'new -> bar'; let proc = false; // output let output = (r, c) => { chai_1.expect(flat(c)).to.deep.eq([ martha_emit_1.Emit.Emit(martha_emit_1.MethodDef, { - name: { value: "constructor", index: 0 }, + name: { name: { value: "constructor", index: 0 } }, attributes: [], accessors: [], arguments: [], @@ -348,27 +517,28 @@ describe("Def", () => { chai_1.expect(r.tokens.length).to.eq(0); proc = true; }; - parse(input)(rule(Def.methoddef).yields(output)); + parse(input)(rule(Def.typedef_member_dec).yields(output)); chai_1.expect(proc).to.be.eq(true); }); - it('accepts constructor(int:x):', () => { + it('accepts constructor(x:int):', () => { // input let proc = false; - let input = 'constructor(int:x):'; + let input = 'constructor(x:int):'; // output let output = (r, c) => { chai_1.expect(flat(c)).to.deep.eq([ martha_emit_1.Emit.Emit(martha_emit_1.MethodDef, { - name: { value: "constructor", index: 0 }, + name: { name: { value: "constructor", index: 0 } }, attributes: [], accessors: [], arguments: [ martha_emit_1.Emit.Emit(martha_emit_1.ArgumentDef, { - name: { value: 'x', index: 16 }, + name: { value: 'x', index: 12 }, type: [ martha_emit_1.Emit.Emit(martha_emit_1.TypeRef, { - nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "int", index: 12 } })], - indexer: [] + nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "int", index: 14 } })], + typeargs: [], + indexargs: [] }) ], spec: [] @@ -381,48 +551,51 @@ describe("Def", () => { chai_1.expect(r.tokens.length).to.eq(0); proc = true; }; - parse(input)(rule(Def.methoddef).yields(output)); + parse(input)(rule(Def.typedef_member_dec).yields(output)); chai_1.expect(proc).to.be.eq(true); }); - it('accepts void func(Y:x, U:u, P:j{.len < u}):', () => { + it('accepts void func(x:Y, u:U, j:P{.len < i}):', () => { // input let proc = false; - let input = 'public void: foo(Y:x, U:u, P:j{.len < i}): pass'; + let input = 'public void foo(x:Y, u:U, j:P{.len < i}) = pass'; // output let output = (r, c) => { console.log(JSON.stringify(c, null, 2)); chai_1.expect(flat(c)).to.deep.eq([ martha_emit_1.Emit.Emit(martha_emit_1.MethodDef, { - name: { value: "foo", index: 13 }, + name: { name: { value: "foo", index: 12 } }, attributes: [], accessors: [{ value: "public", index: 0 }], arguments: [ martha_emit_1.Emit.Emit(martha_emit_1.ArgumentDef, { - name: { value: 'x', index: 19 }, + name: { value: 'x', index: 16 }, type: [ martha_emit_1.Emit.Emit(martha_emit_1.TypeRef, { - nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "Y", index: 17 } })], - indexer: [] + nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "Y", index: 18 } })], + typeargs: [], + indexargs: [] }) ], spec: [] }), martha_emit_1.Emit.Emit(martha_emit_1.ArgumentDef, { - name: { value: 'u', index: 24 }, + name: { value: 'u', index: 21 }, type: [ martha_emit_1.Emit.Emit(martha_emit_1.TypeRef, { - nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "U", index: 22 } })], - indexer: [] + nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "U", index: 23 } })], + typeargs: [], + indexargs: [] }) ], spec: [] }), martha_emit_1.Emit.Emit(martha_emit_1.ArgumentDef, { - name: { value: 'j', index: 29 }, + name: { value: 'j', index: 26 }, type: [ martha_emit_1.Emit.Emit(martha_emit_1.TypeRef, { - nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "P", index: 27 } })], - indexer: [] + nameref: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "P", index: 28 } })], + typeargs: [], + indexargs: [] }) ], spec: [ @@ -440,7 +613,7 @@ describe("Def", () => { body: [ martha_emit_1.Emit.Emit(martha_emit_1.Statement, { statement: [martha_emit_1.Emit.Emit(martha_emit_1.Reference, { - name: { value: "pass", index: 43 } + name: { value: "pass", index: 42 } })] }) ], @@ -449,7 +622,8 @@ describe("Def", () => { nameref: [ martha_emit_1.Emit.Emit(martha_emit_1.Reference, { name: { value: "void", index: 7 } }) ], - indexer: [] + typeargs: [], + indexargs: [] }), spec: [] }) @@ -458,7 +632,7 @@ describe("Def", () => { chai_1.expect(r.tokens.length).to.eq(0); proc = true; }; - parse(input)(rule(Def.methoddef).yields(output)); + parse(input)(rule(Def.typedef_member).yields(output)); chai_1.expect(proc).to.eq(true); }); it('accepts int{> 0} func(int:x{> 0}, int:y{> x}):\n return x + y + 1', () => { @@ -471,26 +645,93 @@ describe("Def", () => { chai_1.expect(r.tokens.length).to.eq(0); proc = true; }; - parse(input)(rule(Def.methoddef).yields(output)); + parse(input)(rule(Def.typedef_member_dec).yields(output)); chai_1.expect(proc).to.be.eq(true); }); }); describe("macrodef", () => { it('accepts macro: return when: return $subatom use: Emit.Return($subatom)', () => { // input - let input = 'macro return:\nwhen: return $subatom\nuse: Emit.Return($subatom)'; + let input = ` +macro return for statement: + as return $subatom: + Emit.Return($subatom) +`.trim(); let proc = false; // output let output = (r, c) => { - chai_1.expect(flat(c)).to.deep.eq([{ - name: "return", - when: [{ statement: [ - { apply: { name: "$subatom" }, to: { name: "return" } } - ] }], - use: [{ statement: [ - { apply: { parenthesis: [{ name: "$subatom" }] }, to: { name: "Emit.Return" } } - ] }] - }]); + chai_1.expect(flat(c)).to.deep.eq([ + { + "__TYPE__": "MacroDef", + "name": { + "value": "return", + "index": 6 + }, + insert: { + __TYPE__: 'Reference', + name: { + value: 'statement', + index: 17 + } + }, + "rule": { + "__TYPE__": "MacroRuleDef", + "rule": [ + { + "__TYPE__": "Statement", + "statement": [ + { + "__TYPE__": "Apply", + "apply": { + "__TYPE__": "Reference", + "name": { + "value": "$subatom", + "index": 42 + } + }, + "to": { + "__TYPE__": "Reference", + "name": { + "value": "return", + "index": 35 + } + } + } + ] + } + ], + "body": [ + { + "__TYPE__": "Statement", + "statement": [ + { + "__TYPE__": "Apply", + "apply": { + "__TYPE__": "BracketParen", + "statements": [ + { + "__TYPE__": "Reference", + "name": { + "value": "$subatom", + "index": 72 + } + } + ] + }, + "to": { + "__TYPE__": "Reference", + "name": { + "value": "Emit.Return", + "index": 60 + } + } + } + ] + } + ] + } + } + ]); proc = true; }; parse(input)(rule(Def.macrodef).yields(output)); @@ -498,17 +739,17 @@ describe("Def", () => { }); it('accepts macro: foringenerator', () => { // input - let input = `macro: foringenerator -as $atom ($statement for $atom.reference in $atom.range): - $statement.bind $atom.reference $atom.range.current - emit(Generator, { - next = $atom.range.next, - current = $statement - }) + let input = ` +macro foringenerator for $statement: +as $statement for $atom.reference in $atom.range: + emit <[ + () => for $atom.reference in $atom.range: yield $statement + ]> `; let proc = false; // output let output = (r, c) => { + c[0].rule; /*?*/ chai_1.expect(flat(c)).to.deep.eq([{}]); proc = true; }; @@ -629,14 +870,10 @@ else: let proc = false; // output let output = (r, c) => { - chai_1.expect(flat(c)).to.deep.eq([ - { __TYPE__: "Statement", statement: [ - { - apply: { __TYPE__: "Reference", name: { value: 'a', index: 7 } }, - to: { __TYPE__: "Reference", name: { value: 'return', index: 0 } } - } - ] } - ]); + chai_1.expect(flat(c)).to.deep.eq([{ __TYPE__: 'Statement', + statement: [{ __TYPE__: 'Apply', + apply: { __TYPE__: 'Reference', name: { value: 'a', index: 7 } }, + to: { __TYPE__: 'Reference', name: { value: 'return', index: 0 } } }] }]); proc = true; }; parse(input)(rule(Stmt.statement).yields(output)); diff --git a/dist/test/martha.grammar.spec.js.map b/dist/test/martha.grammar.spec.js.map index b9b86ca..0b991b0 100644 --- a/dist/test/martha.grammar.spec.js.map +++ b/dist/test/martha.grammar.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"martha.grammar.spec.js","sourceRoot":"","sources":["../../src/test/martha.grammar.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"martha.grammar.spec.js","sourceRoot":"","sources":["../../src/test/martha.grammar.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/test/martha.spec.js b/dist/test/martha.spec.js index 7641d50..b1db289 100644 --- a/dist/test/martha.spec.js +++ b/dist/test/martha.spec.js @@ -18,7 +18,7 @@ as $atom (for $atom.reference in $atom.range): `, identity: "" }); - console.log(program0.macros[0].rules); + console.log(program0.macros); martha.load(program0); let program1 = martha.parse({ source: ` type: diff --git a/dist/test/martha.spec.js.map b/dist/test/martha.spec.js.map index 356d989..b4926e2 100644 --- a/dist/test/martha.spec.js.map +++ b/dist/test/martha.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"martha.spec.js","sourceRoot":"","sources":["../../src/test/martha.spec.ts"],"names":[],"mappings":";;AACA,iBAAe;AAEf,sCAAmC;AAEnC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,IAAI,MAAM,GAAG,IAAI,eAAM,EAAE,CAAA;QACzB,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAClC,EAAC,MAAM,EACP;;;;;;;;;;CAUC;YACW,QAAQ,EAAC,EAAE;SACd,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrB,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CACvB,EAAC,MAAM,EACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BC;YACY,QAAQ,EAAC,EAAE,EAAC,CAAC,CAAA;QAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"martha.spec.js","sourceRoot":"","sources":["../../src/test/martha.spec.ts"],"names":[],"mappings":";;AACA,iBAAe;AAEf,sCAAmC;AAEnC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,IAAI,MAAM,GAAG,IAAI,eAAM,EAAE,CAAA;QACzB,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAClC,EAAC,MAAM,EACP;;;;;;;;;;CAUC;YACW,QAAQ,EAAC,EAAE;SACd,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC5B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrB,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CACvB,EAAC,MAAM,EACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BC;YACY,QAAQ,EAAC,EAAE,EAAC,CAAC,CAAA;QAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/src/genani/genesis.1.ma b/src/genani/genesis.1.ma index 04dca11..28a9b1a 100644 --- a/src/genani/genesis.1.ma +++ b/src/genani/genesis.1.ma @@ -1,13 +1,24 @@ import OrganisationRegister from organisation -machine Genesis: +type WitnessedAttribute is VisitAttribute = + foooddddd: b +machine Genesis = static root: Organisation - static unlockScript: witnessed ScriptHash => boolean - constructor() -> unlocked: - root = new Organisation - state unlocked: - void addAdministrator(admin:Member): - pass - constructor(): - pass - + static unlockScript: boolean(ScriptHash) + new -> unlocked = + Genesis.root = new Organisation + state unlocked = + addAdministrator admin:Member = + admin.attributes.add(new OrganisationRegister.attributeRegister["is-director"]{ + value = true + }) + Genesis.root.members.add admin + lock unlock_script -> locked = + Genesis.unlockScript = unlock_script + OrganisationRegister.add Genesis.root + OrganisationRegister.setRoot Genesis.root + state locked = + upgradeUnlockScript new_unlock_script = + Genesis.unlockScript = new_unlock_script + addAdministrator admin:Member = + pass \ No newline at end of file diff --git a/src/genani/genesis.1.ma.json b/src/genani/genesis.1.ma.json new file mode 100644 index 0000000..b6723db --- /dev/null +++ b/src/genani/genesis.1.ma.json @@ -0,0 +1,104 @@ +{ + "identity": "f:\\BACKUP\\Users\\ben\\Source\\Repos\\martha\\src\\test../../genani/genesis.1.ma", + "imports": [ + { + "__TYPE__": "ImportDef", + "name": { + "__TYPE__": "Reference", + "name": { + "value": "OrganisationRegister", + "index": 7 + } + }, + "library": { + "__TYPE__": "Reference", + "name": { + "value": "organisation", + "index": 33 + } + } + } + ], + "macros": [], + "types": [ + { + "__TYPE__": "TypeDef", + "name": { + "value": "Genesis", + "index": 57 + }, + "members": [ + { + "__TYPE__": "MemberDef", + "modifiers": [ + { + "name": "static", + "result": { + "success": true, + "startloc": 72, + "endloc": 78, + "value": "static", + "children": [] + } + } + ], + "name": { + "__TYPE__": "Reference", + "name": { + "value": "root", + "index": 79 + } + } + }, + { + "__TYPE__": "MemberDef", + "modifiers": [ + { + "name": "static", + "result": { + "success": true, + "startloc": 103, + "endloc": 109, + "value": "static", + "children": [] + } + } + ], + "name": { + "__TYPE__": "Reference", + "name": { + "value": "unlockScript", + "index": 110 + } + } + } + ], + "states": [ + { + "__TYPE__": "StateBlockDef", + "state": { + "__TYPE__": "Reference", + "name": { + "value": "unlocked", + "index": 222 + } + }, + "members": [ + { + "__TYPE__": "MemberDef", + "modifiers": [], + "name": { + "__TYPE__": "Reference", + "name": { + "value": "foo", + "index": 242 + } + } + } + ], + "substates": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/genani/organisation.ma b/src/genani/organisation.ma index 59c40cd..2a75593 100644 --- a/src/genani/organisation.ma +++ b/src/genani/organisation.ma @@ -1,31 +1,29 @@ -type Attribute: - abstract object: value - abstract object: name +type Attribute = + abstract value + abstract name type Member is ScriptHash | Address: Attribute[]: attributes -type Organisation is Member: - Member[]: members +type Organisation is Member = + members: Member[] -type AttributeRegister is Attribute[string]: - override add(): - pass +type AttributeRegister is Attribute[string] -type IsDirector is Attribute: - object: name = "is-director" +type IsDirector is Attribute = + name = "is-director" -type IsExternal is Attribute: - object: name = "is-external" +type IsExternal is Attribute = + name = "is-external" -static OrganisationRegister is Organisation[string]: - Organisation: root - AttributeRegister: attributeRegister = new AttributeRegister() - add(Organisation: org): +static OrganisationRegister is Organisation[string] = + root: Organisation + attributeRegister = new AttributeRegister() + add org = pass - setRoot(Organisation: org{in this}): + setRoot org: Organisation{in this} = this.root = org - constructor(): + new = this.attributeRegister.add("is-director", IsDirector) this.attributeRegister.add("is-external", IsExternal) diff --git a/src/kallis/_kallis.Result.im b/src/kallis/_kallis.Result.im index 6665024..cb88229 100644 --- a/src/kallis/_kallis.Result.im +++ b/src/kallis/_kallis.Result.im @@ -4,848 +4,14 @@ { "__TYPE__": "ImportDef", "name": { - "value": "kallis", - "index": 7 + "__TYPE__": "Reference", + "name": { + "value": "kallis", + "index": 7 + } } } ], "macros": [], - "types": [ - { - "__TYPE__": "TypeDef", - "name": { - "value": "Result", - "index": 22 - }, - "members": [ - { - "__TYPE__": "MemberDef", - "type": { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "bool", - "index": 35 - } - } - ], - "types": [], - "indexer": [] - }, - "name": { - "value": "success", - "index": 41 - }, - "getter": [], - "setter": [] - }, - { - "__TYPE__": "MemberDef", - "type": { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "int", - "index": 62 - } - } - ], - "types": [], - "indexer": [] - }, - "name": { - "value": "startloc", - "index": 67 - }, - "getter": [], - "setter": [] - }, - { - "__TYPE__": "MemberDef", - "type": { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "int", - "index": 85 - } - } - ], - "types": [], - "indexer": [] - }, - "name": { - "value": "endloc", - "index": 90 - }, - "getter": [], - "setter": [] - }, - { - "__TYPE__": "MemberDef", - "type": { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "string", - "index": 106 - } - } - ], - "types": [], - "indexer": [] - }, - "name": { - "value": "value", - "index": 114 - }, - "getter": [], - "setter": [] - }, - { - "__TYPE__": "MemberDef", - "type": { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "Result", - "index": 130 - } - } - ], - "types": [], - "indexer": [ - { - "__TYPE__": "TypeRef", - "nameref": [], - "types": [], - "indexer": [] - } - ] - }, - "name": { - "value": "children", - "index": 140 - }, - "getter": [], - "setter": [] - }, - { - "__TYPE__": "MemberDef", - "type": { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "object", - "index": 159 - } - } - ], - "types": [], - "indexer": [] - }, - "name": { - "value": "yielded", - "index": 167 - }, - "getter": [], - "setter": [] - } - ], - "methods": [ - { - "__TYPE__": "MethodDef", - "name": { - "value": "fault", - "index": 195 - }, - "attributes": [], - "accessors": [ - { - "value": "static", - "index": 180 - } - ], - "arguments": [ - { - "__TYPE__": "ArgumentDef", - "name": { - "value": "input", - "index": 207 - }, - "type": [ - { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "Input", - "index": 201 - } - } - ], - "types": [], - "indexer": [] - } - ], - "spec": [] - } - ], - "body": [ - { - "__TYPE__": "Statement", - "statement": [ - { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "BracketCurly", - "statements": [ - { - "__TYPE__": "Assignment", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "startloc", - "index": 257 - } - }, - "right": { - "__TYPE__": "Reference", - "name": { - "value": "input.location", - "index": 268 - } - } - }, - { - "__TYPE__": "Assignment", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "endloc", - "index": 296 - } - }, - "right": { - "__TYPE__": "Reference", - "name": { - "value": "input.location", - "index": 305 - } - } - } - ] - }, - "to": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "Reference", - "name": { - "value": "Result", - "index": 235 - } - }, - "to": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "Reference", - "name": { - "value": "new", - "index": 231 - } - }, - "to": { - "__TYPE__": "Reference", - "name": { - "value": "return", - "index": 224 - } - } - } - } - } - ] - } - ], - "return": { - "__TYPE__": "ReturnDef", - "type": { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "Result", - "index": 187 - } - } - ], - "types": [], - "indexer": [] - }, - "spec": [] - } - }, - { - "__TYPE__": "MethodDef", - "name": { - "value": "pass", - "index": 351 - }, - "attributes": [], - "accessors": [ - { - "value": "static", - "index": 336 - } - ], - "arguments": [ - { - "__TYPE__": "ArgumentDef", - "name": { - "value": "input", - "index": 362 - }, - "type": [ - { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "Input", - "index": 356 - } - } - ], - "types": [], - "indexer": [] - } - ], - "spec": [] - } - ], - "body": [ - { - "__TYPE__": "Statement", - "statement": [ - { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "BracketCurly", - "statements": [ - { - "__TYPE__": "Assignment", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "success", - "index": 407 - } - }, - "right": { - "__TYPE__": "Literal", - "type": "bool", - "value": { - "value": "true", - "index": 417 - } - } - } - ] - }, - "to": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "Reference", - "name": { - "value": "fault", - "index": 386 - } - }, - "to": { - "__TYPE__": "Reference", - "name": { - "value": "return", - "index": 379 - } - } - } - } - ] - } - ], - "return": { - "__TYPE__": "ReturnDef", - "type": { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "Result", - "index": 343 - } - } - ], - "types": [], - "indexer": [] - }, - "spec": [] - } - }, - { - "__TYPE__": "MethodDef", - "name": { - "value": "composite", - "index": 453 - }, - "attributes": [], - "accessors": [ - { - "value": "static", - "index": 438 - } - ], - "arguments": [ - { - "__TYPE__": "ArgumentDef", - "name": { - "value": "results", - "index": 475 - }, - "type": [ - { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "Result", - "index": 466 - } - } - ], - "types": [], - "indexer": [ - { - "__TYPE__": "TypeRef", - "nameref": [], - "types": [], - "indexer": [] - } - ] - } - ], - "spec": [] - } - ], - "body": [ - { - "__TYPE__": "Statement", - "statement": [ - { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "BracketCurly", - "statements": [ - { - "__TYPE__": "Assignment", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "success", - "index": 527 - } - }, - "right": { - "__TYPE__": "Dot", - "left": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "BracketParen", - "statements": [ - { - "__TYPE__": "Lambda", - "name": "r", - "accessors": [], - "arguments": [], - "body": [ - { - "__TYPE__": "Reference", - "name": { - "value": "r.success", - "index": 554 - } - } - ], - "return": { - "__TYPE__": "ReturnDef", - "type": { - "__TYPE__": "TypeRef" - }, - "spec": [] - } - } - ] - }, - "to": { - "__TYPE__": "Reference", - "name": { - "value": "results.map", - "index": 537 - } - } - }, - "right": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "BracketParen", - "statements": [ - { - "__TYPE__": "Lambda", - "name": "p", - "accessors": [], - "arguments": [], - "body": [ - { - "__TYPE__": "AmpAmp", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "p", - "index": 582 - } - }, - "right": { - "__TYPE__": "Reference", - "name": { - "value": "c", - "index": 587 - } - } - } - ], - "return": { - "__TYPE__": "ReturnDef", - "type": { - "__TYPE__": "TypeRef" - }, - "spec": [] - } - } - ] - }, - "to": { - "__TYPE__": "Reference", - "name": { - "value": "reduce", - "index": 565 - } - } - } - } - }, - { - "__TYPE__": "Assignment", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "children", - "index": 603 - } - }, - "right": { - "__TYPE__": "Reference", - "name": { - "value": "results", - "index": 614 - } - } - }, - { - "__TYPE__": "Assignment", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "startloc", - "index": 635 - } - }, - "right": { - "__TYPE__": "Dot", - "left": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "BracketArray", - "statements": [ - { - "__TYPE__": "Literal", - "type": "integer", - "value": { - "value": "0", - "index": 654 - } - } - ] - }, - "to": { - "__TYPE__": "Reference", - "name": { - "value": "results", - "index": 646 - } - } - }, - "right": { - "__TYPE__": "Reference", - "name": { - "value": "startloc", - "index": 657 - } - } - } - }, - { - "__TYPE__": "Assignment", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "endloc", - "index": 679 - } - }, - "right": { - "__TYPE__": "Dot", - "left": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "BracketArray", - "statements": [ - { - "__TYPE__": "Minus_Prefix", - "value": { - "__TYPE__": "Literal", - "type": "integer", - "value": { - "value": "1", - "index": 697 - } - } - } - ] - }, - "to": { - "__TYPE__": "Reference", - "name": { - "value": "results", - "index": 688 - } - } - }, - "right": { - "__TYPE__": "Reference", - "name": { - "value": "endloc", - "index": 700 - } - } - } - }, - { - "__TYPE__": "Assignment", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "yielded", - "index": 720 - } - }, - "right": { - "__TYPE__": "Gt", - "left": { - "__TYPE__": "Dot", - "left": { - "__TYPE__": "Dot", - "left": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "BracketParen", - "statements": [ - { - "__TYPE__": "Lambda", - "name": "r", - "accessors": [], - "arguments": [], - "body": [ - { - "__TYPE__": "Reference", - "name": { - "value": "r.yielded", - "index": 747 - } - } - ], - "return": { - "__TYPE__": "ReturnDef", - "type": { - "__TYPE__": "TypeRef" - }, - "spec": [] - } - } - ] - }, - "to": { - "__TYPE__": "Reference", - "name": { - "value": "results.map", - "index": 730 - } - } - }, - "right": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "Reference", - "name": { - "value": "when", - "index": 786 - } - }, - "to": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "BracketParen", - "statements": [ - { - "__TYPE__": "Lambda", - "name": "y", - "accessors": [], - "arguments": [], - "body": [ - { - "__TYPE__": "EqEq", - "left": { - "__TYPE__": "Reference", - "name": { - "value": "y", - "index": 770 - } - }, - "right": { - "__TYPE__": "Reference", - "name": { - "value": "undefined", - "index": 775 - } - } - } - ], - "return": { - "__TYPE__": "ReturnDef", - "type": { - "__TYPE__": "TypeRef" - }, - "spec": [] - } - } - ] - }, - "to": { - "__TYPE__": "Reference", - "name": { - "value": "filter", - "index": 758 - } - } - } - } - }, - "right": { - "__TYPE__": "Reference", - "name": { - "value": "length", - "index": 792 - } - } - }, - "right": { - "__TYPE__": "Literal", - "type": "integer", - "value": { - "value": "0", - "index": 801 - } - } - } - } - ] - }, - "to": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "Reference", - "name": { - "value": "Result", - "index": 505 - } - }, - "to": { - "__TYPE__": "Apply", - "apply": { - "__TYPE__": "Reference", - "name": { - "value": "new", - "index": 501 - } - }, - "to": { - "__TYPE__": "Reference", - "name": { - "value": "return", - "index": 494 - } - } - } - } - } - ] - } - ], - "return": { - "__TYPE__": "ReturnDef", - "type": { - "__TYPE__": "TypeRef", - "nameref": [ - { - "__TYPE__": "Reference", - "name": { - "value": "Result", - "index": 445 - } - } - ], - "types": [], - "indexer": [] - }, - "spec": [] - } - } - ] - } - ] + "types": [] } \ No newline at end of file diff --git a/src/martha.ast.ts b/src/martha.ast.ts index 08d299b..85e7fa8 100644 --- a/src/martha.ast.ts +++ b/src/martha.ast.ts @@ -2,7 +2,7 @@ import { Tibu, Result, ResultTokens, Input, IRule, IToken, Pattern, IRuleAction } from "tibu"; const { parse, token, rule, all, many, optional, either } = Tibu; -import { Emit, MethodAccess, Literal, Reference, Assignment, PlusEq, MinusEq, MultEq, DivEq, ModEq, ShREq, ShLEq, AmpEq, CaretEq, PipeEq, PowerEq, Mult, Power, Div, Mod, Plus, Minus, ShiftLeft, ShiftRight, Lt, Lte, Gt, Gte, EqEq, NotEq, Amp, Caret, Pipe, AmpAmp, PipePipe, MinusMinus, PlusPlus, Plus_Prefix, Minus_Prefix, Exc, Tilde, Splat, TypeOf, AddrOf, SizeOf, StateOf, SwapTo, New, Delete, Return, Arrow, Dot, ConditionalDot, PlusPlus_Postfix, MinusMinus_Postfix, Dot_Prefix, ReturnDef, ArgumentDef, Statement, MethodDef, List, MacroDef, ImportDef, TypeDef, Lambda, Range, TypeRef, ColonBin, QuesBin, ExcBin, IfExp, Attribute, MacroRuleDef, MemberDef, Token, Apply, BracketParen, BracketArray, BracketCurly, TransitioningMethodDef, StateBlockDef } from "./martha.emit"; +import { Emit, MethodAccess, Literal, Reference, Assignment, PlusEq, MinusEq, MultEq, DivEq, ModEq, ShREq, ShLEq, AmpEq, CaretEq, PipeEq, PowerEq, Mult, Power, Div, Mod, Plus, Minus, ShiftLeft, ShiftRight, Lt, Lte, Gt, Gte, EqEq, NotEq, Amp, Caret, Pipe, AmpAmp, PipePipe, MinusMinus, PlusPlus, Plus_Prefix, Minus_Prefix, Exc, Tilde, Splat, TypeOf, AddrOf, SizeOf, StateOf, SwapTo, New, Delete, Return, Arrow, Dot, ConditionalDot, PlusPlus_Postfix, MinusMinus_Postfix, Dot_Prefix, ReturnDef, ArgumentDef, Statement, MethodDef, List, MacroDef, ImportDef, TypeDef, Lambda, Range, TypeRef, ColonBin, QuesBin, ExcBin, IfExp, Attribute, MacroRuleDef, MemberDef, Token, Apply, BracketParen, BracketArray, BracketCurly, TransitioningMethodDef, StateBlockDef, TupleArgumentDef } from "./martha.emit"; import { Op, Mcro } from "./martha.grammar"; const emit = Emit.Emit @@ -17,7 +17,7 @@ const isa = (T:any) => (x:any): boolean => { const namedmany = (cst:any[], name:string) => { const fcst = flat(cst) - const result = fcst.filter(x => x.named === name) + const result = fcst.filter(x => x && x.named === name) return result } @@ -63,9 +63,12 @@ class AST { return modcst } + static tupleargumentdef(result:ResultTokens, cst:any):any { + return emit(TupleArgumentDef, { arguments: flat(cst) }) + } + static argumentdef(result:ResultTokens, cst:any):any { - console.log(result.tokens) - let argspec = named(flat(cst), "argspec") + let argspec = cst && named(flat(cst), "argspec") // ? return emit(ArgumentDef, { name: result.one("varname"), type: cst ? flat(cst).filter(isa(TypeRef)) : [], @@ -74,10 +77,7 @@ class AST { } static argumentdefs(result:ResultTokens, cst:any):any { - return { - op: "argdefs", - parameters: flat(cst) - } + return flat(cst) } static returndef(result:ResultTokens, cst:any):ReturnDef { @@ -86,24 +86,30 @@ class AST { type: flat(cst)[0], spec: argspec ? flat(argspec.cst) : [] }) - } + } static methoddef(result:ResultTokens, cst:any):MethodDef { + flat(named(cst, "type").cst) // ? + let fcst = flat(cst) let accessors = named(fcst, "accessors") - let returndef = cst && flat(cst).find((x:any) => x instanceof ReturnDef) + let type = named(fcst, "type") + let nextstate = named(fcst, "nextstate") ? named(fcst, "nextstate").cst : undefined + + let returndef = named(fcst, "returndef") // ? + + let output = emit(MethodDef, { // TODO: new Token s/c because unknown definitily typed behaviour around || - name: flat(named(fcst, "type").cst)[0].nameref.reverse()[0] || new Token(), - attributes: cst && flat(cst).filter(isa(Attribute)), + name: undefined, + attributes: fcst.filter(isa(Attribute)), accessors: accessors.result.tokens.map((t:any) => emit(Token, {value:t.result.value, index:t.result.startloc})), - arguments: cst ? flat(flat(cst).filter((x:any) => x.op == "argdefs").map((x:any) => x.parameters)) : [], - body: cst ? flat(cst).filter((x:any) => x instanceof Statement) : [], - return: returndef || flat(named(fcst, "type").cst)[0].nameref.slice(1).reverse(), + arguments: fcst.filter(isa(ArgumentDef)), + body: fcst.filter(isa(Statement)), + return: returndef }) // next state for transitional methoddefs - let nextstate = named(fcst, "nextstate") ? named(fcst, "nextstate").cst : undefined if (nextstate) { output = emit(TransitioningMethodDef, { ...output, @@ -111,13 +117,12 @@ class AST { }) } - return output //? + return output } static typedef(result:ResultTokens, cst:any):any { let fcst = flat(cst) - let stateblocks = named(fcst, "stateblocks") - console.log(stateblocks && stateblocks.cst[0]) + let stateblocks = fcst.filter(isa(StateBlockDef)) // ? let basetype = named(fcst, "basetype") let types:any[] = fcst .filter(x => x) @@ -129,8 +134,7 @@ class AST { basetype: basetype ? flat(basetype.cst)[0] : undefined } type.members = fcst.filter(isa(MemberDef)) - type.methods = fcst.filter(isa(MethodDef)) - type.states = stateblocks ? stateblocks.cst : undefined + type.states = stateblocks return emit(TypeDef, type); }) } @@ -140,48 +144,66 @@ class AST { static stateblock(result:ResultTokens, cst:any):StateBlockDef { let fcst = flat(cst) // ? - let state = named(fcst, "state").cst[0] // ? - let body = flat(named(fcst, "body").cst || []) // ? + let body = flat(namedmany(fcst, "body").map(c => c.cst)) // ? + let state = named(fcst, "state").cst[0] let members = body.filter(isa(MemberDef)) - let methods = body.filter(isa(MethodDef)) let substates = body.filter(isa(StateBlockDef)) let statedef = emit(StateBlockDef, { state, members, - methods, substates }) return statedef } - static typedef_index(result:ResultTokens, cst:any):TypeRef { + static typedef_type(result:ResultTokens, cst:any):TypeRef { + /** + * name, types, indexer, callsignature + */ + flat(cst) // ? let ref = emit(TypeRef, { - callreturn: cst ? flat(namedmany(cst, "return").map(c => AST.typedef_index(result, c.cst)))[0] : undefined, - nameref: cst ? flat(namedmany(cst, "names").map(c => c.cst)) : undefined, - types: cst ? flat(namedmany(cst, "types").map(c => AST.typedef_index(result, c.cst))) : undefined, - indexer: cst ? flat(namedmany(cst, "indexer").map(c => AST.typedef_index(result, c.cst || []))) : undefined, + nameref: cst ? flat(namedmany(cst, "name").map(c => c.cst)) : [], + callargs: cst ? flat(namedmany(cst, "callsignature").map(c => c.cst)) : [], + typeargs: cst ? flat(namedmany(cst, "types").map(c => c.cst)) : [], + indexargs: cst ? flat(namedmany(cst, "indexer").map(c => c.cst)) : [], + }) return ref; // return cst ? (result.get("typename") || []).concat([{index:flat(cst)}]) : result.get("typename") } - static typedef_type(result:ResultTokens, cst:any):any { - return AST.typedef_index(result, cst) + static varnames(result:ResultTokens, cst:any):Token[] { + return result.get("varname")!.map((v:any) => emit(Token, v)) // ? } - + static typedef_member(result:ResultTokens, cst:any):MemberDef[] { // TODO: memberdef type - let fcst = flat(cst).filter(x => x) - named(fcst, "name") //? - return fcst - .filter(isa(Reference)) - .map(x => emit(MemberDef, { - type: named(fcst, "type").cst[0], - name: x.name, - getter: named(fcst, "getter") ? named(fcst, "getter").cst : [], - setter: named(fcst, "setter") ? named(fcst, "setter").cst : [], - }) - ) + const fcst = flat(cst) + const members = fcst.filter(isa(MemberDef)) // ? + const body = flat(namedmany(fcst, "body").filter(x => x.cst).map(x => x.cst)) + members.forEach(member => { + member.body = body + }) + return fcst.filter(isa(MemberDef)) //? + } + + static typedef_member_dec(result:ResultTokens, cst:any):MemberDef[] { + // membernames { vartuples*, vars* typehint, transition, getter, setter + const fcst = flat(cst) + const modifiers = named(fcst, "modifiers").result.tokens.map((t:any) => emit(Token, {value:t.result.value,index:t.result.startloc})) + const names = flat(named(fcst, "varnames").cst) // ? + const args = named(fcst, "callsignature") // ? + const typehint = named(fcst, "typehint") + const transition = named(fcst, "transition") + const _arguments = flat(named(fcst, "vars").cst || []) + + return names.map((name:Token) => emit(MemberDef, { + modifiers: modifiers, + transition: transition ? transition.cst : [], + name, + type: typehint ? typehint.cst[0] : undefined, + arguments: _arguments + })) } static typedef_name(result:ResultTokens, cst:any):any { @@ -208,6 +230,7 @@ class AST { return lambda } + static atomparen(result:ResultTokens, cst:any):any { return { op: "parenthesis", @@ -285,8 +308,8 @@ class AST { return cst ? flat(cst) : [] } - static reference(result:ResultTokens, cst:any):any { - return emit(Reference, { + static reference(result:ResultTokens, cst:any):Reference { + return emit(Reference, { name: { value: result.get("member")!.map(v => v.value).join("."), index: result.one("member")!.index @@ -303,7 +326,6 @@ class AST { } static pushed(result:ResultTokens, cst:any):any { - console.log(cst) let depth = flat(cst).filter(x => x === "push").length let r:any = flat(cst).filter(x => x !== "push" && !x.target) while (depth--) { @@ -471,7 +493,7 @@ class AST { let fcst = flat(cst) let def = named(fcst, "def").cst let name = named(def, "name").result.one("member") || named(def, "name").result.one("string").match(/.(.*)./)[1] - let insert = named(def, "insert").cst[0] //? + let insert = named(def, "insert").cst[0] let rule = fcst.filter(isa(MacroRuleDef))[0] let macro = emit(MacroDef, { name:emit(Token, name), insert, rule }) diff --git a/src/martha.emit.ts b/src/martha.emit.ts index d466486..3c693ad 100644 --- a/src/martha.emit.ts +++ b/src/martha.emit.ts @@ -181,10 +181,10 @@ export class Emit { @serializable export class TypeRef { modifiers?: Reference[] - callreturn?: TypeRef nameref?: Reference[] - types?: TypeRef[] - indexer?: TypeRef[] + typeargs?: TypeRef[] + indexargs?: TypeRef[] + callargs?: TypeRef[] } /* @@ -207,6 +207,11 @@ export class ArgumentDef { spec!: Statement[] } +@serializable +export class TupleArgumentDef { + arguments!: ArgumentDef[] +} + @serializable export class Statement { statement!: Op[] @@ -214,7 +219,7 @@ export class Statement { @serializable export class MethodDef { - name!: Token + name?: Reference attributes?: Attribute[] accessors!: Token[] arguments!: ArgumentDef[] @@ -253,10 +258,14 @@ export class ImportDef { @serializable export class MemberDef { - type!: TypeRef + modifiers?: Token[] name!: Token + arguments?: ArgumentDef[] + type?: TypeRef + transition?: Reference[] getter?: Statement[] setter?: Statement[] + body?: Statement[] } @serializable @@ -264,7 +273,6 @@ export class TypeDef { name!: Token basetype?: TypeRef members?: MemberDef[] - methods?: MethodDef[] states?: StateBlockDef[] } @@ -272,7 +280,6 @@ export class TypeDef { export class StateBlockDef { state!: Reference members?: MemberDef[] - methods?: MethodDef[] substates?: StateBlockDef[] } diff --git a/src/martha.grammar.ts b/src/martha.grammar.ts index f94ca13..1a9d53b 100644 --- a/src/martha.grammar.ts +++ b/src/martha.grammar.ts @@ -10,6 +10,8 @@ const flat = (arr:any[]): any[] => { acc.concat(flat(val)) : acc.concat(val), []); } +const inf = (refrule:IRule | IToken):IRule => rule(/\s*/, refrule, /\s*/) + class WithParserContext { public context:ParserContext @@ -154,6 +156,8 @@ class Op { infix_comma = rule(/\s*,\s*/); infix_colon = rule(/\s*\:\s*/); + infix_arrow = rule(/\s*\-\>\s*/); + infix_fatarrow = rule(/\s*\=\>\s*/); lsquare = token("lsquare", "["); rsquare = token("rsquare", "]"); @@ -379,8 +383,8 @@ class Ref extends WithParserContext { super(context) } // members and variables - _member = token("member", /[a-z_\$\@][a-z0-9\$\@]*/i); - varname = token("varname", /[a-z_\$\@][a-z0-9\$\@]*/i); + _member = token("member", /[a-z_\$\@][_a-z0-9\$\@]*/i); + varname = token("varname", /[a-z_\$\@][_a-z0-9\$\@]*/i); member = rule(this._member, many(this.context.op.dot, this._member)) .yields(AST.reference); typename = token("typename", /[a-z_\$\@][a-z0-9\$\@]*/i); @@ -421,6 +425,7 @@ class Util extends WithParserContext { this.indents.push(r.one("indent")!.value); }); peekIndent = rule(this.context.ws.newline, (input:Input):Result => { + this.indents /* ?+ */ let index:number = input.source.substring(input.location).indexOf(this.indents[this.indents.length - 1]); if (index === 0) { input.location += this.indents[this.indents.length - 1].length; @@ -436,12 +441,12 @@ class Util extends WithParserContext { Result.pass(input) : Result.fault(input)); block = (begin:Pattern, repeat:Pattern) => rule( many(this.context.ws.newline), - begin, /[ \t]*:[ \t]*/, + begin, /[ \t]*=[ \t]*/, either( - all(this.pushIndent, repeat, + all(this.pushIndent, repeat, many( this.peekIndent, - repeat + repeat, this.context.ws.space0ton ), this.popIndent ), @@ -666,18 +671,21 @@ class Def extends WithParserContext { ) .yields(AST.argumentdef) ; - returndef = rule(() => this.context.def.typedef_type, optional(this.argumentspec)) + returndef = rule(() => this.context.ref.member, optional(this.argumentspec)) .yields(AST.returndef) ; argumentdefs = rule(this.argumentdef, many(this.context.op.infix_comma, this.argumentdef)) .yields(AST.argumentdefs) ; + /* methoddef = rule( - optional(rule("@", this.context.stmt.statement, /\s*/).yields(AST.attribute)), + optional(rule("@", this.context.stmt.statement, this.context.ws.space0ton).yields(AST.attribute)), this.context.util.block( all( rule(() => this.membermodifiers).yields(named("accessors")), - rule(() => this.context.def.typedef_type).yields(named("type")), + rule(() => this.context.def.typedef_type).yields(named("returntype")), + rule(() => this.context.ref.member).yields(named("name")), + rule(() => this.context.def.argumentspec).yields(named("returnspec")), optional( this.context.ws.lr0ton(this.context.op.arrow), // next state(s) @@ -689,6 +697,7 @@ class Def extends WithParserContext { ) .yields(AST.methoddef) ; + */ /* methoddec = rule( optional(rule(this.context.kwrd.anyaccess, many(this.context.ws.space1ton, this.context.kwrd.anyaccess), this.context.ws.space1ton).yields(AST.anyaccess)), @@ -739,7 +748,7 @@ class Def extends WithParserContext { .yields(AST.flatcst) ; - membermodifiers = rule(many( + modifiers_N = rule(many( either( this.context.kwrd.anyaccess, this.context.kwrd.abstract, @@ -759,6 +768,9 @@ class Def extends WithParserContext { return flat(cst); }); + varnames = rule(this.context.ref.varname, many(this.context.op.infix_comma, this.context.ref.varname)) + .yields(AST.varnames) + importdef = rule( this.context.kwrd.import, this.context.ws.space1ton, @@ -781,90 +793,170 @@ class Def extends WithParserContext { many(this.context.op.infix_comma, this.context.ref.typename)) .yields(AST.typedef_name) ; - typedef_index = rule( + typedef_type = rule( rule( - rule( - this.context.ref.member, - optional(this.context.ws.space1ton, this.context.ref.member) - ).yields(named("names")) - ), - // function - optional( - rule(this.context.ws.space0ton, this.context.op.fatarrow, this.context.ws.space0ton), - rule(all(() => this.context.def.typedef_index)).yields(named("return")) - ), + this.context.ref.member + ).yields(named("name")), // TODO: generic optional( rule( - this.context.op.langle, + inf(this.context.op.langle), // TODO: upgrade to bracket/block - rule(all(() => this.context.def.typedef_index)).yields(named("types")), + rule(all(() => this.context.def.typedef_type)), many( this.context.op.infix_comma, - rule(all(() => this.context.def.typedef_index)).yields(named("types")) + rule(all(() => this.context.def.typedef_type)) ), - this.context.op.rangle - ) + inf(this.context.op.rangle) + ).yields(named("types")) ), // indexer optional( rule( - this.context.op.lsquare, + inf(this.context.op.lsquare), optional( - () => this.context.def.typedef_index + () => this.context.def.typedef_type ), - this.context.op.rsquare + inf(this.context.op.rsquare) ).yields(named("indexer")) ), // func type optional( rule( - this.context.op.lparen, + inf(this.context.op.lparen), optional( - () => this.argumentdefs + () => this.context.def.typedef_type ), - this.context.op.rparen - ).yields(named("function")) + many( + this.context.op.infix_comma, + rule(all(() => this.context.def.typedef_type)) + ), + inf(this.context.op.rparen) + ).yields(named("callsignature")) + ), + // return type + optional( + this.context.op.infix_fatarrow, + rule(all(() => this.context.def.typedef_type)) ) ) - .yields(AST.typedef_index) - ; - typedef_type = rule( - this.typedef_index - ) .yields(AST.typedef_type) ; - typedef_member = rule( + /* + typedef_method = rule( this.membermodifiers, - this.membernames, - this.context.op.infix_colon, - rule(this.typedef_index).yields(named("type")), + this.membernames + )*/ + typedef_member_dec = rule( + this.modifiers_N, + rule(this.varnames).yields(named("varnames")), + /* + () + x y z + (x, y) + (x, y) z + x:int y:int + (x:int, y:int) + */ + // + rule( + many( + either( + rule( + this.context.op.lparen, + optional( + this.context.ws.space0ton, + + rule( + this.modifiers_N, + this.context.ref.varname, + optional( + this.context.op.infix_colon, + this.typedef_type, + optional(this.argumentspec) + ), + ).yields(AST.argumentdef), + + many( + this.context.op.infix_comma, + + rule( + this.modifiers_N, + this.context.ref.varname, + optional( + this.context.op.infix_colon, + this.typedef_type, + optional(this.argumentspec) + ) + ).yields(AST.argumentdef), + ) + + ), + this.context.op.rparen + ).yields(AST.tupleargumentdef), + rule( + many( + rule( + this.context.ws.space0ton, + this.modifiers_N, + this.context.ref.varname, + optional( + this.context.op.infix_colon, + this.typedef_type, + optional(this.argumentspec) + ) + ).yields(AST.argumentdef) + ), + ) + ) + ) + ).yields(named("vars")), + // optional type hint optional( - either( - // auto compute functions - all(this.context.ws.lr0ton(this.context.op.fatarrow), this.context.stmt.statement), - // static variables - all(this.context.ws.lr0ton(this.context.op.assign), this.context.stmt.statement), - // getter settter blocks - all( - this.context.ws.space1ton, + this.context.op.infix_colon, + rule(this.typedef_type, optional(this.argumentspec)).yields(named("typehint")) + ), + // transitioner + optional( + this.context.op.infix_arrow, + rule(this.context.ref.member).yields(named("transition")) + ), + optional( + // getter settter blocks + all( + this.context.ws.space1ton, + this.context.kwrd.with, + either( this.context.util.block( - this.context.kwrd.with, - either( - this.context.util.block( - "get", - this.context.stmt.statement - ).yields(named("getter")), - this.context.util.block( - "set", - this.context.stmt.statement - ).yields(named("setter")), - ) - ) + "get", + this.context.stmt.statement + ).yields(named("getter")), + this.context.util.block( + "set", + this.context.stmt.statement + ).yields(named("setter")), ) ) ) ) + .yields(AST.typedef_member_dec) + ; + typedef_member = rule( + /* + foo: int + static foo: int + static foo = 1 + () = void + multiply x y = x * y + multiply(x, y) = x * y // tuple + */ + this.context.util.block( + this.typedef_member_dec, + rule( + () => this.context.statements + ).yields(named("body")) + ) + ) .yields(AST.typedef_member) ; typedef_basetype = rule(() => this.context.def.typedef_type) @@ -880,13 +972,12 @@ class Def extends WithParserContext { rule( many(either( () => this.typedef_stateblock, - this.methoddef, - this.typedef_member + this.typedef_member, + this.typedef_member_dec, )) ).yields(named("body")) ).yields(AST.stateblock) ) - .yields(named("stateblocks")) ; typedef = rule( this.context.util.block( @@ -904,8 +995,8 @@ class Def extends WithParserContext { rule( many(either( this.typedef_stateblock, - this.methoddef, - this.typedef_member + this.typedef_member, + this.typedef_member_dec, )) ) ) diff --git a/src/test/genesis.spec.ts b/src/test/genesis.spec.ts index 9a361b9..d81cb70 100644 --- a/src/test/genesis.spec.ts +++ b/src/test/genesis.spec.ts @@ -15,20 +15,17 @@ function parse(file:string):ProgramDef { return parsed } -describe("genesis", () => { - let f = parse(__dirname + "../../genani/genesis.1.ma" ) - console.log(f.imports[0]) - console.log(f.types) - console.log(f.types[0].members) - console.log(f.types[0].methods) - console.log(f.types[0].states) - console.log(f.types[0].states[0]) - console.log(f.types[0].states[0].methods[0]) - console.log(f.types[0].states[0].methods[1]) +describe("genesis", () => { + let f = parse(__dirname + "../../genani/genesis.1.ma") + + it("should be a program", () => expect(f).to.not.be.undefined) + + it("should have one type at root level", () => expect(f.types.length).to.eq(1)) + + f.types[0].members[0] /* ?+ */ - //console.log(f.types[0].members) - //console.log(f.types[0].basetype) return; + let iballot = parse(__dirname + "../../genesis/IBallot.ma") let iparty = parse(__dirname + "../../genesis/IParty.ma") let itoken = parse(__dirname + "../../genesis/IToken.ma") diff --git a/src/test/kallis.Result.ma.spec.ts b/src/test/kallis.Result.ma.spec.ts index 7f6ce50..50ec092 100644 --- a/src/test/kallis.Result.ma.spec.ts +++ b/src/test/kallis.Result.ma.spec.ts @@ -12,7 +12,6 @@ describe("kallis.Result", () => { it("should be a program", () => { console.log(program.types[0]) - console.dir(program.types![0].methods![2].body[0].statement[0]) expect(program).to.not.be.null fs.writeFileSync(__dirname + "../../kallis/_kallis.Result.im", JSON.stringify(program, null, 2)) diff --git a/src/test/martha.ast.spec.ts b/src/test/martha.ast.spec.ts index 0fd2484..db1c459 100644 --- a/src/test/martha.ast.spec.ts +++ b/src/test/martha.ast.spec.ts @@ -16,50 +16,19 @@ const Def = parserContext.def const Stmt = parserContext.stmt describe('syntax.m', () => { - it('accepts type:\n Binary\nwith:\n object: left\n object: right\n', () => { + it('accepts type:\n Binary\nwith:\n left: object\n right: object\n', () => { // input - let input = 'type Binary:\n object: left\n object: right\n' + let input = 'type Binary =\n left: object\n right: object\n' let proc = false // output let output = (r:ResultTokens, c:any) => { - expect(flat(c)).to.deep.eq( - [ Emit.Emit(TypeDef, { - name: Emit.Emit(Token, { value: "Binary", index: 5 }), - basetype: undefined, - members: [ - Emit.Emit(MemberDef, { - type: Emit.Emit(TypeRef, { - nameref: [ - Emit.Emit(Reference, { - name: - Emit.Emit(Token, {value:"object", index:17}) - }) - ], - types: [], - indexer: [] - }), - name: { value: "left", index: 25 }, - getter: [], - setter: [] - }), - Emit.Emit(MemberDef, { - type: Emit.Emit(TypeRef, { - nameref: [ - Emit.Emit(Reference, { - name: - Emit.Emit(Token, {value:"object", index:34}) - }) - ], - types: [], - indexer: [] - }), - name: { value: "right", index: 42 }, - getter: [], - setter: [] - }) - ], - methods: [] - }) ] ) + const actual:TypeDef = flat(c)[0] + expect(actual.name.value).to.eq("Binary") + expect(actual.members!.length).to.eq(2) + expect(actual.members![0].name.value).to.eq("left") + expect(actual.members![1].name.value).to.eq("right") + expect(actual.members![0].type!.nameref![0].name.value).to.eq("object") + expect(actual.members![1].type!.nameref![0].name.value).to.eq("object") proc = true } parse(input)(rule(Def.typedef).yields(output)) diff --git a/src/test/martha.grammar.spec.ts b/src/test/martha.grammar.spec.ts index 2b3ebc8..2a1087e 100644 --- a/src/test/martha.grammar.spec.ts +++ b/src/test/martha.grammar.spec.ts @@ -35,7 +35,7 @@ describe("types", () => { }]]); }); it("should parse a type member", () => { - expect(Tibu.parse(`Member: Type`)(Def.typedef_member)).to.deep.eq([[{ + expect(Tibu.parse(`Member: Type`)(Def.typedef_member_dec)).to.deep.eq([[{ __TYPE__: 'MemberDef', type: { @@ -56,16 +56,14 @@ describe("types", () => { name: { value: "Foo", index: 5 }, basetype: Emit.Emit(TypeRef, { - callreturn: undefined, nameref: [ Emit.Emit(Reference, { name: { value: "Bar", index: 12 } }) ], - types: [], - indexer: [] + typeargs: [], + indexargs: [] } ), members: [], - methods: [], states: undefined }) ]]); @@ -76,7 +74,6 @@ describe("types", () => { name: {value:"Foo",index:5}, basetype:undefined, members:[], - methods:[], states: undefined }) ]]); @@ -87,25 +84,22 @@ describe("types", () => { Emit.Emit(TypeDef, { name: {value:"Foo", index:5}, basetype: Emit.Emit(TypeRef, { - callreturn: undefined, nameref: [Emit.Emit(Reference, {name:{value:"Bar", index:12}})], - types: [], - indexer: [] + typeargs: [], + indexargs: [] }), members:[ Emit.Emit(MemberDef, { type: Emit.Emit(TypeRef, { - callreturn: undefined, nameref:[Emit.Emit(Reference,{name:{value:"Party",index:27}})], - types: [], - indexer: [] + typeargs: [], + indexargs: [] }), name: {value:"this",index:21}, getter:[], setter:[] }) ], - methods:[], states: undefined } )]]); @@ -586,13 +580,13 @@ describe("Def", () => { describe('methoddef', () => { it('accepts constructor:', () => { // input - let input = 'constructor():' + let input = 'new -> bar' let proc = false // output let output = (r:ResultTokens, c:any) => { expect(flat(c)).to.deep.eq([ Emit.Emit(MethodDef, { - name: {value:"constructor", index:0}, + name: {name:{value:"constructor", index:0}}, attributes:[], accessors: [], arguments: [], @@ -603,7 +597,7 @@ describe("Def", () => { expect(r.tokens.length).to.eq(0) proc = true } - parse(input)(rule(Def.methoddef).yields(output)) + parse(input)(rule(Def.typedef_member_dec).yields(output)) expect(proc).to.be.eq(true) }) it('accepts constructor(x:int):', () => { @@ -614,7 +608,7 @@ describe("Def", () => { let output = (r:ResultTokens, c:any) => { expect(flat(c)).to.deep.eq([ Emit.Emit(MethodDef, { - name: {value:"constructor", index:0}, + name: {name: {value:"constructor", index:0} }, attributes:[], accessors: [], arguments: [ @@ -622,10 +616,9 @@ describe("Def", () => { name: { value: 'x', index: 12 }, type: [ Emit.Emit(TypeRef, { - callreturn: undefined, nameref: [Emit.Emit(Reference, {name:{value:"int",index:14}})], - types: [], - indexer: [] + typeargs: [], + indexargs: [] }) ], spec: [] @@ -638,19 +631,19 @@ describe("Def", () => { expect(r.tokens.length).to.eq(0) proc = true } - parse(input)(rule(Def.methoddef).yields(output)) + parse(input)(rule(Def.typedef_member_dec).yields(output)) expect(proc).to.be.eq(true) }) it('accepts void func(x:Y, u:U, j:P{.len < i}):', () => { // input let proc = false - let input = 'public void foo(x:Y, u:U, j:P{.len < i}): pass' + let input = 'public void foo(x:Y, u:U, j:P{.len < i}) = pass' // output let output = (r:ResultTokens, c:any) => { console.log(JSON.stringify(c,null,2)) expect(flat(c)).to.deep.eq([ Emit.Emit(MethodDef, { - name: {value:"foo", index:12}, + name: {name:{value:"foo", index:12}}, attributes:[], accessors: [{value:"public", index:0}], arguments: [ @@ -658,10 +651,9 @@ describe("Def", () => { name: { value: 'x', index: 16 }, type: [ Emit.Emit(TypeRef, { - callreturn: undefined, nameref: [Emit.Emit(Reference, {name:{value:"Y",index:18}})], - types: [], - indexer: [] + typeargs: [], + indexargs: [] }) ], spec: [] @@ -670,10 +662,9 @@ describe("Def", () => { name: { value: 'u', index: 21 }, type: [ Emit.Emit(TypeRef, { - callreturn: undefined, nameref: [Emit.Emit(Reference, {name:{value:"U",index:23}})], - types: [], - indexer: [] + typeargs: [], + indexargs: [] }) ], spec: [] @@ -682,10 +673,9 @@ describe("Def", () => { name: { value: 'j', index: 26 }, type: [ Emit.Emit(TypeRef, { - callreturn: undefined, nameref: [Emit.Emit(Reference, {name:{value:"P",index:28}})], - types: [], - indexer: [] + typeargs: [], + indexargs: [] }) ], spec: [ @@ -709,12 +699,11 @@ describe("Def", () => { ], return: Emit.Emit(ReturnDef, { type: Emit.Emit(TypeRef, { - callreturn: undefined, nameref: [ Emit.Emit(Reference, {name:{value:"void", index:7}}) ], - types: [], - indexer: [] + typeargs: [], + indexargs: [] }), spec: [] }) @@ -723,7 +712,7 @@ describe("Def", () => { expect(r.tokens.length).to.eq(0) proc = true } - parse(input)(rule(Def.methoddef).yields(output)) + parse(input)(rule(Def.typedef_member).yields(output)) expect(proc).to.eq(true) }) it('accepts int{> 0} func(int:x{> 0}, int:y{> x}):\n return x + y + 1', () => { @@ -737,7 +726,7 @@ describe("Def", () => { expect(r.tokens.length).to.eq(0) proc = true } - parse(input)(rule(Def.methoddef).yields(output)) + parse(input)(rule(Def.typedef_member_dec).yields(output)) expect(proc).to.be.eq(true) }) }) diff --git a/syntax.m.txt b/syntax.m.txt index 03b4f2b..c942db8 100644 --- a/syntax.m.txt +++ b/syntax.m.txt @@ -64,7 +64,13 @@ macro witnessed for $methoddef: pass - +=========== +program + import + import $name:Reference (from $library:Reference)? + macro + type + statement pipeline: