Skip to main content

an compiler for .cpy files

Project description

okp

okp (pronounced like okapi) is a python script that processes .cpy files and generates C++ code.

if the following code makes you happy, okp might be for you:

def weird_multiply(int a, b):
    for i = 0; i < b; i++:
        a *= b
    return a


def main():
    int a, b
    read a, b

    print "WEIRD MULTIPLIED:", weird_multiply(a, b)

status

okp is not a good idea for anyone to use, but try it anyways and let me know what you've built

installation

pip install okp

motivation

i saw vrsperanza's CPY and the light hit me: a language that looks like python but compiles like C. i decided i want to write programs in it. okp is my attempt to write a pre-processor like CPY but in python.

usage

# print c++ source
okp -p file.cpy

# compile code
okp file.cpy

# compile multiple cpy files together
okp file1.cpy file2.cpy

# specify the executable file
okp file1.cpy -o ./a.out

# compile and run 
okp file.cpy -r

# compil and run (stdin is passed to the binary) 
okp file.cpy -ri < input.txt

# compile a hybrid project
okp file1.h file2.cpp file3.cpy -o ./a.out

features

from CPY

Features that okp implements from CPY are:

  • indentation based bracketing
  • automatic parenthesization of conditionals
  • auto variable declarations
  • return multiple values from functions
  • automatic variable destructuring
  • for and rof loop shorthand (to enable, use -for and -rof flags)
  • known keyword
  • #raw include directive
  • disabling auto variable declarations (-ni flag)
  • compilation of hybrid projects

Features that are not implemented yet:

  • export project + Makefile

original

Some original features of okp to make it look more pythonic are:

  • def keyword before function names
  • block keyword for creating blocks
  • pass keyword for no-ops
  • print and raw_input keywords
  • self keyword
  • lines that start with IGNORE_CHAR are not pre-processed
  • triple backticks for multi-line escapes

further resources and similar projects

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

okp-0.0.54.tar.gz (22.7 kB view details)

Uploaded Source

File details

Details for the file okp-0.0.54.tar.gz.

File metadata

  • Download URL: okp-0.0.54.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.25.1 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for okp-0.0.54.tar.gz
Algorithm Hash digest
SHA256 ea4a3cb30308ee810cc62e4bb5e570391633d67c704248740b14ecdfcd4f3b03
MD5 6e39e7f9927873367db3a6598aea8a4d
BLAKE2b-256 f41591e3357b3e76a19b823d36000947653cedb4d25e377a5b272abd80e257e9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page