Skip to content
/ Mew Public

Yet another programming language for self-written kernels :)

License

Notifications You must be signed in to change notification settings

NDRAEY/Mew

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mew

Mew (named after Pokémon) is a programming language created for programming in self-written OS kernels and popular systems

It uses PLY as lexer and parser.

Development

Yes, it's another programming language I writing 4th time

Dependcies

Mew depends on 2 functions at the moment:

  • malloc()
  • free()

Platforms

Mew uses target system that can be extended by adding targetname folder in the mew_pl/ folder and putting files into it:

For example (Linux: targets/linux) should contain files:

  • defs.h - type definitons
  • alloc.h - allocation functions

For any other platform, your targetname folder should contain these files too to reach compatibility.

Installation

Run

pip install https://github.com/NDRAEY/Mew/archive/main.zip

to install latest commit from GitHub repo.

Roadmap

  • Standard types
    • Numerals (u8, u16, u32, ...)
    • Float / Double
    • String
      • Store in variables
    • Booleans
    • Generics
      • Generic structs
      • Generic classes
    • Lists
      • Push
      • Pop
      • Insert
      • Remove
      • Remove by index
    • Own types creation
      • Structs
  • Variables
    • Assign
    • Reassign
  • Functions
    • Simple
    • Value-Returnable
      • Return variables
      • Return binary operations
      • Return any value
    • Lambdas
    • Function overloading
    • Store functions in variables
  • Control flow
    • if
    • else
    • else if
  • Loops
    • while
    • for
    • loop
    • break / continue
  • Arrays
    • Single-type
    • Use in functions
    • Multi-dimensional arrays
    • Indexing
    • Indexing and assigning
    • Slicing
  • Dictionaries (Maps)
  • Pointers
  • Memory safety
    • Auto-free
    • Value move
    • Force freeing
  • FFI
    • Minimal (Done using extern)
  • Cross-platform
    • Windows
    • Linux (Partial)
    • MacOS
    • *BSD
    • Other known operating systems
      • SayoriOS
      • SynapseOS
      • KolibriOS
      • SerenityOS
      • ToaruOS
      • Haiku
  • Classes
    • Public fields
    • Private fields
    • Operator overloading
    • Association with built-in types
  • No system libraries (no dependcies, like Golang)
  • Module support (like import in Python / #include in C)
    • From local files
    • Global
  • Builtins
    • StdIO
      • Input
        • Streams
        • Keyboard
        • File
      • Output
        • Streams
        • Screen / TTY
          • Common output
          • Formatted output
        • File
    • Operations with string
      • Concatenation
      • Trimming
      • Splitting
      • Lowercase/Uppercase/Normal conversion
    • Time
      • Monotonic (UNIX)
      • Human-readable (hrs, mins, secs)
      • Formatting to string fmt
    • Math
      • sin()
      • cos()
      • tg()
      • ctg()
      • log()
      • exp()
      • pow()
      • ln()

Contributing

How to contribute?

  1. Fork this repository.
  2. Make your changes in separate branch
  3. Submit a PR (Pull Request).
  4. Wait for your PR to be reviewed, approved & merged by an admin/owner.
  5. If there are issues with your PR, please revise them in accordance to the comments made by the admins.

Packages

No packages published

Languages