Skip to content

Modularizing skript-parser #113

@Mwexim

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.

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