ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Транспилятор в Си от Юрия » Лабораторный стенд. Высказываемся, помогаем, ругаем....


Лабораторный стенд. Высказываемся, помогаем, ругаем....

Сообщений 1 страница 15 из 15

1

Если есть, что сказать - милости просим

0

2

Евгений написал(а):

Если есть, что сказать - милости просим

Хочу статью про то как делать деревья при помощи массива (или массивов) с примером в русском синтаксисе.

Отредактировано Лис (2022-05-05 01:20:29)

0

3

Евгений написал(а):

на голом С

А на Паскале можно,
в среде разработки "Borland Delphi 7"
под "Windows 10"
или низзя?

0

4

Лис написал(а):

Хочу статью про то как делать деревья при помощи массива (или массивов) с примером в русском синтаксисе.

Будет. Немножко терпения.

0

5

достаточно ли понятно я излагаю свои мысли?
Я понимаю, что кому-то любопытно, кому-то совершенно не интересно, для кого-то это примитивно и банально.

Тебе надо не только лексер, но и парсер синтаксиса, потому что нельзя просто так отличить функции от переменных.

0

6

Лис написал(а):

Тебе надо не только лексер, но и парсер синтаксиса, потому что нельзя просто так отличить функции от переменных.

А можно пример на пальцах, где после переменной идет левая круглая скобка в языке С? Что-то  мне такая конструкция в голову не приходит. В С++ возможен вызов перегруженного оператора operator(), но даже в это случае это фактически вызов функции и покрасить его, как функцию будет допустимо.

0

7

Евгений написал(а):

пример на пальцах, где после переменной идет левая круглая скобка в языке С?

Например вызов функции через указатель (т.е. через имя переменной):
https://metanit.com/cpp/c/5.11.php

0

8

Лис написал(а):

Например вызов функции через указатель (т.е. через имя переменной):
https://metanit.com/cpp/c/5.11.php

Согласен. Пример не тривиальный. Обычно я в такой блуд, как использование функции через указатель, пускаюсь крайне редко, вот и не пришло в голову. Тут я бы поступил следующим образом. Пока переменная - красим, как переменную. Когда вызов функции, уже как функцию. Более сложным моментом остается объявление такого указателя на функцию. Но и здесь я вижу несложное решение.  Раз уж Лис такой искушенный... Еще такие конструкции на ум приходят?

0

9

Евгений написал(а):

Раз уж Лис такой искушенный...

Лис матёрый, опытный и злобный вежливый зверь. Его нельзя взять и заставить делать любую работу, хоть лестью, хоть за небольшие деньги (за большие - можно).

Зато у меня есть предложение - сделаю-ка я для Вас отдельный раздел, для того, чтобы можно было всё не в двух темах обсуждать, а в нескольких.
Только я пока не знаю, как его называть. Пусть пока будет "транспилятор в Си от Юрия", потом переименую, если что...

Сообщения про AkelPad я выделил в отдельную тему.

0

10

Лис написал(а):

Хочу статью про то как делать деревья при помощи массива (или массивов) с примером в русском синтаксисе.

Отредактировано Лис (2022-05-05 01:20:29)

Мне кажется первую часть (когда деревья были массивами) я рассказал и показал. Вторая часть - это начало лексического анализатора и рисование синтаксического дерева. Ну, а как еще проверить, что парсер не врет, как сивый мерин?)
Как Лис считает, это будет подходящим примером?

0

11

Евгений написал(а):

Как Лис считает, это будет подходящим примером?

Лис не знает, что сказать. Вы же это дело не для Лиса делаете, а для себя и для разумных России. Кто такой Лис, чтобы суждения по этому поводу выносить?
Как считаете правильным - так и будет.

0

12

Будут ли использоваться в коде
директивы компилятора типа
#define, #ifdef
и т.п.
И если будут,
то будет ли раскрашиватель кода
корректно парсить дефайны?

0

13

Ссылка
#макрос    ОБЪЯВЛЕНИЕ
#вставка     "library.h"

это равносильно:

#define    ОБЪЯВЛЕНИЕ
#include     "library.h"
Раскрашивальщик двуязычный, поэтому раскраска аналогичная. Все директивы, начинающиеся с # раскрашиваются одинаково. А вот с ## уже будет некорректно.

0

14

NuShaman написал(а):

будет ли раскрашиватель кода
корректно парсить дефайны?

Если имелось в виду, будет ли различная раскраска внутри блоков #ifdef ....#else....#endif, то нет. Это имело бы смысл в серьезной IDE. В нашем случае для удобства просмотра кода достаточно более простой подсветки. А вот многострочные макросы, подсвечиваются корректно.

0

15

[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) &lt; 0) ? -(x) : (x)

</pre></td></tr></table></div></div></div>[/html]
А про многострочный макрос поторопился, еще требует доработки.

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Транспилятор в Си от Юрия » Лабораторный стенд. Высказываемся, помогаем, ругаем....