Skip to content

m-heim/Npc

Repository files navigation

CMake

NPC

Description

A compiler project written in c, the language is called np (not pascal), its supposed to be similar to c in terms of machine distance. However, it should provide features that make programming easier. You can find multiple examples of code under ./programs

GOALS

Language Goals

Progress Feature
Low level (C style)
Simplicity (C style)
Fast (C style)
Useful builtins (Python style)

Compiler Goals

Progress Feature
Compiling process max. takes 100 % more than C
Useful error messages
No external libraries
Using selfmade lex/parse generator
Executable process max. takes 100 % more than C
Self hosted
Supports Linux
Supports Windows
Supports ARM

Progress

Progress Feature
Language specification
✔️ Scanner
Parser
Irgen
Codegen
Optimizations

How to

  • Recommended way to contribute is via vscode in Windows with wsl or simply in Linux. If you want to use another IDE do so as you wish though. The advantage of using vscode is that there is a proper workflow setup already.
  • The settings for formatting and the extensions are in the /.vscode directory, you can see the recommended extensions in the extensions tab.
  • Fork and make a pull request

Overview of components

Directory/File Purpose
/src All the source code and headers for the compiler
/programs Test programs to test the parser
/gp-parsergen Seperate project which provides the parser generator for the project
/documentation Contains the doxygen documentation and documentation about the language itself (i.e. lexing patterns and the bnf of the syntax)
/build Contains the build output and the data generated by cmake
/.vscode Contains launch settings, extension recommendations, settings and tasks
/.github Contains all github workflows
/.gitmodules Contains the link for github to get the parser generator

Resources

Releases

No releases published

Packages

No packages published