Metadata-Version: 1.1
Name: secularize
Version: 0.0.1.post7
Summary: run HolyC source on linux
Home-page: https://www.github.com/jamesalbert/HolyC-for-Linux
Author: jamesalbert
Author-email: jamesrobertalbert@gmail.com
License: MIT
Description: # HolyC-for-Linux
        run HolyC on Linux secularly
        
        [![Build Status](http://ec2-54-162-194-49.compute-1.amazonaws.com/job/holyc-for-linux/job/master/badge/icon)](http://ec2-54-162-194-49.compute-1.amazonaws.com/job/holyc-for-linux/job/master/)
        [![PyPI version](https://badge.fury.io/py/secularize.svg)](https://badge.fury.io/py/secularize)
        
        #### Disclaimer
        
        This tool is in super-hella-mega alpha stage. If you use this, you will die. Or worse, your current operating system will be replaced with TempleOS. I've only tested this on `3.7-dev`.
        
        ## Install
        
        ```
        pip install secularize
        ```
        
        ## Translate
        
        The primary use is to translate holyc to c. Do this with:
        `secularize examples/test.hc`
        
        this turns `examples/test.hc`
        ```c
        F64 *s = 3;
        
        U0 test(I16 a, U8 b, F64 c) {
          Print("hello");
        }
        
        F64 pest(I8 d) {
          Print("nothing");
        }
        
        Print("%s %s", "hello", "world");
        I64 b = 2.000;
        ```
        
        into `examples/test.c`
        ```c
        void test(short a, unsigned char b, double c)
        {
          printf("hello");
        }
        
        double pest(char d)
        {
          printf("nothing");
        }
        
        int main()
        {
          double* s = 3;
          printf("%s %s", "hello", "world");
          long b = 2.0;
        }
        ```
        
        ## Debugging
        
        To add a feature, it's useful to get the AST of an expected target. To do this, write the C file you're trying to translate to, then run `secularize dump-ast name-of-file.c`. This will pretty print the AST to json.
        
        ```sh
        $ cat examples/math.c
        int main()
        {
          long a = 3;
          long b = 2;
        }
        
        $ secularize dump-ast examples/math.c
        {
          "_nodetype": "FileAST",
          "coord": null,
          "ext": [
            {
              "_nodetype": "FuncDef",
              "coord": "examples/math.c:1:5",
              "decl": {
                "_nodetype": "Decl",
                "name": "main",
                "quals": [],
                "storage": [],
                "funcspec": [],
                "coord": "examples/math.c:1:5",
                "type": {
                  "_nodetype": "FuncDecl",
                  "coord": "examples/math.c:1:5",
                  "type": {
                    "_nodetype": "TypeDecl",
                    "declname": "main",
                    "quals": [],
                    "coord": "examples/math.c:1:5",
                    "type": {
                      "_nodetype": "IdentifierType",
                      "names": [
                        "int"
                      ],
                      "coord": "examples/math.c:1:1"
                    }
                  },
                  "args": null
                },
                "init": null,
                "bitsize": null
              },
              "body": {
                "_nodetype": "Compound",
                "coord": "examples/math.c:2:1",
                "block_items": [
                  {
                    "_nodetype": "Decl",
                    "name": "a",
                    "quals": [],
                    "storage": [],
                    "funcspec": [],
                    "coord": "examples/math.c:3:8",
                    "type": {
                      "_nodetype": "TypeDecl",
                      "declname": "a",
                      "quals": [],
                      "coord": "examples/math.c:3:8",
                      "type": {
                        "_nodetype": "IdentifierType",
                        "names": [
                          "long"
                        ],
                        "coord": "examples/math.c:3:3"
                      }
                    },
                    "init": {
                      "_nodetype": "Constant",
                      "type": "int",
                      "value": "3",
                      "coord": "examples/math.c:3:12"
                    },
                    "bitsize": null
                  },
                  {
                    "_nodetype": "Decl",
                    "name": "b",
                    "quals": [],
                    "storage": [],
                    "funcspec": [],
                    "coord": "examples/math.c:4:8",
                    "type": {
                      "_nodetype": "TypeDecl",
                      "declname": "b",
                      "quals": [],
                      "coord": "examples/math.c:4:8",
                      "type": {
                        "_nodetype": "IdentifierType",
                        "names": [
                          "long"
                        ],
                        "coord": "examples/math.c:4:3"
                      }
                    },
                    "init": {
                      "_nodetype": "Constant",
                      "type": "int",
                      "value": "2",
                      "coord": "examples/math.c:4:12"
                    },
                    "bitsize": null
                  }
                ]
              },
              "param_decls": null
            }
          ]
        }
        
        ```
        
        ## What's Supported
        
        - print statements
        - primitive data types
        - basic functions
        
        ## What's Not Supported
        
        Everything else. Deal with it.
        
Keywords: holyc linux terry lord temple mlg
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.6
