/bl

язык описания эскизов

Primary LanguageC

bl (blueprint language) -- это язык для описания чертежей

возможности

  • создание двумерных прмитивов: прямоугольник, точка, отрезок
  • вывод конечной геометрии в ascii формате
  • имеется графический интерпретатор: gbl (см. gui/)

почему всё так плохо?

потому что я только начал и возможно в будущем я добалю новые возможности

как использовать?

  • bl имеет следующий синтаксис: function-name:arg1|arg2|arg2|.../
  • bl -- интерпретируемый язык, скомпилировать интерпретатор можно при помощи make
  • в bl имеются следующие встроенные функции:
    • reta (reta:<x;y>|<you expression>/) -- выводит на экран свой второй аргумент
    • rect (rect:<x;y>|<width;lenght>/) -- возвращает прямоугольник с ккординатами x y и размерами width и lenght
    • point (point:<x;y>/) -- возвращает точку в заданные координаты
    • line (line:<x1;y1>|<x2;y2>/) -- создаёт линию с началом в x1 y1 и концом в x2 y2.
    • brush (brush:<c>|<bg;fg;bright>/) -- меняет символ кисти на c, а фон кисти, цвет самой кисти и её яркость делает равными bg fg и bright соответственно, значения принимаемые аргументами цвета: red, green, blue, black, white, azure, pink, yellow, значения принимаемые аргументом яркости: norm, bright
    • sym (sym:c/) -- делает то же что и brush но не меняет цвет, только символ
    • ~ (~:<comment text>/) -- функция комментарий
    • sleep (sleep:<time>/) -- функция приостанавливает работу программы, на время time (в секундах)
    • circle (circle:<x;y>|<d>/) -- возвращает круг с координатами x y и диаметром d
    • arc (arc:<x;y>|r|<angle1;angle2>/) -- создаёт дугу по координатам x y с радиусом r построенную между углами angle1 и angle2 доступно только в gbl
  • одной важной особенностью bl является то, что в нём присутствуют самовычисляемые функции, например: qwerty/ -- приведёт к выводу на экран qwerty/ потому как считается что это вызов самовычисляемой функции результатом которой является она сама. А запись qwerty:/ -- приведёт к выводу qwerty потому как теперь, она принимает аргумент, и результатом возвратит своё название

кому?

Вопрос достойный рассмотрения. Честно, я понятия не имею кому это может пригодиться, но оно есть, и это главное. Хотя при помощи bl удобно рисовать ascii арты (наверное)