[cache] для одного параметра не оборачивает его в Tuple - за счет этого ускорена в 10 раз
This commit is contained in:
parent
47cc526e19
commit
104f0d43da
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "8";
|
||||
public const string Build = "3";
|
||||
public const string Revision = "3115";
|
||||
public const string Revision = "3116";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=8
|
||||
%REVISION%=3115
|
||||
%COREVERSION%=3
|
||||
%REVISION%=3116
|
||||
%MINOR%=8
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -1,24 +1,30 @@
|
|||
// Пример иллюстрирует возможности оператора foreach
|
||||
// Пример иллюстрирует возможности оператора foreach
|
||||
var
|
||||
a: array [1..5] of integer := (1,3,5,7,9);
|
||||
s: set of integer;
|
||||
l: List<integer>;
|
||||
|
||||
begin
|
||||
write('foreach по обычному массиву: ':35);
|
||||
Write('foreach по обычному массиву: ':35);
|
||||
foreach x: integer in a do
|
||||
Print(x);
|
||||
writeln;
|
||||
Println;
|
||||
|
||||
s := [2..5,10..14];
|
||||
write('foreach по множеству: ':35);
|
||||
Write('foreach по множеству: ':35);
|
||||
foreach var x in s do
|
||||
Print(x);
|
||||
writeln;
|
||||
Println;
|
||||
|
||||
l := new List<integer>;
|
||||
l.Add(7); l.Add(2); l.Add(5);
|
||||
write('foreach по динамическому массиву: ':35);
|
||||
Write('foreach по динамическому массиву: ':35);
|
||||
foreach var x in l do
|
||||
Print(x);
|
||||
Println;
|
||||
|
||||
Write('foreach по диапазону: ':35);
|
||||
foreach var x in 1..10 do
|
||||
Print(x);
|
||||
Println;
|
||||
end.
|
||||
|
|
@ -59,10 +59,6 @@ PascalABC.NET</strong>
|
|||
<p>Интегрированная среда <b>PascalABC.NET</b>
|
||||
позволяет переключать в настройках русский и английский язык, при этом
|
||||
локализованы не только элементы интерфейса, но и сообщения об ошибках.</p>
|
||||
<p>Кроме этого, внутренние представления <strong>PascalABC.NET</strong> позволяют создавать
|
||||
компиляторы других языков программирования и встраивать их в среду разработки с помощью
|
||||
специальных
|
||||
<a href="http://pascalabc.net/wiki/index.php/Плагины_для_PascalABC.NET">плагинов</a>.</p>
|
||||
<h2>Специализированные модули для обучения</h2>
|
||||
<p>Платформа Microsoft.NET обеспечивает <strong>PascalABC.NET</strong>
|
||||
стандартной библиотекой, состоящей из огромного количества класссов для решения
|
||||
|
|
@ -83,11 +79,6 @@ Taskbook</a> (
|
|||
<a href="../PABCUnits/WPFObjects/index.html">WPFObjects</a> и модуль трёхмерной
|
||||
графики <a href="../PABCUnits/Graph3D/index.html">Graph3D</a> могут быть использованы для создания простейших графических. а также
|
||||
интерактивных анимационных приложений, управляемых событиями.</p>
|
||||
<p>Следует также отметить "студенческие" модули: модуль <span lang="en-us">Collections
|
||||
</span>упрощенных коллекций, модуль <span lang="en-us">Arrays </span>для
|
||||
простейших операций с динамическими массивами и модуль Forms для ручного
|
||||
создания простых приложений с оконным пользовательским интерфейсом.</p>
|
||||
<p> </p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -35,12 +35,11 @@
|
|||
как и код на C#, и несколько медленнее, чем код на
|
||||
C++ и Delphi.</li>
|
||||
<li>PascalABC.NET является представителем линейки современных языков Паскаль
|
||||
вместе с Delphi XE и Oxygene.</li>
|
||||
вместе с Delphi и Oxygene.</li>
|
||||
<li>Мнение, что язык Паскаль устарел и утрачивает свои
|
||||
позиции, основано на представлении о старом Паскале и старых средах
|
||||
программирования (например, <span lang="en-us">Free Pascal </span>с его
|
||||
несовременной консольной оболочкой и языком <span lang="en-us">Delphi </span>
|
||||
образца 2002 года). К сожалению, масса отечественной учебной литературы
|
||||
несовременной консольной оболочкой). К сожалению, масса отечественной учебной литературы
|
||||
<span lang="ru">с упорством,
|
||||
достойным лучшего применения, </span>ориентируется на <span lang="ru">отживший
|
||||
</span>Turbo Pascal<span lang="ru"> с древней
|
||||
|
|
|
|||
|
|
@ -25,7 +25,9 @@
|
|||
<param name="Keyword" value="ToReals">
|
||||
<param name="Keyword" value="ToWords">
|
||||
<param name="Keyword" value="TryToInteger">
|
||||
<param name="Keyword" value="TryToReal"></object>
|
||||
<param name="Keyword" value="TryToReal">
|
||||
<param name="Keyword" value="TypeName">
|
||||
<param name="Keyword" value="TypeToTypeName"></object>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
|
||||
</HEAD><body><H1>Методы расширения типа string</H1>
|
||||
<table border=0 cellpadding=5><tr><td><code><b>function</b> Between(Self: string; a, b: string): boolean;</code>
|
||||
|
|
@ -94,5 +96,9 @@
|
|||
<br> Преобразует строку в целое и записывает его в value.При невозможности преобразования возвращается False</td></tr>
|
||||
<tr><td><code><b>function</b> TryToReal(Self: string; <b>var</b> value: real): boolean;</code>
|
||||
<br> Преобразует строку в вещественное и записывает его в value.При невозможности преобразования возвращается False</td></tr>
|
||||
<tr><td><code><b>function</b> TypeName(o: Object): string;</code>
|
||||
<br> Âîçâðàùàåò èìÿ òèïà îáúåêòà</td></tr>
|
||||
<tr><td><code><b>function</b> TypeToTypeName(t: System.Type): string;</code>
|
||||
<br> Äëÿ òèïà System.Type âîçâðàùàåò èìÿ òèïà îáúåêòà</td></tr>
|
||||
</table>
|
||||
</body></HTML>
|
||||
|
|
@ -30,7 +30,9 @@
|
|||
<param name="Keyword" value="RenameFile">
|
||||
<param name="Keyword" value="RmDir">
|
||||
<param name="Keyword" value="SetCurrentDir">
|
||||
<param name="Keyword" value="Sleep"></object>
|
||||
<param name="Keyword" value="Sleep">
|
||||
<param name="Keyword" value="TypeName">
|
||||
<param name="Keyword" value="TypeToTypeName"></object>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
|
||||
</HEAD><body><H1>Cèñòåìíûå ïîäïðîãðàììû</H1>
|
||||
<table border=0 cellpadding=5><tr><td><code><b>procedure</b> Assert(cond: boolean);</code>
|
||||
|
|
@ -109,5 +111,9 @@
|
|||
<br> Óñòàíàâëèâàåò òåêóùèé êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí</td></tr>
|
||||
<tr><td><code><b>procedure</b> Sleep(ms: integer);</code>
|
||||
<br> Äåëàåò ïàóçó íà ms ìèëëèñåêóíä</td></tr>
|
||||
<tr><td><code><b>function</b> TypeName(o: Object): string;</code>
|
||||
<br> Âîçâðàùàåò èìÿ òèïà îáúåêòà</td></tr>
|
||||
<tr><td><code><b>function</b> TypeToTypeName(t: System.Type): string;</code>
|
||||
<br> Äëÿ òèïà System.Type âîçâðàùàåò èìÿ òèïà îáúåêòà</td></tr>
|
||||
</table>
|
||||
</body></HTML>
|
||||
|
|
@ -136,6 +136,8 @@
|
|||
<br> Óñòàíàâëèâàåò òåêóùóþ ïîçèöèþ ðèñîâàíèÿ â òî÷êó (x,y)</td></tr>
|
||||
<tr><td><code><b>procedure</b> Pie(x, y, r, angle1, angle2: real);</code>
|
||||
<br> Ðèñóåò ñåêòîð îêðóæíîñòè ñ öåíòðîì â òî÷êå (x,y) è ðàäèóñîì r, çàêëþ÷åííûé ìåæäó äâóìÿ ëó÷àìè, îáðàçóþùèìè óãëû angle1 è angle2 ñ îñüþ OX</td></tr>
|
||||
<tr><td><code><b>procedure</b> Pie(x, y, r, angle1, angle2: real; c: Color);</code>
|
||||
<br> Đčńóĺň ńĺęňîđ îęđóćíîńňč ń öĺíňđîě â ňî÷ęĺ (x,y) č đŕäčóńîě r, çŕęëţ÷ĺííűé ěĺćäó äâóě˙ ëó÷ŕěč, îáđŕçóţůčěč óăëű angle1 č angle2 ń îńüţ OX, öâĺňîě c</td></tr>
|
||||
<tr><td><code><b>procedure</b> Polygon(points: <b>array</b> <b>of</b> Point);</code>
|
||||
<br> Ðèñóåò ìíîãîóãîëüíèê, çàäàííûé ìàññèâîì òî÷åê</td></tr>
|
||||
<tr><td><code><b>procedure</b> Polygon(points: <b>array</b> <b>of</b> Point; c: Color);</code>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<param name="Keyword" value="GrayColor">
|
||||
<param name="Keyword" value="Pnt">
|
||||
<param name="Keyword" value="RandomColor">
|
||||
<param name="Keyword" value="RandomColorBrush">
|
||||
<param name="Keyword" value="RandomPoint">
|
||||
<param name="Keyword" value="RandomPoints">
|
||||
<param name="Keyword" value="Rect">
|
||||
|
|
@ -33,6 +34,8 @@
|
|||
<br> Âîçâðàùàåò òî÷êó ñ êîîðäèíàòàìè (x,y)</td></tr>
|
||||
<tr><td><code><b>function</b> RandomColor: Color;</code>
|
||||
<br> Âîçâðàùàåò ñëó÷àéíûé öâåò</td></tr>
|
||||
<tr><td><code><b>function</b> RandomColorBrush: GBrush;</code>
|
||||
<br> Âîçâðàùàåò îäíîòîííóþ öâåòíóþ êèñòü ñëó÷àéíîãî öâåòà</td></tr>
|
||||
<tr><td><code><b>function</b> RandomPoint(w: real := 0): Point;</code>
|
||||
<br> Ôóíêöèÿ ãåíåðàöèè ñëó÷àéíîé òî÷êè â ãðàíèöàõ ýêðàíà. Íåîáÿçàòåëüíûé ïàðàìåòð w çàäà¸ò ìèíèìàëüíûé îòñòóï îò ãðàíèöû</td></tr>
|
||||
<tr><td><code><b>function</b> RandomPoints(n: integer; w: real := 0): <b>array</b> <b>of</b> Point;</code>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,15 @@
|
|||
<HTML><HEAD><object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||||
<param name="Keyword" value="Alignment">
|
||||
<param name="Keyword" value="Brushes">
|
||||
<param name="Keyword" value="Color">
|
||||
<param name="Keyword" value="Colors">
|
||||
<param name="Keyword" value="CoordType">
|
||||
<param name="Keyword" value="DrawingContext">
|
||||
<param name="Keyword" value="DrawingVisual">
|
||||
<param name="Keyword" value="FontStyle">
|
||||
<param name="Keyword" value="GBrush">
|
||||
<param name="Keyword" value="GColor">
|
||||
<param name="Keyword" value="GPen">
|
||||
<param name="Keyword" value="GPoint">
|
||||
<param name="Keyword" value="GRect">
|
||||
<param name="Keyword" value="GWindow">
|
||||
|
|
@ -16,18 +20,26 @@
|
|||
</HEAD><body><H1>Òèïû ìîäóëÿ GraphWPF</H1>
|
||||
<table border=0 cellpadding=5><tr><td><code>Alignment = (LeftTop,CenterTop,RightTop,LeftCenter,Center,RightCenter,LeftBottom,CenterBottom,RightBottom);</code>
|
||||
<br> Êîíñòàíòû âûðàâíèâàíèÿ òåêñòà îòíîñèòåëüíî òî÷êè</td></tr>
|
||||
<tr><td><code>Brushes = System.Windows.Media.Brushes;</code>
|
||||
<br> Íàáîð ïðåäîïðåäåëåííûõ êèñòåé</td></tr>
|
||||
<tr><td><code>Color = System.Windows.Media.Color;</code>
|
||||
<br> Òèï öâåòà</td></tr>
|
||||
<tr><td><code>Colors = System.Windows.Media.Colors;</code>
|
||||
<br> Öâåòîâûå êîíñòàíòû</td></tr>
|
||||
<tr><td><code>CoordType = (MathematicalCoords,StandardCoords);</code>
|
||||
<br> Âèäû ñèñòåìû êîîðäèíàò</td></tr>
|
||||
<tr><td><code>DrawingContext = System.Windows.Media.DrawingContext;</code>
|
||||
<br> Êîíòåêñò ðèñîâàíèÿ</td></tr>
|
||||
<tr><td><code>DrawingVisual = System.Windows.Media.DrawingVisual;</code>
|
||||
<br> Âèçóàëüíûé îáúåêò äëÿ îòðèñîâêè ñ ïîìîùüþ êîíòåêñòà ðèñîâàíèÿ</td></tr>
|
||||
<tr><td><code>FontStyle = (Normal,Bold,Italic,BoldItalic);</code>
|
||||
<br> Òèï ñòèëÿ øðèôòà</td></tr>
|
||||
<tr><td><code>GBrush = System.Windows.Media.Brush;</code>
|
||||
<br> Òèï êèñòè</td></tr>
|
||||
<tr><td><code>GColor = System.Windows.Media.Color;</code>
|
||||
<br> Òèï öâåòà</td></tr>
|
||||
<tr><td><code>GPen = System.Windows.Media.Pen;</code>
|
||||
<br> Òèï ïåðà</td></tr>
|
||||
<tr><td><code>GPoint = System.Windows.Point;</code>
|
||||
<br> Òèï òî÷êè</td></tr>
|
||||
<tr><td><code>GRect = System.Windows.Rect;</code>
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.8.3.3115
|
||||
3.8.3.3116
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.8.3.3115'
|
||||
!define VERSION '3.8.3.3116'
|
||||
|
|
|
|||
|
|
@ -75,7 +75,11 @@ namespace SyntaxVisitors.SugarVisitors
|
|||
|
||||
// var @tpar := Tuple.Create(все параметры)
|
||||
var tupleIdent = new ident("@tpar" + UniqueNumStr());
|
||||
var vs = new var_statement(tupleIdent,
|
||||
// SSM 08.05.22 - один параметр не надо оборачивать в кортеж
|
||||
var_statement vs;
|
||||
if (pp.Length == 1)
|
||||
vs = new var_statement(tupleIdent, pp[0].Item1 as expression);
|
||||
else vs = new var_statement(tupleIdent,
|
||||
new method_call(
|
||||
new dot_node(new dot_node("?System", "Tuple"),new ident("Create")),
|
||||
new expression_list(pp.Select(pair => pair.Item1 as expression).ToList())
|
||||
|
|
@ -88,10 +92,21 @@ namespace SyntaxVisitors.SugarVisitors
|
|||
|
||||
// var @ИмяФункцииDict := new Dictionary<типTuple, тип возвр значения функции>
|
||||
// var d := new PABCSystem.Dictionary<System.Tuple<integer,integer,real>,integer>;
|
||||
var ttp = new template_param_list(new List<type_definition>(pp.Select(pair => pair.Item2 as type_definition)));
|
||||
var ttr_tuple = new template_type_reference(new named_type_reference(new List<ident> { new ident("System"), new ident("Tuple") }),
|
||||
// SSM 08.05.22 - один параметр не надо оборачивать в кортеж
|
||||
template_param_list ttp;
|
||||
if (pp.Length == 1)
|
||||
ttp = new template_param_list(pp[0].Item2 as type_definition);
|
||||
else
|
||||
ttp = new template_param_list(new List<type_definition>(pp.Select(pair => pair.Item2 as type_definition)));
|
||||
|
||||
type_definition ttr_tuple;
|
||||
if (pp.Length == 1)
|
||||
ttr_tuple = pp[0].Item2 as type_definition;
|
||||
else
|
||||
ttr_tuple = new template_type_reference(new named_type_reference(new List<ident> { new ident("System"), new ident("Tuple") }),
|
||||
ttp
|
||||
);
|
||||
|
||||
var ttr_dict = new template_type_reference(new named_type_reference(new List<ident> { new ident("PABCSystem"), new ident("Dictionary") }),
|
||||
new template_param_list(new List<type_definition> { ttr_tuple,(pd.proc_header as function_header).return_type }));
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in a new issue