bug fix issue #16
This commit is contained in:
parent
a09615ff30
commit
5b19c6a60a
|
|
@ -318,27 +318,27 @@ function ReadArrString(n: integer): array of string;
|
||||||
|
|
||||||
/// Вводит n целых чисел
|
/// Вводит n целых чисел
|
||||||
/// и возвращает введенные числа в виде последовательности
|
/// и возвращает введенные числа в виде последовательности
|
||||||
function ReadSeqInteger(n: integer): System.Collections.Generic.IEnumerable<integer>;
|
function ReadSeqInteger(n: integer): sequence of integer;
|
||||||
|
|
||||||
/// Вводит n вещественных чисел
|
/// Вводит n вещественных чисел
|
||||||
/// и возвращает введенные числа в виде последовательности
|
/// и возвращает введенные числа в виде последовательности
|
||||||
function ReadSeqReal(n: integer): System.Collections.Generic.IEnumerable<real>;
|
function ReadSeqReal(n: integer): sequence of real;
|
||||||
|
|
||||||
/// Вводит n строк
|
/// Вводит n строк
|
||||||
/// и возвращает введенные строки в виде последовательности
|
/// и возвращает введенные строки в виде последовательности
|
||||||
function ReadSeqString(n: integer): System.Collections.Generic.IEnumerable<string>;
|
function ReadSeqString(n: integer): sequence of string;
|
||||||
|
|
||||||
/// Вводит размер набора целых чисел и его элементы
|
/// Вводит размер набора целых чисел и его элементы
|
||||||
/// и возвращает введенный набор в виде последовательности
|
/// и возвращает введенный набор в виде последовательности
|
||||||
function ReadSeqInteger(): System.Collections.Generic.IEnumerable<integer>;
|
function ReadSeqInteger(): sequence of integer;
|
||||||
|
|
||||||
/// Вводит размер набора вещественных чисел и его элементы
|
/// Вводит размер набора вещественных чисел и его элементы
|
||||||
/// и возвращает введенный набор в виде последовательности
|
/// и возвращает введенный набор в виде последовательности
|
||||||
function ReadSeqReal(): System.Collections.Generic.IEnumerable<real>;
|
function ReadSeqReal(): sequence of real;
|
||||||
|
|
||||||
/// Вводит размер набора строк и его элементы
|
/// Вводит размер набора строк и его элементы
|
||||||
/// и возвращает введенный набор в виде последовательности
|
/// и возвращает введенный набор в виде последовательности
|
||||||
function ReadSeqString(): System.Collections.Generic.IEnumerable<string>;
|
function ReadSeqString(): sequence of string;
|
||||||
|
|
||||||
/// Вводит размер набора целых чисел и его элементы
|
/// Вводит размер набора целых чисел и его элементы
|
||||||
/// и возвращает введенный набор в виде массива
|
/// и возвращает введенный набор в виде массива
|
||||||
|
|
@ -370,6 +370,48 @@ function ReadMatrString(m,n: integer): array [,] of string;
|
||||||
/// Вводит размеры матрицы и затем строковую матрицу указанных размеров по строкам
|
/// Вводит размеры матрицы и затем строковую матрицу указанных размеров по строкам
|
||||||
function ReadMatrString(): array [,] of string;
|
function ReadMatrString(): array [,] of string;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array [,] of integer);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array [,] of real);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array [,] of string);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array [,] of integer);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array [,] of real);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array [,] of string);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array of array of integer);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array of array of real);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array of array of string);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array of array of integer);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array of array of real);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array of array of string);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: List<List<integer>>);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: List<List<real>>);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: List<List<string>>);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: List<List<integer>>);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: List<List<real>>);
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: List<List<string>>);
|
||||||
|
|
||||||
|
procedure WriteMatr<T>(a: array[,] of T);
|
||||||
|
|
||||||
|
procedure WriteMatr<T>(a: array of array of T);
|
||||||
|
|
||||||
|
procedure WriteMatr<T>(a: List<List<T>>);
|
||||||
|
|
||||||
// == Конец дополнений к версии 4.14 ==
|
// == Конец дополнений к версии 4.14 ==
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
@ -1400,32 +1442,32 @@ end;
|
||||||
|
|
||||||
// == Версия 4.14. Дополнения ==
|
// == Версия 4.14. Дополнения ==
|
||||||
|
|
||||||
function ReadSeqInteger(): System.Collections.Generic.IEnumerable<integer>;
|
function ReadSeqInteger(): sequence of integer;
|
||||||
begin
|
begin
|
||||||
result := Range(1, GetInteger()).Select(e -> GetInteger()).ToArray();
|
result := Range(1, GetInteger()).Select(e -> GetInteger()).ToArray();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ReadSeqReal(): System.Collections.Generic.IEnumerable<real>;
|
function ReadSeqReal(): sequence of real;
|
||||||
begin
|
begin
|
||||||
result := Range(1, GetInteger()).Select(e -> GetReal()).ToArray();
|
result := Range(1, GetInteger()).Select(e -> GetReal()).ToArray();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ReadSeqString(): System.Collections.Generic.IEnumerable<string>;
|
function ReadSeqString(): sequence of string;
|
||||||
begin
|
begin
|
||||||
result := Range(1, GetInteger()).Select(e -> GetString()).ToArray();
|
result := Range(1, GetInteger()).Select(e -> GetString()).ToArray();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ReadSeqInteger(n: integer): System.Collections.Generic.IEnumerable<integer>;
|
function ReadSeqInteger(n: integer): sequence of integer;
|
||||||
begin
|
begin
|
||||||
result := Range(1, n).Select(e -> GetInteger()).ToArray();
|
result := Range(1, n).Select(e -> GetInteger()).ToArray();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ReadSeqReal(n: integer): System.Collections.Generic.IEnumerable<real>;
|
function ReadSeqReal(n: integer): sequence of real;
|
||||||
begin
|
begin
|
||||||
result := Range(1, n).Select(e -> GetReal()).ToArray();
|
result := Range(1, n).Select(e -> GetReal()).ToArray();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ReadSeqString(n: integer): System.Collections.Generic.IEnumerable<string>;
|
function ReadSeqString(n: integer): sequence of string;
|
||||||
begin
|
begin
|
||||||
result := Range(1, n).Select(e -> GetString()).ToArray();
|
result := Range(1, n).Select(e -> GetString()).ToArray();
|
||||||
end;
|
end;
|
||||||
|
|
@ -1499,9 +1541,179 @@ begin
|
||||||
result := ReadMatrString(ReadInteger,ReadInteger);
|
result := ReadMatrString(ReadInteger,ReadInteger);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array [,] of integer);
|
||||||
|
begin
|
||||||
|
read(m); read(n);
|
||||||
|
a := new integer[m, n];
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
for var j := 0 to n - 1 do
|
||||||
|
read(a[i,j]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array [,] of real);
|
||||||
|
begin
|
||||||
|
read(m); read(n);
|
||||||
|
a := new real[m, n];
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
for var j := 0 to n - 1 do
|
||||||
|
read(a[i,j]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array [,] of string);
|
||||||
|
begin
|
||||||
|
read(m); read(n);
|
||||||
|
a := new string[m, n];
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
for var j := 0 to n - 1 do
|
||||||
|
read(a[i,j]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array [,] of integer);
|
||||||
|
begin
|
||||||
|
read(m);
|
||||||
|
a := new integer[m, m];
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
for var j := 0 to m - 1 do
|
||||||
|
read(a[i,j]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array [,] of real);
|
||||||
|
begin
|
||||||
|
read(m);
|
||||||
|
a := new real[m, m];
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
for var j := 0 to m - 1 do
|
||||||
|
read(a[i,j]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array [,] of string);
|
||||||
|
begin
|
||||||
|
read(m);
|
||||||
|
a := new string[m, m];
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
for var j := 0 to m - 1 do
|
||||||
|
read(a[i,j]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array of array of integer);
|
||||||
|
begin
|
||||||
|
read(m); read(n);
|
||||||
|
SetLength(a, m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a[i] := ReadArrInteger(n);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array of array of real);
|
||||||
|
begin
|
||||||
|
read(m); read(n);
|
||||||
|
SetLength(a, m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a[i] := ReadArrReal(n);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: array of array of string);
|
||||||
|
begin
|
||||||
|
read(m); read(n);
|
||||||
|
SetLength(a, m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a[i] := ReadArrString(n);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array of array of integer);
|
||||||
|
begin
|
||||||
|
read(m);
|
||||||
|
SetLength(a, m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a[i] := ReadArrInteger(m);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array of array of real);
|
||||||
|
begin
|
||||||
|
read(m);
|
||||||
|
SetLength(a, m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a[i] := ReadArrReal(m);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: array of array of string);
|
||||||
|
begin
|
||||||
|
read(m);
|
||||||
|
SetLength(a, m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a[i] := ReadArrString(m);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: List<List<integer>>);
|
||||||
|
begin
|
||||||
|
read(m); read(n);
|
||||||
|
a := new List<List<integer>>(m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a.Add(ReadSeqInteger(n).ToList);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: List<List<real>>);
|
||||||
|
begin
|
||||||
|
read(m); read(n);
|
||||||
|
a := new List<List<real>>(m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a.Add(ReadSeqReal(n).ToList);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m, n: integer; var a: List<List<string>>);
|
||||||
|
begin
|
||||||
|
read(m); read(n);
|
||||||
|
a := new List<List<string>>(m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a.Add(ReadSeqString(n).ToList);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: List<List<integer>>);
|
||||||
|
begin
|
||||||
|
read(m);
|
||||||
|
a := new List<List<integer>>(m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a.Add(ReadSeqInteger(m).ToList);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: List<List<real>>);
|
||||||
|
begin
|
||||||
|
read(m);
|
||||||
|
a := new List<List<real>>(m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a.Add(ReadSeqReal(m).ToList);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMatr(var m: integer; var a: List<List<string>>);
|
||||||
|
begin
|
||||||
|
read(m);
|
||||||
|
a := new List<List<string>>(m);
|
||||||
|
for var i := 0 to m - 1 do
|
||||||
|
a.Add(ReadSeqString(m).ToList);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure WriteMatr<T>(a: array[,] of T);
|
||||||
|
begin
|
||||||
|
for var i := 0 to a.GetLength(0)-1 do
|
||||||
|
for var j := 0 to a.GetLength(1)-1 do
|
||||||
|
write(a[i,j]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure WriteMatr<T>(a: array of array of T);
|
||||||
|
begin
|
||||||
|
for var i := 0 to a.Length-1 do
|
||||||
|
for var j := 0 to a[i].Length-1 do
|
||||||
|
write(a[i][j]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure WriteMatr<T>(a: List<List<T>>);
|
||||||
|
begin
|
||||||
|
for var i := 0 to a.Count-1 do
|
||||||
|
for var j := 0 to a[i].Count-1 do
|
||||||
|
write(a[i][j]);
|
||||||
|
end;
|
||||||
|
|
||||||
/// Выводит размер и элементы последовательности
|
/// Выводит размер и элементы последовательности
|
||||||
procedure System.Collections.Generic.IEnumerable<T>.WriteAll();
|
procedure WriteAll<T>(self: sequence of T); extensionmethod;
|
||||||
begin
|
begin
|
||||||
var b := self.ToArray();
|
var b := self.ToArray();
|
||||||
PT4.Put(b.Length);
|
PT4.Put(b.Length);
|
||||||
|
|
@ -1510,7 +1722,7 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
/// Выводит элементы последовательности
|
/// Выводит элементы последовательности
|
||||||
procedure System.Collections.Generic.IEnumerable<T>.Write();
|
procedure Write<T>(self: sequence of T); extensionmethod;
|
||||||
begin
|
begin
|
||||||
var b := self.ToArray();
|
var b := self.ToArray();
|
||||||
foreach e : T in b do
|
foreach e : T in b do
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,8 @@ begin
|
||||||
assert(s.Count = s.Length);
|
assert(s.Count = s.Length);
|
||||||
var j := s.Count;
|
var j := s.Count;
|
||||||
assert(j = s.Count);
|
assert(j = s.Count);
|
||||||
|
s := 'abcdef';
|
||||||
|
var q1 := s.Min;
|
||||||
|
assert(q1 = 'a');
|
||||||
|
assert(s.Min = 'a');
|
||||||
end.
|
end.
|
||||||
|
|
@ -1567,6 +1567,10 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
else
|
else
|
||||||
fnl.AddElement(fn);
|
fnl.AddElement(fn);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
si = si.Next;
|
si = si.Next;
|
||||||
}
|
}
|
||||||
|
|
@ -8445,16 +8449,24 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
function_node[] empty_param_methods = dm.empty_param_methods;
|
||||||
|
SymbolInfo si = new SymbolInfo(empty_param_methods[0]);
|
||||||
|
SymbolInfo root_si = si;
|
||||||
|
for (int i = 1; i < empty_param_methods.Length; i++)
|
||||||
|
{
|
||||||
|
si.Next = new SymbolInfo(empty_param_methods[i]);
|
||||||
|
si = si.Next;
|
||||||
|
}
|
||||||
compiled_function_node cfn = fn as compiled_function_node;
|
compiled_function_node cfn = fn as compiled_function_node;
|
||||||
if ((fn.parameters.Count == 1 || cfn != null && fn.parameters.Count == 2 && cfn.ConnectedToType != null)
|
if ((fn.parameters.Count == 1 || cfn != null && fn.parameters.Count == 2 && cfn.ConnectedToType != null)
|
||||||
&& (fn.parameters[fn.parameters.Count - 1].is_params || fn.parameters[fn.parameters.Count - 1].default_value != null))
|
&& (fn.parameters[fn.parameters.Count - 1].is_params || fn.parameters[fn.parameters.Count - 1].default_value != null))
|
||||||
{
|
{
|
||||||
fn = convertion_data_and_alghoritms.select_function(bfc.parameters, new SymbolInfo(fn), bfc.location);
|
fn = convertion_data_and_alghoritms.select_function(bfc.parameters, root_si, bfc.location);
|
||||||
bfc = create_static_method_call_with_params(fn, bfc.location, fn.return_value_type, true, bfc.parameters);
|
bfc = create_static_method_call_with_params(fn, bfc.location, fn.return_value_type, true, bfc.parameters);
|
||||||
}
|
}
|
||||||
else if (fn.parameters.Count == 1 && cfn != null && cfn.ConnectedToType != null)
|
else if (fn.parameters.Count == 1 && cfn != null && cfn.ConnectedToType != null)
|
||||||
{
|
{
|
||||||
fn = convertion_data_and_alghoritms.select_function(bfc.parameters, new SymbolInfo(fn), bfc.location);
|
fn = convertion_data_and_alghoritms.select_function(bfc.parameters, root_si, bfc.location);
|
||||||
bfc = create_static_method_call_with_params(fn, bfc.location, fn.return_value_type, true, bfc.parameters);
|
bfc = create_static_method_call_with_params(fn, bfc.location, fn.return_value_type, true, bfc.parameters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3871,6 +3871,36 @@ namespace PascalABCCompiler.TreeRealization
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function_node[] empty_param_methods
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
List<function_node> funcs = new List<function_node>();
|
||||||
|
foreach (base_function_call bfc in _proper_methods)
|
||||||
|
{
|
||||||
|
if (bfc.simple_function_node.parameters.Count == 0 || bfc.simple_function_node.parameters.Count == 1 && (bfc.simple_function_node.parameters[0].default_value != null || bfc.simple_function_node.parameters[0].is_params))
|
||||||
|
{
|
||||||
|
funcs.Add(bfc.simple_function_node);
|
||||||
|
}
|
||||||
|
else if (bfc.function is common_namespace_function_node)
|
||||||
|
{
|
||||||
|
common_namespace_function_node cnfn = bfc.function as common_namespace_function_node;
|
||||||
|
if (cnfn.ConnectedToType != null && (bfc.simple_function_node.parameters.Count == 1 || bfc.simple_function_node.parameters.Count == 2 && (bfc.simple_function_node.parameters[1].is_params || bfc.simple_function_node.parameters[1].default_value != null)))
|
||||||
|
{
|
||||||
|
funcs.Add(bfc.simple_function_node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (bfc.function is compiled_function_node)
|
||||||
|
{
|
||||||
|
compiled_function_node cfn = bfc.function as compiled_function_node;
|
||||||
|
if (cfn.ConnectedToType != null && (bfc.simple_function_node.parameters.Count == 1 || bfc.simple_function_node.parameters.Count == 2 && (bfc.simple_function_node.parameters[1].is_params || bfc.simple_function_node.parameters[1].default_value != null)))
|
||||||
|
funcs.Add(bfc.simple_function_node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return funcs.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public base_function_call empty_param_method
|
public base_function_call empty_param_method
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue