Compare commits

...

42 Commits

Author SHA1 Message Date
mergify[bot] 5c5ae8d710
Merge pull request #25 from anas-elgarhy/renovate/clap-4.x
fix(deps): update rust crate clap to 4.3.2
2023-06-07 00:49:19 +00:00
renovate[bot] 71ee7374d0
fix(deps): update rust crate clap to 4.3.2 2023-06-05 23:17:29 +00:00
mergify[bot] 6e3aced0ba
Merge pull request #23 from anas-elgarhy/renovate/log-0.x
fix(deps): update rust crate log to 0.4.18
2023-06-04 23:38:04 +00:00
renovate[bot] 0c8ad457f2
fix(deps): update rust crate log to 0.4.18 2023-06-04 23:37:28 +00:00
mergify[bot] 58f7a69015
Merge pull request #24 from anas-elgarhy/renovate/clap-4.x
fix(deps): update rust crate clap to 4.3.1
2023-06-04 23:37:15 +00:00
renovate[bot] 684b555c1e
fix(deps): update rust crate clap to 4.3.1 2023-06-02 16:49:29 +00:00
mergify[bot] 05cf63c3cd
Merge pull request #22 from anas-elgarhy/renovate/pretty_env_logger-0.x
fix(deps): update rust crate pretty_env_logger to 0.5.0
2023-05-22 13:01:54 +00:00
mergify[bot] 687975a746
Merge pull request #21 from anas-elgarhy/renovate/console-0.x
fix(deps): update rust crate console to 0.15.7
2023-05-22 13:01:22 +00:00
renovate[bot] 33b7c4c91d
fix(deps): update rust crate console to 0.15.7 2023-05-21 21:14:23 +00:00
mergify[bot] 18e3f48693
Merge pull request #20 from anas-elgarhy/renovate/clap-4.x
fix(deps): update rust crate clap to 4.3.0
2023-05-21 02:37:02 +00:00
renovate[bot] 3853af5aa2
fix(deps): update rust crate clap to 4.3.0 2023-05-19 19:08:38 +00:00
renovate[bot] a38d5c0ce2
fix(deps): update rust crate pretty_env_logger to 0.5.0 2023-05-18 14:33:21 +00:00
mergify[bot] dfcca1aca3
Merge pull request #16 from anas-elgarhy/renovate/console-0.x
fix(deps): update rust crate console to 0.15.5
2023-03-31 21:42:09 +00:00
mergify[bot] 0dea1c877e
Merge pull request #17 from anas-elgarhy/renovate/clap-4.x
fix(deps): update rust crate clap to 4.2.1
2023-03-31 21:41:37 +00:00
mergify[bot] 885ea69d9c
Merge pull request #19 from anas-elgarhy/renovate/actions-checkout-3.x
chore(deps): update actions/checkout action to v3
2023-03-31 21:41:16 +00:00
renovate[bot] 083fa53de2
fix(deps): update rust crate clap to 4.2.1 2023-03-29 23:18:16 +00:00
renovate[bot] c78074943f
chore(deps): update actions/checkout action to v3 2023-01-28 22:17:52 +00:00
renovate[bot] a05dc6f133
fix(deps): update rust crate console to 0.15.5 2023-01-28 22:11:12 +00:00
mergify[bot] ba3759733c
Merge pull request #14 from anas-elgarhy/renovate/configure
Configure Renovate
2023-01-28 22:10:57 +00:00
Anas Elgarhy 7876ce27f7
Merge pull request #15 from anas-elgarhy/mergify/anas-elgarhy/config-update
ci(Mergify): configuration update
2023-01-29 00:10:22 +02:00
Anas Elgarhy 353d0310f3 ci(Mergify): configuration update
Signed-off-by: Anas Elgarhy <anas.elgarhy.dev@gmail.com>
2023-01-28 23:58:00 +02:00
renovate[bot] 26eb4527a2
Add renovate.json 2023-01-28 21:25:25 +00:00
Anas Elgarhy 251d88a178
Merge pull request #13 from idrismusa4/master
Translated the README.md to Arabic Language
2022-10-15 22:16:34 +02:00
Idris Musa 33d7fbae74
Update README-ar.md 2022-10-15 21:13:22 +01:00
Idris Musa 2da9c144d7
Update README-ar.md 2022-10-15 20:18:06 +01:00
Idris Musa 2a19d38f8a
Update README.md 2022-10-15 20:16:28 +01:00
Idris Musa a0a7c7ce7a
Update README.md 2022-10-15 20:15:30 +01:00
Idris Musa d5812f6383
Add files via upload 2022-10-15 20:13:34 +01:00
Idris Musa c0b95c6af1
File Renamed to README-ar.md
Corrections made to Arabic Translations
2022-10-15 20:12:54 +01:00
Idris Musa 2fbaee3121
Translated the README.md to Arabic Language 2022-10-15 15:28:59 +01:00
Anas Elgarhy b4b362c2bb
Merge pull request #12 from KrishAgarwal2811/master
feat: workflow to run tests on PRs and push to master
2022-10-15 09:23:31 +02:00
Krish 71d8b18c8c feat: workflow to run tests on PRs and push to master 2022-10-15 06:54:04 +00:00
Anas Elgarhy 666869ae44
Merge pull request #11 from TerribleCodes/master
Added test_code/1000_to_100_counter.bf
2022-10-14 23:06:45 +02:00
TerribleCodes 6c85eb5e20 added a test code 2022-10-15 01:49:58 +05:30
Anas Elgarhy af08c57e99
Merge pull request #9 from Karthik-PM/master
added fibonacci
2022-10-14 18:24:03 +02:00
Karthik P M f1d6c0d699
added fibonacci 2022-10-14 19:31:01 +05:30
Anas Elgarhy 7fb674cecc Update the AUR package 😆 2022-10-13 21:13:26 +02:00
Anas Elgarhy 20bbca848e Just up the version 🤍 2022-10-13 21:08:39 +02:00
Anas Elgarhy 8bb91af353
Merge pull request #1 from anas-elgarhy/imgbot
[ImgBot] Optimize images
2022-10-13 21:08:40 +02:00
Anas Elgarhy 20811ba4aa Create the AUR package 🥰 2022-10-13 21:06:00 +02:00
Anas Elgarhy b842aa669c Add the feauthers 🥲 2022-10-13 20:59:42 +02:00
ImgBotApp 5b8011c6c5
[ImgBot] Optimize images
*Total -- 259.50kb -> 221.20kb (14.76%)

/screenshots/like_cat_output.png -- 16.48kb -> 12.47kb (24.33%)
/screenshots/repl_print_at_and_A_0.1.0.png -- 115.50kb -> 92.08kb (20.28%)
/assets/cover.png -- 87.09kb -> 78.59kb (9.77%)
/assets/cover.jpg -- 40.42kb -> 38.06kb (5.85%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2022-10-13 18:53:41 +00:00
16 changed files with 276 additions and 7 deletions

20
.github/workflows/test.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: test
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build
run: cargo build
- name: Run tests
run: cargo test

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "archpackage/bfy"]
path = archpackage/bfy
url = ssh://aur@aur.archlinux.org/bfy.git

7
.mergify.yml Normal file
View File

@ -0,0 +1,7 @@
pull_request_rules:
- name: Automatic merge on approval
conditions:
- "#approved-reviews-by>=1"
actions:
merge:
method: merge

View File

@ -1,6 +1,6 @@
[package]
name = "bfy"
version = "0.1.0"
version = "0.1.1"
edition = "2021"
authors = ["Anas Elgarhy <anas.elgarhy.dev@gmail.com>"]
license = "MIT"
@ -31,12 +31,12 @@ exclude = [
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = { version = "4.0.14", features = ["derive", "color", "cargo", "wrap_help", "suggestions"] }
log = "0.4.17"
pretty_env_logger = "0.4.0"
clap = { version = "4.3.2", features = ["derive", "color", "cargo", "wrap_help", "suggestions"] }
log = "0.4.18"
pretty_env_logger = "0.5.0"
colored = "2.0.0"
# no-panic = "0.1.16"
console = "0.15.2"
console = "0.15.7"
[dev-dependencies]
pretty_assertions = "1.3.0"

198
README-ar.md Normal file
View File

@ -0,0 +1,198 @@
<p align="center">
<img alt="brainfuc*k interpreter" src="./assets/cover.png" width="100%" />
</p>
# ممترجم بسيط وREPL للغة brainfu*k مكتوب باللغة Rust🦀
#### *اقرأ هذا في لغات أخرى.*
[EN English](README.md)
## المميزات
-مترجم بسيط وREPL للغة brainfu*k مكتوب باللغة Rust 💫
- تشغيل brainfuc * k رمز مباشر من REPL🚀
- دعم أحرف UTF-8 بما في ذلك الرموز التعبيرية 😍 (اختياري)
- يمكنك التحكم في حجم المصفوفة 📏
## تثبيت
- من crates.io:
```shell
cargo install bfy
```
- من aur:
```shell
yay -S bfy
```
## الخيارات والحجج
<details>
<summary>جدول الخيارات</summary>
<table>
<thead>
<tr>
<th>اختيار</th>
<th>وصف</th>
<th>إفتراضي</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>-h</code>, <code>--help</code></td>
<td>طباعة معلومات المساعدة</td>
<td></td>
</tr>
<tr>
<td><code>-V</code>, <code>--version</code></td>
<td>يطبع معلومات الإصدار</td>
<td></td>
</tr>
<tr>
<td><code>-f</code>, <code>--features</code></td>
<td>
الميزات الإضافية للتمكين<br/>
القيم الممكنة:
<ul>
<li>no-reverse-value:<br/>
إذا كانت القيمة تريد إنقاص القيمة وكانت القيمة 0 ، فلا تعين القيمة على 255 ، وإلا قلل القيمة. <br/>
إذا كانت القيمة تريد زيادة القيمة وكانت القيمة 255 ، فلا تقم بتعيين القيمة على 0 ، وإلا قم بزيادة القيمة. الاسم المستعار هو:
"nrv"
</li>
<li>reverse-pointer:<br/>
إذا كان المؤشر في نهاية المصفوفة ، فاضبط المؤشر على 0 ، وإلا قم بزيادة المؤشر. <br/>
إذا كان المؤشر في بداية المصفوفة ، فاضبط المؤشر على نهاية المصفوفة ، وإلا قلل المؤشر. الاسم المستعار هو: `rp`
</li>
<li>allow-utf8:<br/>
اسمح باستخدام أحرف utf8 (32 بت) ، وإلا فلن يُسمح إلا باستخدام أحرف 8 بت. <br/>
استخدم هذه الميزة بحذر لأنها تزيد حجم الخلية من 8 بت إلى 32 بت. <br/>
كما يسمح لك باستخدام الرموز التعبيرية في كود مخادعك: D ، هذا إذا استطعت
حافظ على عقلك حتى تتمكن من الوصول إلى قيمتها الرقمية :). <br/>
يمكن لـ "u32" في الصدأ تخزين القيم من 0 إلى 4294967295 فقط ، لكننا
يمكن فقط استخدام 0 إلى 1114111 (0x10FFFF) في الوقت الحالي. الاسم المستعار هو: `utf8`
</li>
</ul>
</td>
<td>غير متوفر</td>
</tr>
<tr>
<td><code>-a</code>, <code>--array-size</code></td>
<td>حجم المصفوفة</td>
<td>30000</td>
</tr>
<tr>
<td><code>-w</code>, <code>--without-tiles</code></td>
<td>لا تقم بطباعة المربعات (مثل رمز الخروج واسم الملف وما إلى ذلك)</td>
<td></td>
</tr>
</tbody>
</table>
</details>
<details>
<summary>مساعدة خيار الإخراج</summary>
```shell
bfy --help
```
```text
Brainfu*k interpreter and REPL written in Rust
Usage: bfy [OPTIONS] [SOURCE]
Arguments:
[SOURCE]
The brainfuck source code file to run (if not will be entered in REPL mode)
Options:
-f, --features <FEATURES>
Possible values:
- no-reverse-value:
If the value is you want decrement the value and the value is 0, don't set the value to 255, otherwise decrement the value. If the
value is you want increment the value and the value is 255, don't set the value to 0, otherwise increment the value. The alias are:
`nrv`
- reverse-pointer:
If the pointer at the end of the array, set the pointer to 0, otherwise increment the pointer. If the pointer at the beginning of the
array, set the pointer to the end of the array, otherwise decrement the pointer. The alias are: `rp`
- allow-utf8:
Allow the use of utf8 characters (32 bit), otherwise only 8 bit characters are allowed. Use this feature with caution because it
increases the cell size from 8 bits to 32 bits. It also allow you to use the emoji in your brainfuck code :D, This is if you can
preserve your mind so that you can access their digital value :). The `u32` in rust can only store values from 0 to 4294967295, but we
can only use 0 to 1114111 (0x10FFFF) for now. The alias are: `utf8`
-a, --array-size <ARRAY_SIZE>
The brainfuck array size
[default: 30000]
-w, --without-tiles
Dont print the tiles (e.g. exit code, file name, etc)
-h, --help
Print help information (use `-h` for a summary)
-V, --version
Print version information
```
</details>
### أمثلة
```bash
bfy test_code/hello_world.bf
```
```text
Hello world!
Successfully ran brainfuck source code from file: test_code/hello_world.bf
Exiting with code: 0
```
```bash
bfy -w test_code/hello_world.bf
```
```text
Hello world!
```
```bash
bfy test_code/print_hi_yooo.bf
```
```text
Hi yoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Successfully ran brainfuck source code from file: test_code/print_hi_yooo.bf
Exiting with code: 0
```
```bash
bfy -w test_code/print_hi_yooo.bf
```
```text
Hi yoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!
```
```bash
bfy test_code/like_cat.bf
```
![output](./screenshots/like_cat_output.png)
> ملاحظة: الإخراج ليس هو نفسه الإصدار الحالي للمترجم الفوري ، ولكنه مماثل لإخراج المترجم الفوري عندما أكتب الكود.
## REPL
```bash
bfy # REPL mode
```
![print @ and A in the repl](./screenshots/repl_print_at_and_A_0.1.0.png)
## لكى يفعل
- [ ] أضف المزيد من الاختبارات
- [ ] أضف المزيد من الأمثلة
- [ ] قم بإنشاء منسق brainfu * k
- [ ] أضف تمييز بناء الجملة في REPL
- [ ] أضف الإكمال التلقائي في REPL
- [ ] دعم ميزة حجم الصفيف الديناميكي
## مصادر
- [Brainfuck in Wikipedia](https://en.wikipedia.org/wiki/Brainfuck)
- [Programming in Brainfuck](http://cydathria.com/bf/brainfuck.html)
- [Brainfuck: An Eight-Instruction Turing-Complete Programming Language](http://www.muppetlabs.com/~breadbox/bf)
- [brainfuck-visualizer](https://github.com/usaikiran/brainfuck-visualizer)
- [Basics of BrainFuck](https://gist.github.com/roachhd/dce54bec8ba55fb17d3a)
- [An elegant programming language: Brainfuck](https://www.neperos.com/article/raqehg6b24ceadba)

View File

@ -5,6 +5,15 @@
</p>
# brainfuc*k interpreter: a simple brainfuc*k interpreter and REPL writen in rust 🦀
#### *Read this in other languages.*
[AR Arabic-العربية](README-ar.md)
## Features
- Run brainfuc*k code from a file 💫
- Run brainfuc*k live code from the REPL 🚀
- Support utf-8 characters including emojis 😍 (optional)
- You can control in the array size 📏
## Install
@ -188,4 +197,4 @@ bfy # REPL mode
- [Brainfuck: An Eight-Instruction Turing-Complete Programming Language](http://www.muppetlabs.com/~breadbox/bf)
- [brainfuck-visualizer](https://github.com/usaikiran/brainfuck-visualizer)
- [Basics of BrainFuck](https://gist.github.com/roachhd/dce54bec8ba55fb17d3a)
- [An elegant programming language: Brainfuck](https://www.neperos.com/article/raqehg6b24ceadba)
- [An elegant programming language: Brainfuck](https://www.neperos.com/article/raqehg6b24ceadba)

14
archpackage/.SRCINFO Normal file
View File

@ -0,0 +1,14 @@
pkgbase = bfy
pkgdesc = brainfuc*k interpreter: a simple brainfuc*k interpreter and REPL writen in rust 🦀🤪
pkgver = 0.1.1
pkgrel = 1
url = https://github.com/anas-elgarhy/bfy
arch = x86_64
license = MIT
makedepends = cargo
provides = bfy
replaces = bfy
source = bfy-0.1.1.tar.gz::https://static.crates.io/crates/bfy/bfy-0.1.1.crate
sha256sums = 7994e9b500c63e09e5ee47e72b5654c84a2130c968256cebb687fce94ec6c55b
pkgname = bfy

View File

@ -1,6 +1,6 @@
# Maintainer: Anas Elgarhy <anas.elgarhy.dev@gmail.com>
pkgname=bfy
pkgver=0.1.0
pkgver=0.1.1
pkgrel=1
epoch=
pkgdesc="brainfuc*k interpreter: a simple brainfuc*k interpreter and REPL writen in rust 🦀🤪"
@ -38,3 +38,4 @@ package() {
cd "$pkgname-$pkgver"
sudo install -Dm0755 -t "/usr/bin/" "target/release/$pkgname"
}
sha256sums=('7994e9b500c63e09e5ee47e72b5654c84a2130c968256cebb687fce94ec6c55b')

1
archpackage/bfy Submodule

@ -0,0 +1 @@
Subproject commit 56d11304b639b13de32b5bc850da6bd719bbc3a8

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 79 KiB

6
renovate.json Normal file
View File

@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View File

@ -0,0 +1,4 @@
++++++++++>>>>>+>>>+>>>+>+>>+[>++++++[-<[<<++++++++<]>>>[>>>]<<]<[<<.<]>>>[>>>]<
<++++++[-<[<<--------<]>>>[>>>]<<]<[<<<]<<.>>>>>[[-]<+<[->>+<<]>>[[-<<+>>]<->]<[
>+>>]<<<[-]>>>>]>>>[-<+>]<[->+<<<+>>]<<<<-[->+<]>[[-<+>]>+<]<<[<<+++++++++<]>>>[
>>>]<<<]<++++++[-<++++++>]<++.

6
test_code/fibonacci.bf Normal file
View File

@ -0,0 +1,6 @@
>++++++++++>+>+[
[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[
[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-
[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>
]<<<
]