Git Product home page Git Product logo

i-use-arch-btw's Introduction

I use Arch btw

"I use Arch btw" but it's a Turing-complete programming language.

Introduction

I use Arch btw is an esoteric programming language based on Brainfuck in which the commands are the following keywords:

i, use, arch, linux, btw, by, the, way, gentoo.

See the language specification for more information.

This repository contains a C/C++ library implementing I use Arch btw and a dependent command-line interpreter.

Getting Started

Prerequisites

  • CMake >= 3.23
  • a C99 and C++17 compiler toolchain supported by CMake and providing POSIX unistd.h, mmap(), MAP_ANON, and defining __x86_64__ when targeting x86-64

Building

$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON ..
$ cmake --build .

Installation

# cmake --install .

Usage

Command-line interpreter

$ i-use-arch-btw <source file>

Try some of the example I use Arch btw programs as source files.

For details:

$ i-use-arch-btw -h

C/C++ library

For documentation of the public API, see the public headers.

For example usage, see the command-line interpreter and example libiuab programs.

License

This software is licensed under the GNU General Public License, version 3.

i-use-arch-btw's People

Contributors

averne avatar overmighty avatar queenpew avatar slonkazoid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

i-use-arch-btw's Issues

Versioned release?

Hey there! I was hoping you could provide a versioned tarball in the github releases so that it can be packaged on distros like Void Linux. Thanks!

Why?

Like okay, yes i use arch but don't do me like this ;-;

Running/Installing fails

Neither running from build nor installing works for me (both running build/i-use-arch-btw or install + running i-use-arch-btw) yields:

build/i-use-arch-btw: error while loading shared libraries: libiuab.so: cannot open shared object file: No such file or directory

Probable reason: The .so file isn't installed properly for me / the program doesn't try to use it, even though it's in the same folder as the binary. When i sudo copy build/libiuab.so /lib it works. But externalizing the functionality to a lib seems overkill IMO, so the probable solutions are:

  1. Fix makefile to also install lib
  2. Fix build/make process to not build a lib

System: I use Arch btw. (Manjaro)

On Windows, this behaviour probably wouldn't happen, as .exe files look for .dll files automatically.

Hello World fails

This program should print "Hello World!"

arch the i the use linux the way i arch the i arch arch arch i the arch
arch arch arch arch arch arch arch arch arch arch i way the i way linux
the use way i linux way way arch arch arch arch arch arch arch arch arch
arch use way i i i i i i linux linux linux linux btw use use arch arch
arch btw use linux btw btw arch arch arch btw use linux btw i i i btw
use use btw arch arch arch btw linux linux linux linux linux linux btw i
linux btw use use arch btw use btw

Here's a working "interpreter".

#!/usr/bin/ruby
h = {
    'i' => 'p+=1;',
    'use' => 'p-=1;',
    'arch' => 'm[p]+=1;',
    'linux' => 'm[p]-=1;',
    'btw' => 'putc m[p];',
    'by' => 'm[p]=STDIN.getbyte if !STDIN.eof;',
    'the' => '(',
    'way' => ')while((m[p]&=255)!=0);',
    'gentoo' => 'print "\n",m,"\n";'
}

r = Regexp.union(Regexp.union(h.keys.sort{|a,b|b.length<=>a.length}),/./);
eval 'm=Hash.new(p=0);'+ARGF.read.gsub(/;.*$/,'').gsub(/[\n\t ]+/," ").gsub(r,h);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.