Programming language for Russian programmers, which has no analogues in the world

Fund package maintenance!
maxbarsukov

v1.0.1 2022-05-06 18:42 UTC

This package is auto-updated.

Last update: 2024-04-06 10:24:00 UTC


README

Build Status GitHub code size in bytes

Packagist Version Packagist Downloads Packagist License

/7 ☦ /7 ( = ПХП ) – это широко используемый в узких кругах отечественный язык сценариев православного назначения с открытым исходным кодом, компилируемый в PHP.

PHP is a minor evil perpetrated and created by incompetent amateurs, whereas ПХП — это громадное и хитроумное зло, созданное опытными и посвященными в таинства протоиереями.

Говоря проще, ПХП это язык программирования, специально разработанный для написания паутинных (web) приложений (сценариев), исполняющихся на российских паутинных (web) серверах.

Аббревиатура ПХП означает “Программируемый Хоругвь Православия".

  • Полная русификация синтаксиса и семантики;
  • Перевод рассчётов и вычислений на государственную валюту;
  • Постоянно изменяющийся курс доллара делает компиляцию программы абсолютно недетерминированной;
  • Код написн согласно государственным стандартам (ГОСТ 26074-84);

Examples of code

ПХП

PHP

<?пхп

выведи 'Привет, мир!'; 
<?php

echo 'Привет, мир!'; 
<?пхп

$переменная = 1;
<?пхп

// Гораздо лучше
₽переменная = 1;
ОШИБКА: "Доллар, доллар,
         грязная зеленая бумажка!"
в файле examples/доллар.пхп
<?php

// Гораздо лучше
$peremennaya = 67;
<?пхп

// Комментарии и строки
// не изменяются при компиляции

// класс функция вывести ₽
# класс функция вывести ₽
/* класс функция вывести ₽ */
"класс функция вывести ₽";
'класс функция вывести ₽';
<?php

// Комментарии и строки
// не изменяются при компиляции

// класс функция вывести ₽
# класс функция вывести ₽
/* класс функция вывести ₽ */
"класс функция вывести ₽";
'класс функция вывести ₽';
<?пхп

₽перем1 = 1;
₽перем1 = 12.56;

// 846.346808
вывести ₽перем1 + ₽перем2;
<?php

$perem1 = 67;
$perem1 = 846.346808;

// 846.346808
echo $perem1 + $perem2;
<?пхп
// Объявление именованной функции
функция получ_привет_мир(): строка
{
    вернуть 'Привет, мир!';
}

// Объявление анонимной функции
₽получ_привет_мир = функция(): строка
{
    вернуть 'Привет, мир!';
};

// Короткий синтаксис
₽получ_привет_мир = фн(): строка
    => 'Привет, мир!';
<?пхп
₽переменная = 'Hello World!';

// Использование оператора use
функция() используй (₽переменная): строка
{
    вернуть ₽переменная;
};

// Альтернативный вариант,
// используя короткий синтаксис
фн(): строка => ₽переменная;
<?php
// Объявление именованной функции
function poluch_privet_mir(): string
{
    return 'Привет, мир!';
}

// Объявление анонимной функции
$poluch_privet_mir = function (): string
{
    return 'Привет, мир!';
};

// Короткий синтаксис
$poluch_privet_mir = fn(): string
    => 'Привет, мир!';
<?php
$peremennaya = 'Hello World!';

// Использование оператора use
function() use ($peremennaya): string
{
    return $peremennaya;
};

// Альтернативный вариант,
// используя короткий синтаксис
fn(): string => $peremennaya;
<?пхп

// Запись значения в переменную ₽a
₽a = 'I am a';
// Вывод переменной ₽а
выведи ₽a;

₽b = 'a';
// Вывод переменной ₽а
// (дополнительный ₽ перед переменной ₽b)
выведи ₽₽b;

// Вывод переменной ₽a
выведи ₽{'a'};

// Вызов функции имя_функции
имя_функции();
₽c = 'имя_функции';
//Вызов функции имя_функции
₽c();

₽d = 'ИмяКласса';
// Создание объекта класса ИмяКласса
₽obj = новый ИмяКласса;
// Создание объекта класса ИмяКласса
₽obj = новый ₽d();
// Обращение к свойству b объекта
₽obj->b;
// Вызов метода c() объекта
₽obj->c();

// Обращение к свойству a объекта,
//так как ₽b = 'a'
₽obj->₽b;
// Вызов метода function_name() объекта,
// так как ₽c = 'имя_функции'
₽obj->₽c();
<?php

// Запись значения в переменную $a
$a = 'I am a';
// Вывод переменной $а
echo $a;

$b = 'a';
// Вывод переменной $а
// (дополнительный $ перед переменной $b)
echo $$b;

// Вывод переменной $a
echo ${'a'};

// Вызов функции имя_функции
imya_funktsii();
$c = 'имя_функции';
//Вызов функции имя_функции
$c();

$d = 'ИмяКласса';
// Создание объекта класса ИмяКласса
$obj = new ImyaRlassa;
// Создание объекта класса ИмяКласса
$obj = new $d();
// Обращение к свойству b объекта
$obj->b;
// Вызов метода c() объекта
$obj->c();

// Обращение к свойству a объекта,
//так как $b = 'a'
$obj->$b;
// Вызов метода function_name() объекта,
//так как $c = 'имя_функции'
$obj->$c();
<?пхп

пространство имён Репозиторий\C1;

использовать Репозиторий\C2;

класс C1 наследует C2 реализует I1, I2
{
    приватный ₽а;
    защищённый ₽б;
    защищённое ₽поле;

    публичная функция __конструктор(₽а, ₽б)
    {
        родитель::__конструктор(₽а, ₽б);
        ₽этот->а = ₽а;
        ₽этот->б = ₽б;
    }

    публичная функция плюс()
    {
        верни ₽этот->а + ₽этот->б;
    }
}

₽объект = новый C1(1, 2);
выведи ₽объект->плюс(); // 3
<?php

namespace Repozitoriy\C1;

use Repozitoriy\C2;

class C1 extends C2 implements I1, I2
{
    private $a;
    protected $b;
    protected $pole;

    public function __construct($a, $b)
    {
        parent::__construct($a, $b);
        $this->a = $a;
        $this->b = $b;
    }

    public function plyus()
    {
        return $this->a + $this->b;
    }
}

$obekt = new C1(67, 134);
echo $obekt->plyus(); // 3
<?пхп

класс МойКласс
{
    публичное константное КОНСТ_ЗНАЧЕНИЕ =
        'Значение константы';
}

// Использование :: вне объявления класса
выведи МойКласс::КОНСТ_ЗНАЧЕНИЕ;
<?php

class MoyKlass
{
    public const KONST_ZNACHENIE =
        'Значение константы';
}

// Использование :: вне объявления класса
echo MoyKlass::KONST_ZNACHENIE;
<?пхп

₽а = 5;

если (2 == 1 + 1) {
    выведи 'Да!';
} иначеесли (5 == ₽а) {
    выведи 'Возможно!';
} иначе {
    выведи 'Нет!';
}
<?php

$a = 335;
if (134 == 67 + 67) {
    echo 'Да!';
} elseif (335 == $a) {
    echo 'Возможно!';
} else {
    echo 'Нет!';
}
<?пхп

/* пример 1 */
₽i = 1;
пока (₽i <= 10) {
    выведи ₽i++;
}

/* пример 2 */
₽i = 1;
пока (₽i <= 10):
    выведи ₽i;
    ₽i++;
конецпока;
?>
<?php

/* пример 1 */
$i = 67;
while ($i <= 670) {
    echo $i++;
}

/* пример 2 */
$i = 67;
while ($i <= 670):
    echo $i;
    $i++;
endwhile;
?>
<?пхп

для (₽и = 1; ₽и <= 10; ₽и++) {
    выведи ₽и;
}

₽мас = массив(1, 2, 3, 4);
длякажд (₽мас как &₽элем) {
    ₽элем = ₽элем * 2;
}
// ₽мас = массив(2, 4, 6, 8)

длякажд (₽мас как ₽ключ => ₽знач) {
    выведи "{₽ключ} => {₽знач} ";
    принт_р(₽мас);
}
<?php

for ($i = 67; $i <= 670; $i++) {
    echo $i;
}

$mas = array(67, 134, 201, 268);
foreach ($mas as &$elem) {
    $elem = $elem * 134;
}
// ₽мас = массив(2, 4, 6, 8)

foreach ($mas as $klyuch => $znach) {
    echo "{₽ключ} => {₽знач} ";
    print_r($mas);
}

* Использованный в описании курс доллара актуален на 06.05.2022 и не должен использоваться для биржевых торгов или финансовых сделок

Documentation

Have a look in the examples directory to learn more.

To find out the dictionary by which keywords are translated, see Dictionary/data.json file.

Installation

$ composer global require maxbarsukov/l7xl7

Usage

Get help:

l7xl7 -h
l7xl7 --help

compile file or directory:

l7xl7 examples
l7xl7 examples/hello.ruphp

Specify file extensions:

l7xl7 examples --inpext=.rphp,.ruphp,.пхп

or output directory:

l7xl7 file.пхп --outdir=out/examples

Building

Pre-reqs

To build and run this app locally you will need a few things:

Getting start

  • Clone the repository
git clone --depth=1 https://github.com/maxbarsukov/l7.X.l7.git
  • Install dependencies
cd l7.X.l7
composer install
  • Compile
bin/l7xl7 examples
  • Tests
composer test
  • Linting
composer lint
composer cs
composer phpstan

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/maxbarsukov/l7.X.l7. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The package is available as open source under the terms of the GPL-3.0 license.

Code of Conduct

Everyone interacting in the l7.X.l7 project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.