diff options
| author | sanine <sanine.not@pm.me> | 2025-10-24 12:08:39 -0500 | 
|---|---|---|
| committer | sanine <sanine.not@pm.me> | 2025-10-24 12:08:39 -0500 | 
| commit | 54430e64cbb9577ee69de40bc92040428c73e097 (patch) | |
| tree | bb48d7ba2b04399eb62381ef993e3b23aa1755e2 /grammar.lua | |
| parent | 50793e214c05ff77636addb319ccf0de864713e4 (diff) | |
remove spurious files
Diffstat (limited to 'grammar.lua')
| -rw-r--r-- | grammar.lua | 91 | 
1 files changed, 0 insertions, 91 deletions
| diff --git a/grammar.lua b/grammar.lua deleted file mode 100644 index bdc7347..0000000 --- a/grammar.lua +++ /dev/null @@ -1,91 +0,0 @@ -local module = {} -setmetatable(module, {__index=_G}) -setfenv(1, module) - - -local Grammar = {} - -function module.createGrammar(nonterminals, triggers) -  local self = { -    nonterminals = nonterminals, -    triggers = triggers, -    context = {}, -  } -  setmetatable(self, {__index=Grammar}) -  return self -end - - -function Grammar.pushContext(self) -  local newContext = {} -  setmetatable(newContext, {__index=self.context}) -  self.context = newContext -end -function Grammar.popContext(self) -  local mt = getmetatable(self.context) -  local oldContext = (mt and mt.__index) or {} -  self.context = oldContext -end - - -function Grammar.expandSymbol(self, sequence, index, expansion) -  table.remove(sequence, index) -  for i=1,#expansion do -    table.insert(sequence, index+i-1, expansion[i]) -  end -end - - -function Grammar.expandSequence(self, sequence, n, debug) -  local i = 1 -  while i <= #sequence do -    if debug then print(sequence[i]) end -    local choices = self.nonterminals[sequence[i]] or self.context[sequence[i]] -    if choices then -      local trigger = self.triggers[sequence[i]] -      if trigger then trigger(self) end -      if #choices == 1 then -        self:expandSymbol(sequence, i, choices[1]) -        return true, 0 -      else -        local choice = choices[1 + (n % #choices)] -        self:expandSymbol(sequence, i, choice) -        return true, 1 -      end -    else -      i = i+1 -    end -  end -  return false, 0 -end - - -function Grammar.expand(self, genome, geneIndex, maxLoops, debug) -  geneIndex = geneIndex or 0 -  maxLoops = maxLoops or 2 -  local sequence = { '<start>' } -  local count = 0 -  local continue = true -  while continue do -    local gene -    if (count > maxLoops * #genome) then -      gene = 0 -    else -      gene = genome[1 + (geneIndex % #genome)] -    end -    local increment -    if debug then print(geneIndex, gene) end -    continue, increment = self:expandSequence(sequence, gene, debug) -    if not continue then break end -    geneIndex = geneIndex+increment -    count = count + 1 -  end -  local result = '' -  for _, s in ipairs(sequence) do -    result = result .. s -  end -  return result, geneIndex -end - - -return module | 
