Extended ASCII на шелле

May. 13th, 2025 03:01 pm
vak: (Default)
[personal profile] vak
Попросил claude.ai сбацать скрипт на шелле, чтобы показывал таблицу символов расширенной ASCII. Вроде ничо так получилось с третьего раза: extended-ascii.sh. С детства люблю буковки разглядывать. 😀
 0240     0260 °   0300 À   0320 Ð   0340 à   0360 ð  
 0241 ¡   0261 ±   0301 Á   0321 Ñ   0341 á   0361 ñ  
 0242 ¢   0262 ²   0302 Â   0322 Ò   0342 â   0362 ò  
 0243 £   0263 ³   0303 Ã   0323 Ó   0343 ã   0363 ó  
 0244 ¤   0264 ´   0304 Ä   0324 Ô   0344 ä   0364 ô  
 0245 ¥   0265 µ   0305 Å   0325 Õ   0345 å   0365 õ  
 0246 ¦   0266 ¶   0306 Æ   0326 Ö   0346 æ   0366 ö  
 0247 §   0267 ·   0307 Ç   0327 ×   0347 ç   0367 ÷  
 0250 ¨   0270 ¸   0310 È   0330 Ø   0350 è   0370 ø  
 0251 ©   0271 ¹   0311 É   0331 Ù   0351 é   0371 ù  
 0252 ª   0272 º   0312 Ê   0332 Ú   0352 ê   0372 ú  
 0253 «   0273 »   0313 Ë   0333 Û   0353 ë   0373 û  
 0254 ¬   0274 ¼   0314 Ì   0334 Ü   0354 ì   0374 ü  
 0255 ­    0275 ½   0315 Í   0335 Ý   0355 í   0375 ý  
 0256 ®   0276 ¾   0316 Î   0336 Þ   0356 î   0376 þ  
 0257 ¯   0277 ¿   0317 Ï   0337 ß   0357 ï   0377 ÿ 

Рекурсивные типы

May. 13th, 2025 02:22 pm
vak: (бэсм-6)
[personal profile] vak
Типы в языке Си штука рекурсивная. То есть внутри описателя типа могут встречаться другие описатели типов. Грок накидал ещё несколько вариантов для тестирования парсера.

Вариант 1: Вложенная структура с простым полем
struct Outer { int x; struct Inner { int y; } inner; }
Вариант 2: Структура с указателем на себя
struct Node { int data; struct Node *next; }
Вариант 3: Указатель на функцию с параметром-структурой
void (*)(struct Pair { int x; int y; })
Вариант 4: Вложенная структура с полем-массивом
struct Container { struct Item { int value; } items[10]; }
Вариант 5: Объединение с вложенной структурой и анонимной структурой
union Variant { struct { int a; int b; }; struct Named { float x; } named; }

Типы в Си

May. 13th, 2025 01:07 am
vak: (бэсм-6)
[personal profile] vak
Тестирую парсер Си компилятора. А конкретно одно правило грамматики, называется type_name. Попросил ИИ сгенерить набор тестов, чтобы перебрать как можно больше вариантов. Вот такой список получился. Ничего важного не пропущено?

1. Simple Types

These test the "type_name : specifier_qualifier_list" branch with basic type specifiers.
  • 1. void
  • 2. char
  • 3. int
  • 4. short
  • 5. long
  • 6. float
  • 7. double
  • 8. signed
  • 9. unsigned
  • 10. bool
  • 11. _Complex
  • 12. _Imaginary
дальше начинается интересное )
vak: (Кризис так себе)
[personal profile] vak
"В Лондоне вынесли приговоры болгарам, шпионившим на Россию. Им дали от 5 до 10 лет тюрьмы"

Гады охотились на журналистов-расследователей Романа Доброхотова и Христо Грозева.
  • Орлин Русев: проведет за решеткой 10 лет и 8 месяцев;
  • Бизер Джамбазов — 10 лет и 2 месяца;
  • Катрин Иванова — 9 лет и 8 месяцев;
  • Ваня Габерова — 6 лет, 8 месяцев и 3 недели;
  • Тихомир Иванчев — 8 лет;
  • Иван Стоянов — 5 лет и 3 недели.


vak: (Путиномедвед)
[personal profile] vak
"De Raad van de Internationale Burgerluchtvaart Organisatie (ICAO-Raad) heeft maandag in Montreal geoordeeld dat de Russische Federatie verantwoordelijk is voor het neerhalen van vlucht MH17 en daarmee het Verdrag van Chicago inzake internationale burgerluchtvaart heeft geschonden. De ICAO-Raad heeft dit besluit genomen in de zaak die Nederland en Australië in 2022 hebben aangespannen tegen de Russische Federatie vanwege het neerhalen van vlucht MH17 op 17 juli 2014. Nederland en Australië zijn met dit besluit in het gelijk gesteld."

"Совет Международной организации гражданской авиации (ИКАО) в понедельник в Монреале постановил, что Российская Федерация несет ответственность за крушение самолета рейса MH17 и тем самым нарушила Чикагскую конвенцию о международной гражданской авиации. Такое решение Совет ИКАО принял по делу, возбужденному Нидерландами и Австралией в 2022 году против Российской Федерации за сбитый 17 июля 2014 года самолет рейса MH17. Принятое решение подтвердило правоту Нидерландов и Австралии."

Сколь колорадская ленточка ни вейся, а совьёшься ты в петлю ответ будет.

Скрестить /bin/sh и Scheme

May. 12th, 2025 12:25 pm
vak: (Daemon)
[personal profile] vak
Что получится, если скрестить ужа и ежа? Моток колючей проволоки. 😀

Пожалуйте вам schemesh: шелл для юникса со встроенным языком Scheme.

github.com/cosmos72/schemesh

Инициатива снизу

May. 11th, 2025 04:52 pm
vak: (Украина)
[personal profile] vak
Российские оккупанты устали ждать от начальства команды о прекращении огня и начали проявлять инициативу снизу. Осторожно, видео малоприятные.

Один где-то на Сумщине пустил себе пулю в лоб.



Другой под Запорожьем оторвал себе бошку гранатой.

vak: (Default)
[personal profile] vak
Вожусь с парсером для Си компилятора. Обнаруживаю кое-что неожиданное в языке. Как вы думаете, как должен парсер интерпретировать конструкцию вида:
foo = (bar)
Нет вопросов! - воскликнет наивный читатель. 😀 В языке Би действительно это всегда было вычисление выражения bar, взятого в скобки. Однако Си не так прост.

Всё зависит от смысла bar. Если bar определён как переменная:
int bar;
то это действительно будет вычисление значения bar и присваивание в foo. Или даже как массив int bar[] или как функция int bar(). То же самое, но уже не значение а адрес. Всё ожидаемо.

Но представим, что bar определено как тип:
typedef int bar;
Тогда конструкция превращается в приведение типа, и парсер должен ожидать дальше некое значение, например:
foo = (bar) 42;

Однако и это ещё не всё. Может оказаться, что bar определено как агрегатный тип, то есть массив или структура:
typedef int bar[];
Тогда конструкция превращается в составной литерал, и парсер должен ожидать дальше фигурные скобки со списком значений:
foo = (bar) { 42, 56, 72 };

А вы говорите: контекстно свободные грамматики. Свобода нам только снится. 😀

Лайфхак

May. 10th, 2025 04:21 pm
vak: (Daemon)
[personal profile] vak
Поставьте символ 🔅 в шелловское приглашение, и будет вам щастье.
PS1="\[\033[44m\](\h) \W\[\033[m\033[1m\] 🔅\[\033[m\] "

vak: (Default)
[personal profile] vak
Не абстрактно, а как именно они её любят. Русскии меавеав, Игорь Колбаса, верблюжье молоко из Уругвая и русские жёны.

vak: (Кризис так себе)
[personal profile] vak
Но непонятно где.

“Roscosmos, the Russian Space Agency, on Telegram states reentry at 6:24 UTC over the Indian Ocean. That is not too far (15 minutes) from our latest TUDAT model results. Two remarks: (1) this is not a reentry detection but likely another model result, based on an earlier groundbased detection during a pass over southern Russia. (2) it remains a question how serious one should take Russian State statements these days.” (отсюда)

ASDL для Си

May. 9th, 2025 11:47 pm
vak: (Знайка)
[personal profile] vak
Скормил Гроку грамматику языка Си от YACC (c11.y), и он превратил её в формальное описание абстрактного синтаксического дерева (c11.asdl). Это будет большое подспорье. По этому описанию можно создавать все нужные структуры и процедуры сериализации.
module C

-- Identifiers and basic types
type Ident = string

-- Types
type Type
= Void
| Bool
| Char(Signedness signed)
| Short(Signedness signed)
| Int(Signedness signed)
| Long(Signedness signed)
| Float
| Double
| Complex(Type base) -- _Complex float, _Complex double
| Imaginary(Type base) -- _Imaginary (non-mandated extension)
| Pointer(Type target, TypeQualifier* qualifiers)
| Array(Type element, Expr? size, TypeQualifier* qualifiers)
| Function(Type returnType, ParamList params, bool variadic)
| Struct(Ident? name, Field* fields)
| Union(Ident? name, Field* fields)
| Enum(Ident? name, Enumerator* enumerators)
| TypedefName(Ident name)
| Atomic(Type base) -- _Atomic(type_name)
attributes(TypeQualifier* qualifiers)

...еще... )
vak: (Путиномедвед)
[personal profile] vak
Алла Пугачёва написала сегодня в своём блоге: «Помянем тех, кого нет с нами, и будем думать о живых».

Помянем прежнего Путина недобрым словом и будем думать о двойнике. 😀
Page generated May. 23rd, 2025 03:45 am
Powered by Dreamwidth Studios