cake
pycparser
Our great sponsors
cake | pycparser | |
---|---|---|
19 | 8 | |
496 | 3,125 | |
- | - | |
9.8 | 2.9 | |
6 days ago | 7 days ago | |
C | Python | |
GNU General Public License v3.0 only | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
cake
- Cwerg: C-like language that can be implemented in 10kLOC
-
Static Ownership Checks for C
Cake is a C23 Front End http://thradams.com/cake/index.html that is implementing static ownership checks.
Cake source itself is already using this feature that can be used and disabled with few macros.
The link is a tour explaining the concepts and usage of this feature.
- Ownership Checks for C [pdf]
- static destructor / ownership verification for C
- Open source C23 front end - help wanted !
-
What is your favorite coding style? Why?
I have an open source project (https://github.com/thradams/cake) that can check coding style in case someone wants to help.
-
How to implement defer statement
Actually this is suggestion for myself.(https://github.com/thradams/cake/issues/22)
- Linter for certain style for C code
-
Command line tool buildgen
# Compiling https://github.com/thradams/cake cmake_minimum_required (VERSION 3.20)
- What is something you would have changed about the C programming language?
pycparser
-
Easy-to-use open source C preprocessor library?
In python, we have pycparser https://github.com/eliben/pycparser to parse C files into a tree.
-
What package is used to analyze C code?
I found pycparser which can probably do what you need, but it might not be very easy to use.
- Complete C99 parser in pure Python
-
Cake: C23 Front End and Transpiler C23 – C99
You can also use pycparser[0]. It is fully compatible C99, but be careful it doesn't support gnu extensions (like attributes, #indent, asm() ...). You can however work around most of them by -D defining them to empty macro in the argument.
[0] https://github.com/eliben/pycparser
-
When do you truly know C?
I wrote that tiny C compiler in Python and chose pycparser as the starting point. If you run C source code through pycparser it yields an Abstract syntax tree (AST) which is an in-memory, fine-grained tree representation of the C source code (for example, compound expressions are represented as binary trees that obey operator precedence rules which is extremely helpful).
-
Script that detects functions written in C
The difficulty is that in c you can do all kinds of weird and wonderful things... Doing it just by a text analysis of three code is going to be difficult to say the least. You could look at something like this parser though I suspect you might get better results using some of the existing utilities out there
-
Check function length in C?
Just find a C parser/lexer/whatever that'll handle the parsing for you. You can probably use it to determine where each function starts, where it ends, what it's called, etc.
-
Anyone interested in working on a hardware (FPGA/ASIC) related project? Not a compilers person by training, looking for help.
In terms of functionality the PipelineC project is pretty mature. But the back end implementation is hacky involves far to much reliance on a pycparser setup I dont understand (other than basic AST traversal was all needed). And as I slowly look to add not-strictly-C language concepts I would love to be working with someone who knows whats going on with compilers, syntaxes, intermediates. Some kind of Rust or C++ front end would be cool - template types and constexpr like things are something I am really missing being limited to C at the moment. I'll teach you FPGA things in return :-p
What are some alternatives?
lang - This is the source code repository for the Lang Programming Language, containing a compiler, documentation and soon-to-be standard library.
PipelineC - A C-like hardware description language (HDL) adding high level synthesis(HLS)-like automatic pipelining as a language construct/compiler feature.
tombl - Easily query TOML files from bash
narcissus - INACTIVE - http://mzl.la/ghe-archive - The Narcissus meta-circular JavaScript interpreter
run-clang-format - A wrapper script around clang-format, suitable for linting multiple files and to use for continuous integration
c99-to-c89 - Tool to convert C99 code to MSVC-compatible C89
pg_netstat - PostgreSQL extension to monitor database network traffic
Cello - Higher level programming in C
cedro - C programming language extension: Cedro pre-processor
ack - The Amsterdam Compiler Kit
cyclone - Cyclone is a type- and memory-safe dialect of C