All Projects → HackerFoo → Poprc

HackerFoo / Poprc

Licence: gpl-3.0
A Compiler for the Popr Language

Programming Languages

c
50402 projects - #5 most used programming language
language
365 projects

Projects that are alternatives of or similar to Poprc

Philip2
An Elm to OCaml compiler
Stars: ✭ 182 (+7.06%)
Mutual labels:  compiler, functional
Reduceron
FPGA Haskell machine with game changing performance. Reduceron is Matthew Naylor, Colin Runciman and Jason Reich's high performance FPGA softcore for running lazy functional programs, including hardware garbage collection. Reduceron has been implemented on various FPGAs with clock frequency ranging from 60 to 150 MHz depending on the FPGA. A high degree of parallelism allows Reduceron to implement graph evaluation very efficiently. This fork aims to continue development on this, with a view to practical applications. Comments, questions, etc are welcome.
Stars: ✭ 308 (+81.18%)
Mutual labels:  compiler, verilog
Ddc
The Disco Discus Compiler
Stars: ✭ 164 (-3.53%)
Mutual labels:  compiler, functional
Enso
Hybrid visual and textual functional programming.
Stars: ✭ 5,238 (+2981.18%)
Mutual labels:  compiler, functional
Enso Archive
Looking for Enso, the visual programming language? ➡️ https://github.com/enso-org/enso
Stars: ✭ 305 (+79.41%)
Mutual labels:  compiler, functional
Slang
SystemVerilog compiler and language services
Stars: ✭ 145 (-14.71%)
Mutual labels:  compiler, verilog
One
On-device Neural Engine
Stars: ✭ 162 (-4.71%)
Mutual labels:  compiler
Awesome Machine Learning In Compilers
Must read research papers and links to tools and datasets that are related to using machine learning for compilers and systems optimisation
Stars: ✭ 168 (-1.18%)
Mutual labels:  compiler
Sha256
Hardware implementation of the SHA-256 cryptographic hash function
Stars: ✭ 160 (-5.88%)
Mutual labels:  verilog
Kotlin Openapi Spring Functional Template
🍃 Kotlin Spring 5 Webflux functional application with api request validation and interactive api doc
Stars: ✭ 159 (-6.47%)
Mutual labels:  functional
Sdram Controller
Verilog SDRAM memory controller
Stars: ✭ 169 (-0.59%)
Mutual labels:  verilog
Swiss
🇨🇭Functional custom elements
Stars: ✭ 169 (-0.59%)
Mutual labels:  functional
Redux Zero
A lightweight state container based on Redux
Stars: ✭ 1,977 (+1062.94%)
Mutual labels:  functional
Cnn Fpga
使用Verilog实现的CNN模块,可以方便的在FPGA项目中使用
Stars: ✭ 160 (-5.88%)
Mutual labels:  verilog
Kryon
FPGA,Verilog,Python
Stars: ✭ 169 (-0.59%)
Mutual labels:  verilog
Elena Lang
ELENA is a general-purpose language with late binding. It is multi-paradigm, combining features of functional and object-oriented programming. Rich set of tools are provided to deal with message dispatching : multi-methods, message qualifying, generic message handlers, run-time interfaces
Stars: ✭ 161 (-5.29%)
Mutual labels:  compiler
Fpga Chip8
CHIP-8 console on FPGA
Stars: ✭ 169 (-0.59%)
Mutual labels:  verilog
Jitfromscratch
Example project from my talks in the LLVM Social Berlin and C++ User Group
Stars: ✭ 158 (-7.06%)
Mutual labels:  compiler
Metroboy
MetroBoy - A playable, circuit-level simulation of an entire Game Boy
Stars: ✭ 169 (-0.59%)
Mutual labels:  verilog
Compile To Web
Discover what languages can be compiled to Web Assembly
Stars: ✭ 164 (-3.53%)
Mutual labels:  compiler

Popr Compiler Build Status

This project implements a compiler for the Popr language.

Please see this presentation for more information, and the tutorial to understand the language semantics.

More examples can be found in lib.ppr and tests.ppr.

You can try the compiler online using the PoprC web version.

PoprC targets both C and Verilog. For example, the familiar Fibonacci function:

fib: [dup 1 <= !] [dup 1- dup 1- fib swap fib + swap 1 > !] | pushl head

can be compiled to Verilog and synthesized or simulated:

fib wave

Note the stack pointer (sp). Recursion is fully supported, but must be bounded.

Here's a working AXI4-Lite slave:

stream_read_array: swap [swap read_array swap] map_with

stream_write_array: swap2 [-swap2 swap write_array dup True swap seq swap] zip_with

stream_read_write_array:
  swap3 dup_array [-swap2 swap stream_write_array] dip31 swap
    [swap stream_read_array] dip21

when wrapped with a bit of Verilog to map the signals properly.

License

The license for the Popr Compiler is GPL3. See LICENSE for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].