Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap #3

Open
34 of 40 tasks
marcioAlmada opened this issue Oct 20, 2015 · 2 comments
Open
34 of 40 tasks

Roadmap #3

marcioAlmada opened this issue Oct 20, 2015 · 2 comments

Comments

@marcioAlmada
Copy link
Owner

marcioAlmada commented Oct 20, 2015

  • 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 Escaping syntax #9
  • Dominant macros (macros that throw syntax errors if not fulfilled after a given entry point) Dominant Macros #6
  • (Partial) Expansion iteration like ·matched_scope ··· { ·a ·b ·c }
  • Make expansion context unpacking become recursive 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 Allow to control trailing tokens when doing layer unpacking #21
  • Disallow infinite recursion by default while expanding macros Disallow infine expansion (macro recursion) #2
  • Allow macro to refer to itself with ·this
  • Macro hygiene Macro Hygiene #8
  • Macro tags Macro Tags #4
    • ·recursion tag to force a macro to be recursive Recursive Macros #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 First class 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 Real Time Mode #11
    • Provide a stream wrapper for pre processing inclusion include 'yay://some_file.php';
    • Composer integration
    • Make it fast enough
  • Write more documentation
@chris-kruining
Copy link

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

@marcioAlmada
Copy link
Owner Author

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants