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 целых чисел
|
||||
/// и возвращает введенные числа в виде последовательности
|
||||
function ReadSeqInteger(n: integer): System.Collections.Generic.IEnumerable<integer>;
|
||||
function ReadSeqInteger(n: integer): sequence of integer;
|
||||
|
||||
/// Вводит n вещественных чисел
|
||||
/// и возвращает введенные числа в виде последовательности
|
||||
function ReadSeqReal(n: integer): System.Collections.Generic.IEnumerable<real>;
|
||||
function ReadSeqReal(n: integer): sequence of real;
|
||||
|
||||
/// Вводит 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;
|
||||
|
||||
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 ==
|
||||
|
||||
implementation
|
||||
|
|
@ -1400,32 +1442,32 @@ end;
|
|||
|
||||
// == Версия 4.14. Дополнения ==
|
||||
|
||||
function ReadSeqInteger(): System.Collections.Generic.IEnumerable<integer>;
|
||||
function ReadSeqInteger(): sequence of integer;
|
||||
begin
|
||||
result := Range(1, GetInteger()).Select(e -> GetInteger()).ToArray();
|
||||
end;
|
||||
|
||||
function ReadSeqReal(): System.Collections.Generic.IEnumerable<real>;
|
||||
function ReadSeqReal(): sequence of real;
|
||||
begin
|
||||
result := Range(1, GetInteger()).Select(e -> GetReal()).ToArray();
|
||||
end;
|
||||
|
||||
function ReadSeqString(): System.Collections.Generic.IEnumerable<string>;
|
||||
function ReadSeqString(): sequence of string;
|
||||
begin
|
||||
result := Range(1, GetInteger()).Select(e -> GetString()).ToArray();
|
||||
end;
|
||||
|
||||
function ReadSeqInteger(n: integer): System.Collections.Generic.IEnumerable<integer>;
|
||||
function ReadSeqInteger(n: integer): sequence of integer;
|
||||
begin
|
||||
result := Range(1, n).Select(e -> GetInteger()).ToArray();
|
||||
end;
|
||||
|
||||
function ReadSeqReal(n: integer): System.Collections.Generic.IEnumerable<real>;
|
||||
function ReadSeqReal(n: integer): sequence of real;
|
||||
begin
|
||||
result := Range(1, n).Select(e -> GetReal()).ToArray();
|
||||
end;
|
||||
|
||||
function ReadSeqString(n: integer): System.Collections.Generic.IEnumerable<string>;
|
||||
function ReadSeqString(n: integer): sequence of string;
|
||||
begin
|
||||
result := Range(1, n).Select(e -> GetString()).ToArray();
|
||||
end;
|
||||
|
|
@ -1499,9 +1541,179 @@ begin
|
|||
result := ReadMatrString(ReadInteger,ReadInteger);
|
||||
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
|
||||
var b := self.ToArray();
|
||||
PT4.Put(b.Length);
|
||||
|
|
@ -1510,7 +1722,7 @@ begin
|
|||
end;
|
||||
|
||||
/// Выводит элементы последовательности
|
||||
procedure System.Collections.Generic.IEnumerable<T>.Write();
|
||||
procedure Write<T>(self: sequence of T); extensionmethod;
|
||||
begin
|
||||
var b := self.ToArray();
|
||||
foreach e : T in b do
|
||||
|
|
|
|||
|
|
@ -11,4 +11,8 @@ begin
|
|||
assert(s.Count = s.Length);
|
||||
var j := s.Count;
|
||||
assert(j = s.Count);
|
||||
s := 'abcdef';
|
||||
var q1 := s.Min;
|
||||
assert(q1 = 'a');
|
||||
assert(s.Min = 'a');
|
||||
end.
|
||||
|
|
@ -1567,6 +1567,10 @@ namespace PascalABCCompiler.TreeConverter
|
|||
else
|
||||
fnl.AddElement(fn);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
si = si.Next;
|
||||
}
|
||||
|
|
@ -8445,16 +8449,24 @@ namespace PascalABCCompiler.TreeConverter
|
|||
}
|
||||
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;
|
||||
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 = 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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
get
|
||||
|
|
|
|||
Loading…
Reference in a new issue