A Nova dialect inspired by Pyra that compiles to JS
Find a file
2025-06-13 22:56:10 +00:00
bounties Get the serpens_cake.nv bounty working 2025-06-11 00:24:46 -06:00
examples Get the serpens_cake.nv bounty working 2025-06-11 00:24:46 -06:00
lib Misc work on bitsy 2025-06-07 13:17:40 -06:00
.gitignore Fix gitignore to ignore projects 2025-06-13 20:49:30 +00:00
compiler.js Get the serpens_cake.nv bounty working 2025-06-11 00:24:46 -06:00
myte.js Misc work on bitsy 2025-06-07 13:17:40 -06:00
package.json Clean up, carve out personal project space 2025-06-01 10:12:27 -06:00
parser.js Get the serpens_cake.nv bounty working 2025-06-11 00:24:46 -06:00
README.nv Clean up, carve out personal project space 2025-06-01 10:12:27 -06:00

|:: DOC| 
  :@in: MARKUP

  :links: pyra0 https://git.sr.ht/~nebulae/pyra0/tree/main/item/examples/variables/variables.nv
  :: (h1 [myte, a JS Nova implementation])

   :: (p 
       [myte is a Nova implementation built in JS, that has started as a port of])
   :: link pyra0 [pyra0. ]
   :: [I'm taking it in my own directions tho, eventually I plan on moving it from Pyra-based syntax to delimiter pairs (kinda like this document is written in).] 
      /p)

|:: TODOS|
    :board: TODOS
    :@in: Tasks

    :: for myte

        :: sub-project [Optimize JS Output]

        :: sub-project complete [delimiter-based frontend]
        :: done [Implement pattern matching strides in compiler]
        :: done [basic pyra0-style JS producing backend]
        :: done [basic pyra0-style parsing frontend]
        :: done [get more examples working]

    :: for [Optimize JS Output]
        :: todo [Switch to z-encoded stack names]
        :: todo [Optimize/profile stack push/pops]
        :: todo [Dead Code Elimination]
        :: todo [Rule-run queue]
        :: todo [Interned symbols instead of string literals]
        :: todo []

    :: for [delimiter-based frontend]
        :: obsolete [fix handling of * in patterns]

        :: done [fix handling of ?]
        :: done [Implement "" as string data]
        :: done [Implement @in as a macro]
        :: done [Handle quoted symbols as first class thing so they work in lists]
        :: done [Return initial state from parse]
        :: done [Handle vars]
        :: done [Handle ?]
        :: done [Handle #js/snippet stack]

|:: BOUNTIES|
    :board: Bounties
    :@in: Tasks

    :: for roguelike_logic.pnv
        :: todo [translate to myte syntax]
        :: todo [get compilation output working]

    :: for variables.pnv
        :: todo [translate to myte syntax]
        :: todo [update myte to parse me without erroring out]


|:: SYNTAX|
    _@in_ MARKUP
    [This file uses the standard two-layer configurable delimiter syntax 
    with one extension: ' or " as a way to say "treat all text until the next stack delimiter as a single string (or quoted token)." This allows for a natural split between tokens-as-commands and unstructured chardata
    meant for output.]

|:: SPECIALS|
    _@in_ MARKUP
    [One other convention is using :#in: STACKNAME to change the default
    stack that unlabled data goes to.]

|| 
    :button: DOCS 
    :button: TODOS
    :button: SYNTAX
    :button: SPECIALS