marcioAlmada/yay

Roadmap

marcioAlmada opened this issue · 2 comments

  • Pick a more ergonomic composition identifier (instead of middle dot ·), before the DSL leaves draft state. Done: $( and )
  • Literal matchers and expansions
  • Token type matchers and expansions like T_TYPE·label. Ex: T_STRING·name
  • Greedy layer matching and expansion {···label}, [···label], (···label)
  • Non dominant macros (macros that only expand if fully matched and never throw errors during matching)
  • Macro escaping (cloaking) syntax #9
  • Dominant macros (macros that throw syntax errors if not fulfilled after a given entry point) #6
  • (Partial) Expansion iteration like ·matched_scope ··· { ·a ·b ·c }
  • Make expansion context unpacking become recursive #10
    • Maybe allow index access on expansions: ·matched[0] ·matched[2] ·matched[1]
  • Allow control of trailing elements during ast unpacking #21
  • Disallow infinite recursion by default while expanding macros #2
  • Allow macro to refer to itself with ·this
  • Macro hygiene #8
  • Macro tags #4
    • ·recursion tag to force a macro to be recursive #5
    • maybe allow tag parameters, like ·recursion(limit => 3)
  • Add more high level parsers
    • ·expression() or ·exp()
    • ·midrule(function($ts){...})
    • ·ls(...)
    • ·word()
    • ·label()
    • ·string()
    • ·variable()
  • Add more high level expanders @
    • ·stringify(...)
    • ·concat(...)
    • ·eval()
  • Allow operator precedence and infix macros declarations
  • Allow macro importing between files like use macro some\file{macro_name} (right now macros are limited to be local per file)
  • Global macros #28
  • Support user defined parsers and expanders (add proper D.I for DSL lookups)
  • Real time mode: pass included files through the preprocessor automatically #11
    • Provide a stream wrapper for pre processing inclusion include 'yay://some_file.php';
    • Composer integration
    • Make it fast enough
      • Disable complex errors by default #7
      • Optional: create a goto based parser stack interpreter and try to save tons of function calls
  • Write more documentation

have you by any chanche written down somewhere waht you want with the composer integration part? maybe I could help out with that 😄

@chris-kruining there are two alternatives for composer integration. One is using preprocess and the other is using Xray and loading the preprocessor callback before anything else.