diff options
| author | rtk0c <[email protected]> | 2025-09-24 23:48:16 +0000 |
|---|---|---|
| committer | rtk0c <[email protected]> | 2025-10-15 20:28:15 +0000 |
| commit | ab49edbb106c25b980bac0227a3db55b74378784 (patch) | |
| tree | 9c692af3a095be9374fc9775c35d47ff5acc04e1 /cm.lua | |
| parent | c4564f9f5c28abe8913c569374a7d778a6473210 (diff) | |
lua literals loading draft, and contemplations on the bigger picture Cm language
Diffstat (limited to 'cm.lua')
| -rw-r--r-- | cm.lua | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -0,0 +1,38 @@ +-- Cm: name inspired by "C meta(language)", but it's not really a metalangauge (whatever this means) of C (or anything else) + +local function LateResolveType(name) +end + +local function TypeTagger(tag) + return function(props) + props._tag = tag + return props + end +end + +local cm_env_fns = { + _namespace = 0, -- TODO + _t = LateResolveType, + _struct = TypeTagger("struct"), + _union = TypeTagger("union"), + _alias = TypeTagger("alias"), +} +local cm_env_metatable = {__index = cm_env_fns} + +---@param fn function +---@return table +function LoadCmLua(fn) + local env = {} + setmetatable(env, cm_env_metatable) + + local old_fenv = getfenv(fn) + setfenv(fn, env) + pcall(fn) + setfenv(fn, old_fenv) + + return env +end + +function LoadCmDecl(src) + -- TODO +end |
