Skip to content

Modularizing skript-parser #113

Description

@Mwexim

Roadmap to modularize skript-parser

1. Lexical modules

  • Lexical structure manipulation
    • Allow addons to hook into this process and change it
    • Possible rework of FileElement and FileSection
    • Rework comment parsing
    • Refactor/restructure this process to be more optimized and user-friendly (StructureParser?)

2. Registration modules

  • Annotation registrations?
    • Remove/rework SkriptRegistration class completely (as it is pure convenience either way)
  • Enum registrations
  • Overriding elements easily

3. Parsing and SyntaxElement modules

  • Control flow improvements
    • Rework of Finishing, SelfRegistrable and Continuable
    • Rework of ArgumentSections and iterative sections
    • Exiting function (perhaps instead of SelfRegistrable?)
  • Native Async support
    • AsyncEffect and AsyncSection, perhaps AsyncExpression
    • Rework all async events and effects to be safe, reliable and optimizable
  • Operators
    • Defined by context and type parameters (nothing else)
    • Overriding system to override certain contexts with other type parameters
    • Somehow link ContextValue and Operator functionality (although this is probably not necessary)
  • Pre- and post-parsing triggers (although this might take it too far)
    • Make a new parsing chain with priority queue (for example, when parsing an expression, first parse as a list, then as a variable, then as registered expression, then as context value)
    • Allow addons to hook into this system
  • Rework tags
    • Rework tag registration, parsing and matching/initialization completely
    • More customizability, while adding some sort of pattern to it.
    • Make them completely independent of VariableString and require a specific call to apply them.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    futureLong-term plans of requests-for-comment about future/desired features.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions