x → x (стрелочка :))
|1,2,3|.Print
This commit is contained in:
parent
b0ea0a30ca
commit
15a9445216
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "6";
|
||||
public const string Build = "3";
|
||||
public const string Revision = "2603";
|
||||
public const string Revision = "2604";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=6
|
||||
%REVISION%=2603
|
||||
%COREVERSION%=3
|
||||
%REVISION%=2604
|
||||
%MINOR%=6
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -218,7 +218,9 @@ UNICODEARROW \x890
|
|||
"<>" { yylval = new Union(); yylval.op = new op_type_node(Operators.NotEqual); return (int)Tokens.tkNotEqual; }
|
||||
"^" { yylval = new Union(); yylval.op = new op_type_node(Operators.Deref); return (int)Tokens.tkDeref; }
|
||||
"->" { yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkArrow; }
|
||||
\x2192 { yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkArrow; }
|
||||
|
||||
\u2192 { yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkArrow; }
|
||||
|
||||
\<\<expression\>\> { return (int)Tokens.tkParseModeExpression; }
|
||||
\<\<statement\>\> { return (int)Tokens.tkParseModeStatement; }
|
||||
\<\<type\>\> { return (int)Tokens.tkParseModeType; }
|
||||
|
|
|
|||
|
|
@ -3934,10 +3934,6 @@ factor
|
|||
{
|
||||
$$ = new pascal_set_constant($2 as expression_list, @$);
|
||||
}
|
||||
| tkVertParen elem_list tkVertParen
|
||||
{
|
||||
$$ = new array_const_new($2 as expression_list, @$);
|
||||
}
|
||||
| tkNot factor
|
||||
{
|
||||
$$ = new un_expr($2, $1.type, @$);
|
||||
|
|
@ -4110,6 +4106,10 @@ variable
|
|||
}
|
||||
$$ = new slice_expr_question($1 as addressed_value,fe.expr,fe.format1,fe.format2,@$);
|
||||
}
|
||||
| tkVertParen elem_list tkVertParen
|
||||
{
|
||||
$$ = new array_const_new($2 as expression_list, @$);
|
||||
}
|
||||
| variable tkRoundOpen optional_expr_list tkRoundClose
|
||||
{
|
||||
$$ = new method_call($1 as addressed_value,$3 as expression_list, @$);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -275,5 +275,6 @@ script=
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.6.3.2603
|
||||
3.6.3.2604
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.6.3.2603'
|
||||
!define VERSION '3.6.3.2604'
|
||||
|
|
|
|||
|
|
@ -4426,7 +4426,7 @@ namespace PascalABCCompiler.SyntaxTree
|
|||
|
||||
public void read_array_const_new(array_const_new _array_const_new)
|
||||
{
|
||||
read_expression(_array_const_new);
|
||||
read_addressed_value(_array_const_new);
|
||||
_array_const_new.elements = _read_node() as expression_list;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6917,7 +6917,7 @@ namespace PascalABCCompiler.SyntaxTree
|
|||
|
||||
public void write_array_const_new(array_const_new _array_const_new)
|
||||
{
|
||||
write_expression(_array_const_new);
|
||||
write_addressed_value(_array_const_new);
|
||||
if (_array_const_new.elements == null)
|
||||
{
|
||||
bw.Write((byte)0);
|
||||
|
|
|
|||
|
|
@ -54037,7 +54037,7 @@ namespace PascalABCCompiler.SyntaxTree
|
|||
///
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class array_const_new : expression
|
||||
public partial class array_const_new : addressed_value
|
||||
{
|
||||
|
||||
///<summary>
|
||||
|
|
|
|||
|
|
@ -3270,7 +3270,7 @@
|
|||
<TagIndices />
|
||||
</Tags>
|
||||
</SyntaxNode>
|
||||
<SyntaxNode Name="array_const_new" BaseName="expression">
|
||||
<SyntaxNode Name="array_const_new" BaseName="addressed_value">
|
||||
<Fields>
|
||||
<SyntaxField Name="elements" SyntaxType="expression_list" />
|
||||
</Fields>
|
||||
|
|
|
|||
|
|
@ -1941,7 +1941,7 @@ function TryReadIntegerFromString(s: string; var from: integer; var res: integer
|
|||
function TryReadRealFromString(s: string; var from: integer; var res: real): boolean;
|
||||
|
||||
///-procedure Val(s: string; var value: число; var err: integer);
|
||||
/// Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value.
|
||||
/// Преобразует строковое представление s целого или вещественного числа к числовому значению и записывает его в переменную value.
|
||||
///Если преобразование успешно, то err=0, иначе err>0
|
||||
procedure Val(s: string; var value: integer; var err: integer);
|
||||
///--
|
||||
|
|
@ -2122,6 +2122,9 @@ procedure Reverse(var s: string);
|
|||
procedure Reverse(var s: string; index, count: integer);
|
||||
/// Перемешивает динамический массив случайным образом
|
||||
procedure Shuffle<T>(a: array of T);
|
||||
/// Возвращает, совпадают ли массивы
|
||||
function ArrEqual<T>(a, b: array of T): boolean;
|
||||
|
||||
/// Сравнивает матрицы на равенство
|
||||
function MatrEqual<T>(a, b: array [,] of T): boolean;
|
||||
/// Перемешивает список случайным образом
|
||||
|
|
@ -2254,8 +2257,6 @@ function ReadArrReal(prompt: string; n: integer): array of real;
|
|||
/// Выводит приглашение к вводу и возвращает массив из n строк, введенных с клавиатуры
|
||||
function ReadArrString(prompt: string; n: integer): array of string;
|
||||
|
||||
/// Возвращает, совпадают ли массивы
|
||||
function ArrEqual<T>(a, b: array of T): boolean;
|
||||
|
||||
// -----------------------------------------------------
|
||||
//>> Подпрограммы для создания двумерных динамических массивов # Subroutines for matrixes
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ function RI64 := ReadInt64;
|
|||
function RR := ReadReal;
|
||||
function RC := ReadChar;
|
||||
function RS := ReadString;
|
||||
function RL := ReadLexem;
|
||||
|
||||
function RlnI := ReadlnInteger;
|
||||
function RlnBI := ReadlnBigInteger;
|
||||
|
|
@ -68,36 +69,126 @@ function Prln(Self: char): char; extensionmethod := Self.Println;
|
|||
function Prln(Self: boolean): boolean; extensionmethod := Self.Println;
|
||||
function Prln(Self: string): string; extensionmethod := Self.Println;
|
||||
|
||||
/// Записывает в min значение x если x<min
|
||||
procedure ReMin(var min: integer; x: integer);
|
||||
begin
|
||||
if x < min then
|
||||
min := x
|
||||
end;
|
||||
|
||||
/// Записывает в max значение x если x>max
|
||||
procedure ReMax(var max: integer; x: integer);
|
||||
begin
|
||||
if x > max then
|
||||
max := x
|
||||
end;
|
||||
|
||||
/// Записывает в min значение x если x<min
|
||||
procedure ReMin(var min: real; x: real);
|
||||
begin
|
||||
if x < min then
|
||||
min := x
|
||||
end;
|
||||
|
||||
/// Записывает в max значение x если x>max
|
||||
procedure ReMax(var max: real; x: real);
|
||||
begin
|
||||
if x > max then
|
||||
max := x
|
||||
end;
|
||||
|
||||
/// Преобразует строку в целое
|
||||
function ToI(Self: string); extensionmethod := Self.ToInteger;
|
||||
|
||||
/// Преобразует строку в вещественное
|
||||
function ToR(Self: string); extensionmethod := Self.ToReal;
|
||||
|
||||
/// Преобразует строку в массив целых
|
||||
function ToIs(Self: string); extensionmethod := Self.ToIntegers;
|
||||
|
||||
/// Преобразует строку в массив вещественных
|
||||
function ToRs(Self: string); extensionmethod := Self.ToReals;
|
||||
|
||||
function operator-(c,c1: char): integer; extensionmethod := Ord(c) - Ord(c1);
|
||||
|
||||
/// Возвращает длину строки
|
||||
function Len(Self: string): integer; extensionmethod := Self.Length;
|
||||
|
||||
/// Возвращает длину массива
|
||||
function Len<T>(Self: array of T): integer; extensionmethod := Self.Length;
|
||||
|
||||
/// Возвращает среднее элементов последовательности
|
||||
function Av(Self: sequence of integer): real; extensionmethod := Self.Average;
|
||||
/// Возвращает среднее элементов последовательности
|
||||
function Av(Self: sequence of real): real; extensionmethod := Self.Average;
|
||||
|
||||
function Dst<T>(Self: sequence of T): sequence of T; extensionmethod := Self.Distinct;
|
||||
|
||||
function Ord<T>(Self: sequence of T): sequence of T; extensionmethod := Self.Order;
|
||||
function OrdD<T>(Self: sequence of T): sequence of T; extensionmethod := Self.OrderDescending;
|
||||
|
||||
/// Преобразует последовательность в строку
|
||||
function Str<T>(Self: sequence of T): string; extensionmethod := Self.JoinToString;
|
||||
|
||||
/// Выводит последовательность, разделяя элементы пробелами
|
||||
function Pr<T>(Self: sequence of T): sequence of T; extensionmethod := Self.Print;
|
||||
/// Выводит последовательность, разделяя элементы пробелами, и переходит на новую строку
|
||||
function Prln<T>(Self: sequence of T): sequence of T; extensionmethod := Self.Println;
|
||||
|
||||
/// Возвращает инвертированную последовательность
|
||||
function Rev<T>(Self: sequence of T): sequence of T; extensionmethod := Self.Reverse;
|
||||
|
||||
/// Преобразует последовательность, используя функцию transform
|
||||
function Sel<T,T1>(Self: sequence of T; transform: T->T1): sequence of T1; extensionmethod := Self.Select(transform);
|
||||
|
||||
/// Фильтрует последовательность по условию cond
|
||||
function Wh<T>(Self: sequence of T; cond: T->boolean): sequence of T; extensionmethod := Self.Where(cond);
|
||||
|
||||
/// Преобразует последовательность в массив
|
||||
function ToA<T>(Self: sequence of T): array of T; extensionmethod := Self.ToArray;
|
||||
|
||||
/// Преобразует последовательность в список
|
||||
function ToL<T>(Self: sequence of T): List<T>; extensionmethod := Self.ToList;
|
||||
|
||||
/// Преобразует последовательность в HashSet
|
||||
function ToHS<T>(Self: sequence of T): HashSet<T>; extensionmethod := Self.ToHashSet;
|
||||
/// Преобразует последовательность в SortedSet
|
||||
function ToSS<T>(Self: sequence of T): SortedSet<T>; extensionmethod := Self.ToSortedSet;
|
||||
|
||||
/// Преобразует последовательность в HashSet
|
||||
function HS<T>(s: sequence of T): HashSet<T> := s.ToHashSet;
|
||||
/// Преобразует последовательность в SortedSet
|
||||
function SS<T>(s: sequence of T): SortedSet<T> := s.ToSortedSet;
|
||||
|
||||
/// Инвертирует последовательность
|
||||
procedure Rev<T>(a: array of T) := Reverse(a);
|
||||
|
||||
/// Возвращает индекс минимального элемента
|
||||
function IMin<T>(Self: array of T): integer; extensionmethod; where T: IComparable<T>;
|
||||
begin
|
||||
Result := Self.IndexMin;
|
||||
end;
|
||||
|
||||
/// Возвращает индекс максимального элемента
|
||||
function IMax<T>(Self: array of T): integer; extensionmethod; where T: IComparable<T>;
|
||||
begin
|
||||
Result := Self.IndexMax;
|
||||
end;
|
||||
|
||||
/// Возвращает True если массивы равны
|
||||
function Eq<T>(Self,b: array of T): boolean; extensionmethod := Self.ArrEqual(b);
|
||||
|
||||
/// Возвращает в виде массива все элементы, удовлетворяющие cond
|
||||
function Filt<T>(Self: array of T; cond: T->boolean): array of T; extensionmethod := Self.FindAll(cond);
|
||||
|
||||
/// Возвращает массив с элементами, преобразованными по правилу transform
|
||||
function Tr<T>(Self: array of T; transform: T->T): array of T; extensionmethod := Self.ConvertAll(transform);
|
||||
|
||||
/// Преобразует массив по правилу transform
|
||||
procedure Tr<T>(a: array of T; transform: T->T) := a.Transform(transform);
|
||||
|
||||
/// Возвращает индекс последнего элемента массива
|
||||
function H<T>(Self: array of T): integer; extensionmethod := Self.High;
|
||||
|
||||
|
||||
end.
|
||||
|
|
@ -1941,7 +1941,7 @@ function TryReadIntegerFromString(s: string; var from: integer; var res: integer
|
|||
function TryReadRealFromString(s: string; var from: integer; var res: real): boolean;
|
||||
|
||||
///-procedure Val(s: string; var value: число; var err: integer);
|
||||
/// Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value.
|
||||
/// Преобразует строковое представление s целого или вещественного числа к числовому значению и записывает его в переменную value.
|
||||
///Если преобразование успешно, то err=0, иначе err>0
|
||||
procedure Val(s: string; var value: integer; var err: integer);
|
||||
///--
|
||||
|
|
|
|||
|
|
@ -187,5 +187,8 @@ function Tr<T>(Self: array of T; transform: T->T): array of T; extensionmethod :
|
|||
/// Преобразует массив по правилу transform
|
||||
procedure Tr<T>(a: array of T; transform: T->T) := a.Transform(transform);
|
||||
|
||||
/// Возвращает индекс последнего элемента массива
|
||||
function H<T>(Self: array of T): integer; extensionmethod := Self.High;
|
||||
|
||||
|
||||
end.
|
||||
Loading…
Reference in a new issue