Skip to content
This repository has been archived by the owner on Dec 6, 2021. It is now read-only.

Current development track #206

Open
68 of 87 tasks
0xENDER opened this issue Aug 10, 2021 · 0 comments
Open
68 of 87 tasks

Current development track #206

0xENDER opened this issue Aug 10, 2021 · 0 comments
Labels
enhancement New feature or request Top Priority This issue is considered a top priority

Comments

@0xENDER
Copy link
Contributor

0xENDER commented Aug 10, 2021

EWOS (Errors and Warnings output system):

Preprocessor:

  • Process the file type
  • Process the file header flags
    • Output a warning once an unknown flag is detected
      No more info is available at the moment!
    • Add the flag <no-comments>
      No more info is available at the moment!
    • Add the flag <no-preprocessor-methods>
      No more info is available at the moment!
    • Add the flag <no-import>
      No more info is available at the moment!
    • Add the flag <no-using>
      No more info is available at the moment!
    • Add the flag <debug-mode>
      This will result in the output program reporting stuff in a debug console to the user. No more info is available at the moment!
    • Add the flag <safe-mode>
      No more info is available at the moment!
    • Add the flag <skip-preprocessor>
      Cancelled! (This was a debug feature, and it's no longer needed)
  • Add the separate zone
    You can find more info about this in the issue "Add the separate super-method #128"
  • Remove extra whitespace
  • Filter comments
  • Import other files' content (the use and import methods)
    • Create a native libraries solution
      No more info is available at the moment!
    • Import Mur code from .mur files that are imported using the import method
      No more info is available at the moment!
  • Attach the lines' source files full path
    No more info is available at the moment!
  • Process the define method
    • Save the values and origin lines & columns
      No more info is available at the moment!

Lexer:

  • Sort by types
    • Add the type SYMBOL
      No more info is available at the moment!
    • Add the type STRING
      No more info is available at the moment!
    • Add the type CHAR
      No more info is available at the moment!
    • Add the type NUMBER
      No more info is available at the moment!
    • Add the type OPERATOR
      No more info is available at the moment!
    • Add the type BOOLEAN
      No more info is available at the moment!
    • Add the type ZONE_LINE
      No more info is available at the moment!
    • Add the type HEX
      No more info is available at the moment!
  • Attach the Columns and Lines values
    No more info is available at the moment!
  • Attach the source file full path
    No more info is available at the moment!
  • Attach additional info
    No more info is available at the moment!
  • Replace the constant identifiers with their respective values
    No more info is available at the moment!

Parser:

  • Process all lexer tokens and categorise them to their terminal-forms (output to .trm)
    Group 1: the defaults

    • Add the ZONE_LINE terminal component
      No more info is available at the moment!
    • Add the STRING terminal component
      No more info is available at the moment!
    • Add the CHAR terminal component
      No more info is available at the moment!
    • Add the BOOLEAN terminal component
      No more info is available at the moment!
    • Add the NUMBER terminal component
      No more info is available at the moment!
    • Add the IDENTIFIER terminal component
      No more info is available at the moment!

    Group 2: the specifiers

    • Add the type_specifier terminal component
      No more info is available at the moment!
    • Add the state_specifier terminal component
      No more info is available at the moment!

    Group 3: the declarators

    • Add the function_declarator terminal component
      No more info is available at the moment!
    • Add the group_declarator terminal component
      No more info is available at the moment!
    • Add the class_declarator terminal component
      No more info is available at the moment!

    Group 4: the operators

    • Add the assignment_operator terminal component
      No more info is available at the moment!
    • Add the comparison_operator terminal component
      No more info is available at the moment!
    • Add the end_operator terminal component
      No more info is available at the moment!
    • Add the maths_operator terminal component
      No more info is available at the moment!
    • Add the zone_operator terminal component
      No more info is available at the moment!
    • Add the array_operator terminal component
      No more info is available at the moment!
    • Add the return_type_operator terminal component
      No more info is available at the moment!
    • Add the assignment_short_operator terminal component
      No more info is available at the moment!
    • Add the negative_operator terminal component
      No more info is available at the moment!
    • Add the parentheses_operator terminal component
      No more info is available at the moment!
    • Add the separation_operator terminal component
      No more info is available at the moment!
    • Add the dot_operator terminal component
      No more info is available at the moment!
    • Add the elevational_operator terminal component
      No more info is available at the moment!

    Group 5: statements

    • Add the return_statement terminal component
      No more info is available at the moment!
    • Add the ref_statement terminal component
      No more info is available at the moment!
    • Add the delete_statement terminal component
      No more info is available at the moment!

Check the file ./parser_plan.txt in the main directory of the project for more info

  • Process all terminal-tokens and start (recursively) building the non-terminal final tokens (output to .prs)
    No more info is available at the moment!
    • Process the setsize method
      • Only save the values and origin lines & columns (for the parser)
        No more info is available at the moment!
    • Process group definitions
      • Recognise group definition and name
        No more info is available at the moment!
      • Link the group zone to the group
        No more info is available at the moment!
      • Recognise when a group is called
        No more info is available at the moment!
    • Process class definitions
      • Recognise class definition and name
        No more info is available at the moment!
      • Link the class zone to the class
        No more info is available at the moment!
      • Recognise when a class is called
        No more info is available at the moment!
    • Process function definitions
      • Recognise function definition and name
        No more info is available at the moment!
      • Link function arguments to the function
        No more info is available at the moment!
      • Link the function zone to the function
        No more info is available at the moment!
      • Recognise when a function is called
        No more info is available at the moment!
    • Change the name of variables and functions to include the name of the group and class they are in
      No more info is available at the moment!

Optimiser:

Evaluator:
On hold

Bundler:

  • Process tell data
    No more info is available at the moment!

C Compiler:
On hold

After the core stuff is taken care of, move to these things:

  • Build some demo projects
    For example, you could try creating a "Conway's game of life" demo.
  • Create a Cross-Platform Structural Interface Definition Language
    A cross-platform markup language that holds readable and understandable text that defines an interface for a program with local/native system components.

Note:
The system versioning is gonna work as followed:

X.X-<type>.<copy_id>

For example:
0.1-dev.2 means version 0.1, developer release, copy 2.
0.1-alpha.1 means version 0.1, alpha release, copy 1.
0.1-beta.4 means version 0.1, beta release, copy 4.
0.1 means version 0.1, final release.

@0xENDER 0xENDER added the enhancement New feature or request label Aug 10, 2021
@0xENDER 0xENDER pinned this issue Aug 10, 2021
@0xENDER 0xENDER changed the title Current development plan Current development track Aug 10, 2021
@0xENDER 0xENDER added the Top Priority This issue is considered a top priority label Aug 10, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request Top Priority This issue is considered a top priority
Projects
None yet
Development

No branches or pull requests

1 participant