Если есть, что сказать - милости просим
Лабораторный стенд. Высказываемся, помогаем, ругаем....
Сообщений 1 страница 15 из 15
Поделиться22022-05-05 01:19:39
Если есть, что сказать - милости просим
Хочу статью про то как делать деревья при помощи массива (или массивов) с примером в русском синтаксисе.
Отредактировано Лис (2022-05-05 01:20:29)
Поделиться32022-05-05 07:07:38
на голом С
А на Паскале можно,
в среде разработки "Borland Delphi 7"
под "Windows 10"
или низзя?
Поделиться42022-05-05 07:27:23
Хочу статью про то как делать деревья при помощи массива (или массивов) с примером в русском синтаксисе.
Будет. Немножко терпения.
Поделиться52022-05-06 16:54:25
достаточно ли понятно я излагаю свои мысли?
Я понимаю, что кому-то любопытно, кому-то совершенно не интересно, для кого-то это примитивно и банально.
Тебе надо не только лексер, но и парсер синтаксиса, потому что нельзя просто так отличить функции от переменных.
Поделиться62022-05-06 17:31:42
Тебе надо не только лексер, но и парсер синтаксиса, потому что нельзя просто так отличить функции от переменных.
А можно пример на пальцах, где после переменной идет левая круглая скобка в языке С? Что-то мне такая конструкция в голову не приходит. В С++ возможен вызов перегруженного оператора operator(), но даже в это случае это фактически вызов функции и покрасить его, как функцию будет допустимо.
Поделиться72022-05-06 17:38:55
пример на пальцах, где после переменной идет левая круглая скобка в языке С?
Например вызов функции через указатель (т.е. через имя переменной):
https://metanit.com/cpp/c/5.11.php
Поделиться82022-05-06 18:09:53
Например вызов функции через указатель (т.е. через имя переменной):
https://metanit.com/cpp/c/5.11.php
Согласен. Пример не тривиальный. Обычно я в такой блуд, как использование функции через указатель, пускаюсь крайне редко, вот и не пришло в голову. Тут я бы поступил следующим образом. Пока переменная - красим, как переменную. Когда вызов функции, уже как функцию. Более сложным моментом остается объявление такого указателя на функцию. Но и здесь я вижу несложное решение. Раз уж Лис такой искушенный... Еще такие конструкции на ум приходят?
Поделиться92022-05-07 01:33:35
Раз уж Лис такой искушенный...
Лис матёрый, опытный и злобный вежливый зверь. Его нельзя взять и заставить делать любую работу, хоть лестью, хоть за небольшие деньги (за большие - можно).
Зато у меня есть предложение - сделаю-ка я для Вас отдельный раздел, для того, чтобы можно было всё не в двух темах обсуждать, а в нескольких.
Только я пока не знаю, как его называть. Пусть пока будет "транспилятор в Си от Юрия", потом переименую, если что...
Сообщения про AkelPad я выделил в отдельную тему.
Поделиться102022-05-12 00:57:46
Хочу статью про то как делать деревья при помощи массива (или массивов) с примером в русском синтаксисе.
Отредактировано Лис (2022-05-05 01:20:29)
Мне кажется первую часть (когда деревья были массивами) я рассказал и показал. Вторая часть - это начало лексического анализатора и рисование синтаксического дерева. Ну, а как еще проверить, что парсер не врет, как сивый мерин?)
Как Лис считает, это будет подходящим примером?
Поделиться112022-05-12 01:43:34
Как Лис считает, это будет подходящим примером?
Лис не знает, что сказать. Вы же это дело не для Лиса делаете, а для себя и для разумных России. Кто такой Лис, чтобы суждения по этому поводу выносить?
Как считаете правильным - так и будет.
Поделиться122022-05-18 13:56:33
Будут ли использоваться в коде
директивы компилятора типа
#define, #ifdef и т.п.
И если будут,
то будет ли раскрашиватель кода
корректно парсить дефайны?
Поделиться132022-05-18 16:44:20
Ссылка
#макрос ОБЪЯВЛЕНИЕ
#вставка "library.h"
это равносильно:
#define ОБЪЯВЛЕНИЕ
#include "library.h"
Раскрашивальщик двуязычный, поэтому раскраска аналогичная. Все директивы, начинающиеся с # раскрашиваются одинаково. А вот с ## уже будет некорректно.
Поделиться142022-05-18 16:49:25
будет ли раскрашиватель кода
корректно парсить дефайны?
Если имелось в виду, будет ли различная раскраска внутри блоков #ifdef ....#else....#endif, то нет. Это имело бы смысл в серьезной IDE. В нашем случае для удобства просмотра кода достаточно более простой подсветки. А вот многострочные макросы, подсвечиваются корректно.
Поделиться152022-05-18 18:41:39
[html]<head>
<meta charset="UTF-8"><style>
.code{display:block;overflow-x:auto;color:#ffaa00;font-family:'Courier New'; font-size:10pt;tab-size: 4;background:#2b211c}
.c {color:#707070;font-style:italic}
.d {color:#ff3a83}
.del1 {color:#a6deff}
.del2 {color:#ffaa00}
.o {color:#f6f080}
.keyw {color:#37a8ed}
.var {color:#ffffff}
.i {color:#ffffff}
.f {color:#a6deff}
.str {color:#80ff80;font-style:italic}
.macro {color:#9f9fd0;font-style:italic}
LI {background:#2b211c; padding:0.2em; padding-left:0.5em}
.rownumber {background:#3b312c;color:#abb2bf}
</style></head>
<div class="code-box"><strong class="legend" >Код:</strong><div class="blockcode"><div class="scrollbox" style="overflow: auto; height: 40em"><table class = "code"><tr><td style="border: 1px solid #2b211c;background:#2b211c"><pre class = "rownumber" style="margin: 0; line-height: 150%"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td style="border: 1px solid #2b211c;background:#2b211c"><pre class = "code" style="margin: 0; line-height: 150%"><span class="macro">#вставка "library.h"
#include "library.h"
#макрос МАКС 255
#define MAX 255
#если_есть МАКС
</span>симв <span class="i">строка</span>[<span class="i">МАКС</span>];
<span class="macro">#иначе
</span>симв <span class="i">строка</span>[<span class="d">127</span>];
<span class="macro">#к_если
#ifdef MAX
</span>char <span class="i">str</span>[<span class="i">MAX</span>];
<span class="macro">#else
</span>char <span class="i">str</span>[<span class="d">127</span>];
<span class="macro">#endif
#define ABS(x) ((x) < 0) ? -(x) : (x)
</pre></td></tr></table></div></div></div>[/html]
А про многострочный макрос поторопился, еще требует доработки.