Giter Site home page Giter Site logo

kstrafe / cxy Goto Github PK

View Code? Open in Web Editor NEW
10.0 6.0 3.0 7.14 MB

[Abolished] The Cxy Programming Language Compiler Reference Implementation

License: GNU General Public License v3.0

C++ 79.78% Shell 0.15% Python 7.07% PHP 12.78% Lua 0.19% Awk 0.03% Makefile 0.01%

cxy's Introduction

Cxy

Join the chat at https://gitter.im/BourgondAries/Unnamed-Language

Tutorial

The tutorials are located in documentation/cxys/.

A Great Language

Cxy is an attempt at a final low level language that can handle any problem. The language features builtin support for separating machine dependent from independent code. Advocates a clean coding method, and overall keeps the structure of the program in a clean and modular state.

Why another language?

Because the languages I've seen don't offer me what I want. I want control. I want blazing speed. I want to be able to abstract away boilerplate code nicely. I want a single simple build system, I want dependency tracking. Functional and modular purity. DETERMINISTIC DESTRUCTION! Strict enforcement of dependencies! This is what makes the cleanest language ever. So clean that ANYONE can EASILY join a totally new project with ease!

Have AWESOME ideas? Want to contribute?

Send a pull request or send me an email at macocio [at] gmail [dot] com. I'm also available on Skype as 'macocio'.

How this project is organized

The repository for The Cxy compiler. This repository contains the following folders:

  • code - where the code related to the compiler is stored. Tests are also stored here and must start with "test" in their filename.
  • codegenerators - code that generates code. Useful for generating switch-to-string code.
  • documentation - the documentation of the language and the compiler
  • libraries - here we store external and internal libraries. These are pieces of code that can be run. They are considered independencies.
  • tests - contains input and expected output files with a test_runner script. The script checks if the output is equal to the excepted output. It also runs unit tests.

The makefile contains the instructions to build the project. make just compiles and puts the executable in binaries/tulc.exe make tdd runs the tests in ./tests. You should only run tests this way as the test_runner script is not suited for direct calling.

Clear Overview

The Cxy dependency rule is enforced in this compiler. Modules (.cpp and their corresponding .hpp files) can ONLY depend/include on:

  1. A file in a subdirectory of their current directory.
  2. A file in a subdirectory directly from root.
  3. Be provided information from a parent.

This means that dependencies are kept clean and local. Spaghetti is avoided.

Current status!

The language has undergone great changes and is starting to have a stable grammar and lexer specification. Both are still in production, but should be finished within a year (2016). The likely outcome is that this repository will be rewritten to acomodate the changes to the language.

Here is the graph of the entire compiler as it is built up.

  • Green = Pure
  • Blue = Pure
  • Red = Impure
  • Orange = Root Dependency Graph

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.