From 4fe63f253f58f87ab986fea38902d95f2a5ea338 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Fri, 14 Dec 2018 20:21:03 -0800 Subject: Auto-updated to version 5 --- lib/object.nom | 118 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 59 insertions(+), 59 deletions(-) (limited to 'lib/object.nom') diff --git a/lib/object.nom b/lib/object.nom index ca50257..a77af3f 100644 --- a/lib/object.nom +++ b/lib/object.nom @@ -1,8 +1,8 @@ -#!/usr/bin/env nomsu -V4.12.12.8 +#!/usr/bin/env nomsu -V5.12.12.8 # This file contains the implementation of an Object-Oriented programming system. -%globals.METAMETHOD_MAP = {..} +$globals.METAMETHOD_MAP = {..} "as text": "__tostring", "clean up": "__gc", "+ 1": "__add", "- 1": "__sub" "* 1": "__mul", "/ 1": "__div", "-": "__unm", "// 1": "__idiv", "mod 1": "__mod" "^ 1": "__pow", "& 1": "__band", "| 1": "__bor", "~ 1": "__bxor", "~": "__bnot" @@ -14,83 +14,83 @@ test: object (Dog): (Dog).genus = "Canus" my action [set up]: - %me.barks or= 0 + $me.barks or= 0 my action [bark, woof]: - %barks = [: for % in 1 to %me.barks: add "Bark!"] - return (%barks::joined with " ") + $barks = [: for $ in 1 to $me.barks: add "Bark!"] + return ($barks|joined with " ") - my action [get pissed off]: %me.barks += 1 - %d = (Dog {barks: 2}) - assume (type of %d) == "Dog" - assume (%d is a "Dog") - assume %d.barks == 2 - assume ((%d::bark) == "Bark! Bark!") - assume ((%d::woof) == "Bark! Bark!") - %d::get pissed off - assume (%d.barks == 3) - assume ((%d::bark) == "Bark! Bark! Bark!") - assume (%d.genus == "Canus") - assume ("\(%d.class)" == "Dog") - assume (%d.genus == "Canus") - assume (%d.barks == 3) - %d2 = (Dog {}) - assume (%d2.barks == 0) or barf "Default initializer failed" - with {%d: Dog {barks: 1}}: - assume ((%d::bark) == "Bark!") + my action [get pissed off]: $me.barks += 1 + $d = (Dog {barks: 2}) + assume (type of $d) == "Dog" + assume ($d is a "Dog") + assume $d.barks == 2 + assume (($d|bark) == "Bark! Bark!") + assume (($d|woof) == "Bark! Bark!") + $d|get pissed off + assume ($d.barks == 3) + assume (($d|bark) == "Bark! Bark! Bark!") + assume ($d.genus == "Canus") + assume ("\($d.class)" == "Dog") + assume ($d.genus == "Canus") + assume ($d.barks == 3) + $d2 = (Dog {}) + assume ($d2.barks == 0) or barf "Default initializer failed" + with {$d: Dog {barks: 1}}: + assume (($d|bark) == "Bark!") object (Corgi) extends (Dog): my action [sploot] "splooted" my action [bark, woof]: - %barks = [: for % in 1 to %me.barks: add "Yip!"] - return (%barks::joined with " ") + $barks = [: for $ in 1 to $me.barks: add "Yip!"] + return ($barks|joined with " ") - %corg = (Corgi {}) - assume (%corg.barks == 0) - with {%d: Corgi {barks: 1}}: - assume ((%d::sploot) == "splooted") or barf "subclass method failed" - assume ((%d::bark) == "Yip!") or barf "inheritance failed" - assume ((%d::woof) == "Yip!") + $corg = (Corgi {}) + assume ($corg.barks == 0) + with {$d: Corgi {barks: 1}}: + assume (($d|sploot) == "splooted") or barf "subclass method failed" + assume (($d|bark) == "Yip!") or barf "inheritance failed" + assume (($d|woof) == "Yip!") - with {%d: Dog {barks: 2}}: - assume ((%d::bark) == "Bark! Bark!") + with {$d: Dog {barks: 2}}: + assume (($d|bark) == "Bark! Bark!") -(my action %actions %body) compiles to: - lua> "\ - ..local fn_name = \%actions[1].stub:as_lua_id() - local \%args = List(\%actions[1]:get_args()) - table.insert(\%args, 1, \(\%me)) - local lua = LuaCode("class.", fn_name, " = ", \(what (%args -> %body) compiles to)) - for i=2,#\%actions do - local alias = \%actions[i] +(my action $actions $body) compiles to: + lua> " + local fn_name = \$actions[1].stub:as_lua_id() + local \$args = List(\$actions[1]:get_args()) + table.insert(\$args, 1, \(\$me)) + local lua = LuaCode("class.", fn_name, " = ", \(what ($args -> $body) compiles to)) + for i=2,#\$actions do + local alias = \$actions[i] local alias_name = alias.stub:as_lua_id() - local \%alias_args = List(alias:get_args()) - table.insert(\%alias_args, 1, \(\%me)) + local \$alias_args = List(alias:get_args()) + table.insert(\$alias_args, 1, \(\$me)) lua:add("\\nclass.", alias_name, " = ") - if \%args == \%alias_args then + if \$args == \$alias_args then lua:add("class.", fn_name) else - lua:add(\(what (%alias_args -> %actions.1) compiles to)) + lua:add(\(what ($alias_args -> $actions.1) compiles to)) end end return lua" -(object %classname extends %parent %class_body) compiles to: - unless (%classname.type == "Action"): - compile error at %classname "\ - ..Expected this to be an action, not a \%classname.type" +(object $classname extends $parent $class_body) compiles to: + unless ($classname.type == "Action"): + compile error at $classname \ + .."Expected this to be an action, not a \$classname.type" - for % in %classname: - unless (% is text): - compile error at % "Class names should not have arguments." + for $ in $classname: + unless ($ is text): + compile error at $ "Class names should not have arguments." return (..) - Lua "\ - ..do - local class = {name=\(quote %classname.stub)} + Lua " + do + local class = {name=\(quote $classname.stub)} class.__type = class.name setmetatable(class, { - __index=\(%parent as lua expr), + __index=\($parent as lua expr), __tostring=function(cls) return cls.name end, __call=function(cls, inst) if inst == nil then return cls end @@ -105,11 +105,11 @@ test: class.__tostring = function(inst) return inst.name..getmetatable(Dict{}).__tostring(inst) end - \(%class_body as lua) + \($class_body as lua) for stub,metamethod in pairs(globals.METAMETHOD_MAP) do class[metamethod] = class[stub:as_lua_id()] end end" -(object %classname %class_body) parses as (..) - object %classname extends (nil) %class_body +(object $classname $class_body) parses as (..) + object $classname extends (nil) $class_body -- cgit v1.2.3