Форум: "Потрепаться";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
ВнизЗадание начинающим - 2 Найти похожие ветки
← →
Igorek © (2004-05-18 14:02) [0]"Написать форматтер кода Паскаля."
Просьба кидаться конструктивными мыслями.
В эту ветку буду наведываться редко.
← →
pasha_golub © (2004-05-18 14:08) [1]1. А зачем?
2. В чем форматировать? :хтмл, ртф или еще как
3. У каждого своя цветовая схема.
4. И еще раз см 1.
← →
syte_ser78 © (2004-05-18 14:21) [2]Что имеется ввиду под форматером?
Отступы для удобства чтения расставить, любой wRitelN написать как WriteLn, или что ?
← →
Mystic © (2004-05-18 14:26) [3]LEX + YACC можно использовать?
← →
Игорь Шевченко © (2004-05-18 14:27) [4]DelForEx уже написан
← →
clickmaker © (2004-05-18 14:28) [5]
> Igorek © (18.05.04 14:02)
Предложи эту идею Dmitriy O. Он тебе форматтер с анимацией сделает :)
← →
Dmitriy O. © (2004-05-18 14:29) [6]Нафиг его воще форматировать ? Если для удобства себя то зачем форматировать после написания ? Форматировать нн только во время написания кода кому так удобнее. А вот зачем написать а потом форматировать когда уже и так все ясно это нонсенс. Все равно что после драки махать кулаками.
← →
Mystic © (2004-05-18 14:45) [7]Нафиг его воще форматировать ?
Иногда попадается нечно вроде:if(outval<0)or((outval=0)and(lastsign<0))then begin outbuf[outptr]:=45;
outptr:=outptr+1;
end else if outsign>0 then begin outbuf[outptr]:=outsign;
outptr:=outptr+1;end;appval(abs(outval));
if outptr>linelength then flushbuffer;{:103};outsign:=43;outval:=outapp;
end else outval:=outval+outapp;outstate:=3;goto 20;end{:104};
0:if t<>3 then breakptr:=outptr;others:end{:102};
if t<>0 then for k:=1 to v do begin outbuf[outptr]:=outcontrib[k];
outptr:=outptr+1;end else begin outbuf[outptr]:=v;outptr:=outptr+1;end;
if outptr>linelength then flushbuffer;
if(t=0)and((v=59)or(v=125))then begin semiptr:=outptr;breakptr:=outptr;
end;if t>=2 then outstate:=1 else outstate:=0 end;{:101}{106:}
procedure sendsign(v:integer);
begin case outstate of 2,4:outapp:=outapp*v;3:begin outapp:=v;
outstate:=4;end;5:begin outval:=outval+outapp;outapp:=v;outstate:=4;end;
others:begin breakptr:=outptr;outapp:=v;outstate:=2;end end;
lastsign:=outapp;end;{:106}{107:}procedure sendval(v:integer);
label 666,10;begin case outstate of 1:begin{110:}
if(outptr=breakptr+3)or((outptr=breakptr+4)and(outbuf[breakptr]=32))then
if((outbuf[outptr-3]=68)and(outbuf[outptr-2]=73)and(outbuf[outptr-1]=86)
)or((outbuf[outptr-3]=100)and(outbuf[outptr-2]=105)and(outbuf[outptr-1]=
118))or((outbuf[outptr-3]=77)and(outbuf[outptr-2]=79)and(outbuf[outptr-1
]=68))or((outbuf[outptr-3]=109)and(outbuf[outptr-2]=111)and(outbuf[
outptr-1]=100))then goto 666{:110};outsign:=32;outstate:=3;outval:=v;
breakptr:=outptr;lastsign:=+1;end;0:begin{109:}
if(outptr=breakptr+1)and((outbuf[breakptr]=42)or(outbuf[breakptr]=47))
then goto 666{:109};outsign:=0;outstate:=3;outval:=v;breakptr:=outptr;
lastsign:=+1;end;{108:}2:begin outsign:=43;outstate:=3;outval:=outapp*v;
end;3:begin outstate:=5;outapp:=v;begin writeln(stdout);
write(stdout,"! Two numbers occurred without a sign between them");
error;end;end;4:begin outstate:=5;outapp:=outapp*v;end;
5:begin outval:=outval+outapp;outapp:=v;begin writeln(stdout);
write(stdout,"! Two numbers occurred without a sign between them");
error;end;end;{:108}others:goto 666 end;goto 10;666:{111:}
if v>=0 then begin if outstate=1 then begin breakptr:=outptr;
begin outbuf[outptr]:=32;outptr:=outptr+1;end;end;appval(v);
if outptr>linelength then flushbuffer;outstate:=1;
end else begin begin outbuf[outptr]:=40;outptr:=outptr+1;end;
begin outbuf[outptr]:=45;outptr:=outptr+1;end;appval(-v);
begin outbuf[outptr]:=41;outptr:=outptr+1;end;
← →
Игорь Шевченко © (2004-05-18 14:51) [8]Mystic © (18.05.04 14:45)
Ты зря ключевые слова выделил
← →
[lamer]Barmaglot © (2004-05-18 14:51) [9]Не такой уж страшный код, тебе чего - программу которая за тебя будет enter расставлять? Так это дело 2 минут...
P.S. По моему мнению в отличии от С++, Delphi не нуждается в форматировании, все и так достаточно понятно...
← →
syte_ser78 © (2004-05-18 14:54) [10]А че, нормально, компактненько все :).
Только вот бы еще выравнивание по ширине. Или по центру.
← →
Игорь Шевченко © (2004-05-18 14:55) [11]
> По моему мнению в отличии от С++, Delphi не нуждается в
> форматировании
Если нетрудно, поясни глубокую мысль насчет С++, чем он так отличается, что нуждается в форматировании ?
← →
Mystic © (2004-05-18 14:59) [12]> Ты зря ключевые слова выделил
Так получилось... Я не хотел...
← →
хм © (2004-05-18 15:00) [13]>[lamer]Barmaglot © (18.05.04 14:51) [9]
тогда ответь, какой уровень вложенности на 7-й, 10 и 13 строчках. И самое главное, там же GOTO :D
← →
Mystic © (2004-05-18 15:15) [14]
> Не такой уж страшный код, тебе чего - программу которая
> за тебя будет enter расставлять? Так это дело 2 минут...
Там 51 Кб текста. Как я понял, ему лет двадцать. И, возможно, сгенерен автоматически.
← →
DiamondShark © (2004-05-18 15:18) [15]Конструктивная мысль:
Распарсить текст, пользуясь формальным описанием синтаксиса,
хранить как синтаксическое дерево,
вывести обратно в текст с любым форматированием по желанию.
← →
syte_ser78 © (2004-05-18 15:23) [16]Паспарсить - это записать его с интеревалом в один парсек между символами?
← →
Игорь Шевченко © (2004-05-18 15:23) [17]DiamondShark © (18.05.04 15:18)
AFAIK, DelForEx примерно так и работает.
← →
Igorek © (2004-05-18 15:27) [18]
> pasha_golub © (18.05.04 14:08) [1]
> 1. А зачем?
> 2. В чем форматировать? :хтмл, ртф или еще как
> 3. У каждого своя цветовая схема.
> 4. И еще раз см 1.
1. В целом для учебы. По пунктам догадайся сам. :-)
2. Для начала оформить просто как класс(ы) на Паскале. Еще лучше вообще словами. Напр. "Берет файл, перемалывает, пишет куда нибуть." ;-)
3. Для начала без раскраски.
4. "И еще раз см 1." :-)
> syte_ser78 © (18.05.04 14:21) [2]
> Что имеется ввиду под форматером?
> Отступы для удобства чтения расставить, любой wRitelN написать
> как WriteLn, или что ?
> Игорь Шевченко © (18.05.04 14:27) [4]
> DelForEx уже написан
Типа DelForEx.
Кем?
> Mystic © (18.05.04 14:26) [3]
> LEX + YACC можно использовать?
Как хотите. Можете даже DelForEx. Дело вкуса.
> clickmaker © (18.05.04 14:28) [5]
> Предложи эту идею Dmitriy O. Он тебе форматтер с анимацией
> сделает :)
Хорошая идея. Дмитрий, берешься?
> Dmitriy O. © (18.05.04 14:29) [6]
> Нафиг его воще форматировать ? Если для удобства себя то
> зачем форматировать после написания ? Форматировать нн только
> во время написания кода кому так удобнее. А вот зачем написать
> а потом форматировать когда уже и так все ясно это нонсенс.
> Все равно что после драки махать кулаками.
(Хорошо бы без ошибок и внятно с запятыми). Также глянь [7] и ответь, что ты сделаешь, когда тебе скажут разобраться в этом коде?
> Mystic © (18.05.04 14:59) [12]
> Так получилось... Я не хотел...
Все равно неплохо.
2 хм
Прикольный ник. :-)
← →
Игорь Шевченко © (2004-05-18 15:39) [19]Igorek © (18.05.04 15:27)
> Типа DelForEx.
> Кем?
Egbert_van_Nes { author }
← →
Igorek © (2004-05-18 15:41) [20]
> DiamondShark © (18.05.04 15:18) [15]
> Конструктивная мысль:
>
> Распарсить текст, пользуясь формальным описанием синтаксиса,
> хранить как синтаксическое дерево,
> вывести обратно в текст с любым форматированием по желанию.
Плюсы:
- разбор пройдет до конца "в глубину"
- легкое портирование на другой язык при условии, что сама грамматика будет перед этим парситься из файла (есть у меня одна старая идея, но не скажу :-) );
Минусы:
- что делать с ошибками в коде
Замечания:
Вообще-то долго наверно будет работать если все парсить до конца. А это может быть не всегда нужно.
← →
Igorek © (2004-05-18 15:44) [21]
> Игорь Шевченко © (18.05.04 15:39) [19]
Ну я спросил с тем подтекстом, что автор то написал, но алгоритм широко не известен. Ну типа пузырьковая сортировка уже кучу раз написана, но ей учат.
← →
Mystic © (2004-05-18 15:46) [22]> Для начала оформить просто как класс(ы) на Паскале
Вообще-то, это больше задача по разбору и компиляции, тут напрашиваются медитация над книгой Дракона.
← →
Sergey_Masloff (2004-05-18 15:47) [23]Не знаю с исходниками ли DelForEx но ведь есть ptop который точно с исходниками кроссплатформенный и вообще достаточно хорош. Так что нефиг за Igorek © писать курсовые а кому интересно для обучения см. исходники - самому для этого форматтер писать не нужно просто разобраться как работает. И свое писать (если писать) на базе чего-то а не изобретая телегу с 5 колесом.
p.s ptop (и ptopu) - модули из стандартной поставки FreePascal
← →
Dmitriy O. © (2004-05-18 15:50) [24]
> Также глянь [7] и ответь, что ты сделаешь, когда тебе скажут
> разобраться в этом коде?
Ну если скажут то ! Воспользуюсь каким нить форматером кода
готовым.
← →
Игорь Шевченко © (2004-05-18 15:51) [25]
> Не знаю с исходниками ли DelForEx
С исходниками. Freeware
← →
Sergey_Masloff (2004-05-18 16:02) [26]Игорь Шевченко © (18.05.04 15:51) [25]
Ну что Free я знаю. Он же кажется на Delphi 7 Companion CD есть но там без исходников. А так вещь очень удобная.
← →
Igorek © (2004-05-18 16:56) [27]
> Sergey_Masloff (18.05.04 15:47) [23]
Так что нефиг за Igorek © писать курсовые
Правильно, нефиг. Тем более, что я курсовую не пишу (пока).
Ну так что, никого из начинающих не заинтересовала хотя бы сама идея?
> Игорь Шевченко © (18.05.04 15:51) [25]
>
> > Не знаю с исходниками ли DelForEx
>
> С исходниками.
Мама! Да там же 170 кило кода. TPascalParser использует указатели, есть непропорционально большие методы. Начинающие, давайте напишем короче и красивее.
← →
Игорь Шевченко © (2004-05-18 16:59) [28]
> Да там же 170 кило кода. TPascalParser использует указатели,
> есть непропорционально большие методы. Начинающие, давайте
> напишем короче и красивее.
По "кило кода" вполне нормально для такой программы. Я сильно сомневаюсь, чтобы начинающие могли написать меньше по размеру и безглючно. Впрочем, можешь показать пример.
← →
nikkie © (2004-05-18 18:31) [29]>Начинающие, давайте напишем короче и красивее.
себя-то к кому относишь? к начинающим или продолжающим?
ты этот код проверять будешь (типа гуру?) или по нему учиться (я уж не знаю тогда, кто ты, если у начинающих будешь учиться)?
← →
Igorek © (2004-05-19 11:17) [30]
> nikkie © (18.05.04 18:31) [29]
> >Начинающие, давайте напишем короче и красивее.
> себя-то к кому относишь?
К среднячкам. Учиться будем вместе.
← →
Некрофил-затейник © (2004-05-19 11:25) [31]Там 51 Кб текста. Как я понял, ему лет двадцать. И, возможно, сгенерен автоматически.
MIT????
← →
Mystic © (2004-05-19 12:38) [32]> MIT????
web2pas (конвертер из web в какой-то древний pascal). Сам web это TeX-оподобный язык, который при помощи этой программы перекодируется во многие алгоритмоческие языки программирования...
Например, вот часть исходников TeX:tex.web
=======
% This program is copyright (C) 1982 by D. E. Knuth; all rights are reserved.
% Copying of this file is authorized only if (1) you are D. E. Knuth, or if
% (2) you make absolutely no changes to your copy. (The WEB system provides
% for alterations via an auxiliary file; the master file should stay intact.)
% See Appendix H of the WEB manual for hints on how to install this program.
% And see Appendix A of the TRIP manual for details about how to validate it.
% TeX is a trademark of the American Mathematical Society.
% METAFONT is a trademark of Addison-Wesley Publishing Company.
% Version 0 was released in September 1982 after it passed a variety of tests.
% Version 1 was released in November 1983 after thorough testing.
% Version 1.1 fixed ``disappearing font identifiers"" et alia (July 1984).
% .......... skiped ..............
% Version 3.141 more of same; reconstituted ligatures better (March 1992).
% Version 3.1415 preserved nonexplicit kerns, tidied up (February 1993).
% Version 3.14159 allowed fontmemsize to change; bulletproofing (March 1995).
% Minor corrections to the documentation (only) were made in July 2001.
% A reward of $327.68 will be paid to the first finder of any remaining bug.
% Although considerable effort has been expended to make the TeX program
% correct and reliable, no warranty is implied; the author disclaims any
% obligation or liability for damages, including but not limited to
% special, indirect, or consequential damages arising out of or in
% connection with the use or performance of this software. This work has
% been a ``labor of love"" and the author hopes that users enjoy it.
% Here is TeX material that gets inserted after \input webmac
\def\hang{\hangindent 3em\noindent\ignorespaces}
\def\hangg#1 {\hang\hbox{#1 }}
\def\textindent#1{\hangindent2.5em\noindent\hbox to2.5em{\hss#1 }\ignorespaces}
\font\ninerm=cmr9
\let\mc=\ninerm % medium caps for names like SAIL
\def\PASCAL{Pascal}
\def\ph{\hbox{Pascal-H}}
\def\pct!{{\char`\%}} % percent sign in ordinary text
\font\logo=logo10 % font used for the METAFONT logo
\def\MF{{\logo META}\-{\logo FONT}}
\def\<#1>{$\langle#1\rangle$}
\def\section{\mathhexbox278}
% ............ skiped .............
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.037 c