GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - HackerFoo/poprc: A Compiler for the Popr Language

BranchesTags
Open more actions menu

Latest commit

 

History

1,802 Commits
1,802 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
afl
afl
 
 
cgen
cgen
 
 
css
css
 
 
debug
debug
 
 
gen
gen
 
 
ir
ir
 
 
linenoise @ 97d2850
linenoise @ 97d2850
 
 
lldb
lldb
 
 
nix
nix
 
 
org
org
 
 
parse
parse
 
 
patches
patches
 
 
pic
pic
 
 
primitive
primitive
 
 
scripts
scripts
 
 
startle
startle
 
 
test_output
test_output
 
 
testbenches
testbenches
 
 
tex
tex
 
 
vlgen
vlgen
 
 
.envrc
.envrc
 
 
.gdbinit
.gdbinit
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
.lldbinit
.lldbinit
 
 
.ycm_extra_conf.py
.ycm_extra_conf.py
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
builders.h
builders.h
 
 
cells.c
cells.c
 
 
command.c
command.c
 
 
default.nix
default.nix
 
 
eval.c
eval.c
 
 
eval.html
eval.html
 
 
gen_ed.ppr
gen_ed.ppr
 
 
io.c
io.c
 
 
irc.c
irc.c
 
 
lib.ppr
lib.ppr
 
 
lib_tests.txt
lib_tests.txt
 
 
list.c
list.c
 
 
macros.h
macros.h
 
 
module.c
module.c
 
 
mutate.c
mutate.c
 
 
package.json
package.json
 
 
parameters.h
parameters.h
 
 
popr
popr
 
 
popr-mode.el
popr-mode.el
 
 
poprc
poprc
 
 
poprc-mode.el
poprc-mode.el
 
 
poprc_rc
poprc_rc
 
 
rt.c
rt.c
 
 
rt_types.h
rt_types.h
 
 
shell.nix
shell.nix
 
 
special.c
special.c
 
 
staging.ppr
staging.ppr
 
 
tests.ppr
tests.ppr
 
 
tests.txt
tests.txt
 
 
user_func.c
user_func.c
 
 
var.c
var.c
 
 

Repository files navigation

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.

About

A Compiler for the Popr Language

popr.dev

Topics

compilerconcatenativedependent-typesfunctionalhigh-level-synthesislanguagelinear-logiclogic-programmingnon-deterministicpartial-evaluatorspoprpopr-compilersupercompilerverilog

Resources

Readme
GPL-3.0 license
Activity

Stars

259 stars

Watchers

17 watching

Forks

12 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.