not in
if (System.Environment.OSVersion.Version.Major >= 6) and (System.Environment.OSVersion.Version.Minor >= 2) then System.Console.OutputEncoding := Encoding.UTF8; School - таблица истинности - доп. параметр
This commit is contained in:
parent
a33d2cdcf1
commit
70576addb0
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "8";
|
||||
public const string Build = "1";
|
||||
public const string Revision = "2980";
|
||||
public const string Revision = "2985";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%COREVERSION%=1
|
||||
%REVISION%=2980
|
||||
%MINOR%=8
|
||||
%REVISION%=2985
|
||||
%COREVERSION%=1
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// This CSharp output file generated by Gardens Point LEX
|
||||
// Version: 1.1.3.301
|
||||
// Machine: DESKTOP-G8V08V4
|
||||
// DateTime: 21.08.2021 17:29:06
|
||||
// DateTime: 23.09.2021 17:46:26
|
||||
// UserName: ?????????
|
||||
// GPLEX input file <ABCPascal.lex>
|
||||
// GPLEX frame file <embedded resource>
|
||||
|
|
|
|||
|
|
@ -3474,11 +3474,17 @@ relop_expr
|
|||
{ $$ = $1; }
|
||||
| relop_expr relop simple_expr
|
||||
{
|
||||
$$ = new bin_expr($1, $3, $2.type, @$);
|
||||
if ($2.type == Operators.NotIn)
|
||||
$$ = new un_expr(new bin_expr($1, $3, Operators.In, @$),Operators.LogicalNOT,@$);
|
||||
else
|
||||
$$ = new bin_expr($1, $3, $2.type, @$);
|
||||
}
|
||||
| relop_expr relop new_question_expr
|
||||
{
|
||||
$$ = new bin_expr($1, $3, $2.type, @$);
|
||||
if ($2.type == Operators.NotIn)
|
||||
$$ = new un_expr(new bin_expr($1, $3, Operators.In, @$),Operators.LogicalNOT,@$);
|
||||
else
|
||||
$$ = new bin_expr($1, $3, $2.type, @$);
|
||||
}
|
||||
| is_type_expr tkRoundOpen pattern_out_param_list tkRoundClose
|
||||
{
|
||||
|
|
@ -3886,6 +3892,16 @@ relop
|
|||
{ $$ = $1; }
|
||||
| tkIn
|
||||
{ $$ = $1; }
|
||||
| tkNot tkIn
|
||||
{
|
||||
if (parsertools.build_tree_for_formatter)
|
||||
$$ = $2;
|
||||
else
|
||||
{
|
||||
$$ = $2;
|
||||
$$.type = Operators.NotIn;
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
simple_expr
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -347,6 +347,8 @@ script=
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.8.1.2980
|
||||
3.8.1.2985
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.8.1.2980'
|
||||
!define VERSION '3.8.1.2985'
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ namespace PascalABCCompiler.SyntaxTree
|
|||
//Other operators
|
||||
Assignment, // := =
|
||||
In, // in
|
||||
NotIn, // not in
|
||||
Is, // is
|
||||
As, // as
|
||||
Dereference, // ^ *
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ namespace PascalABCCompiler.SyntaxTreeConverters
|
|||
// slice_expr и slice_expr_question
|
||||
SliceDesugarVisitor.New.ProcessNode(root); // поставил раньше AssignTuplesDesugarVisitor из за var (a,b) := a[1:3];
|
||||
|
||||
// теперь коллизия с (a[1:6], a[6:11]):= (a[6:11], a[1:6]);
|
||||
// assign_tuple и assign_var_tuple
|
||||
AssignTuplesDesugarVisitor.New.ProcessNode(root); // теперь это - на семантике
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -14068,7 +14068,8 @@ procedure __InitModule;
|
|||
begin
|
||||
try
|
||||
DefaultEncoding := Encoding.GetEncoding(1251);
|
||||
System.Console.OutputEncoding := Encoding.UTF8;
|
||||
if (System.Environment.OSVersion.Version.Major >= 6) and (System.Environment.OSVersion.Version.Minor >= 2) then
|
||||
System.Console.OutputEncoding := Encoding.UTF8;
|
||||
except
|
||||
DefaultEncoding := Encoding.UTF8;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -111,7 +111,9 @@ function TrueTable(f: function(a, b, c, d, e: boolean): boolean):
|
|||
/// Выводит на монитор таблицу истинности
|
||||
/// f = 0 - только для значения функции False
|
||||
/// f = 1 - только для значения функции True
|
||||
procedure TrueTablePrint(a: array[,] of boolean; f: integer := -1);
|
||||
/// f = 2 (или не 0, 1, или отсутствует) - полная таблица истинности
|
||||
/// s = 'abcde' использует указанные буквы для именования колонок. Может отсутствовать.
|
||||
procedure TrueTablePrint(a: array[,] of boolean; f: integer := 2; s: string := 'abcde');
|
||||
|
||||
/// Заменяет последнее вхождение подстроки в строку
|
||||
procedure ReplaceLast(var Строка: string; ЧтоЗаменить, ЧемЗаменить: string);
|
||||
|
|
@ -764,15 +766,17 @@ end;
|
|||
/// Выводит на монитор таблицу истинности
|
||||
/// f = 0 - только для значения функции False
|
||||
/// f = 1 - только для значения функции True
|
||||
procedure TrueTablePrint(a: array[,] of boolean; f: integer);
|
||||
/// f = 2 (или не 0, 1, или отсутствует) - полная таблица истинности
|
||||
/// s = 'abcde' использует указанные буквы для именования колонок. Может отсутствовать.
|
||||
procedure TrueTablePrint(a: array[,] of boolean; f: integer; s: string);
|
||||
begin
|
||||
var (n, c) := (a.ColCount, 'a');
|
||||
for var i := 0 to n - 2 do
|
||||
begin
|
||||
Write(' ' + c);
|
||||
Inc(c)
|
||||
end;
|
||||
Writeln(' F');
|
||||
s := s?[:n];
|
||||
s := s.PadRight(n - 1, ' ');
|
||||
Write(' ');
|
||||
for var i := 1 to s.Length do
|
||||
Print(s[i]);
|
||||
Writeln('F');
|
||||
Writeln(' ' + (2 * n - 1) * '-');
|
||||
for var i := 0 to a.RowCount - 1 do
|
||||
if not (((f = 0) and a[i, n - 1]) or ((f = 1) and not a[i, n - 1])) then
|
||||
|
|
|
|||
6
TestSuite/notin.pas
Normal file
6
TestSuite/notin.pas
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
begin
|
||||
var a := Arr(1, 2, 3);
|
||||
Assert(6 not in a);
|
||||
Assert(4 not in a);
|
||||
Assert(not (1 not in a));
|
||||
end.
|
||||
|
|
@ -111,7 +111,9 @@ function TrueTable(f: function(a, b, c, d, e: boolean): boolean):
|
|||
/// Выводит на монитор таблицу истинности
|
||||
/// f = 0 - только для значения функции False
|
||||
/// f = 1 - только для значения функции True
|
||||
procedure TrueTablePrint(a: array[,] of boolean; f: integer := -1);
|
||||
/// f = 2 (или не 0, 1, или отсутствует) - полная таблица истинности
|
||||
/// s = 'abcde' использует указанные буквы для именования колонок. Может отсутствовать.
|
||||
procedure TrueTablePrint(a: array[,] of boolean; f: integer := 2; s: string := 'abcde');
|
||||
|
||||
/// Заменяет последнее вхождение подстроки в строку
|
||||
procedure ReplaceLast(var Строка: string; ЧтоЗаменить, ЧемЗаменить: string);
|
||||
|
|
@ -764,15 +766,17 @@ end;
|
|||
/// Выводит на монитор таблицу истинности
|
||||
/// f = 0 - только для значения функции False
|
||||
/// f = 1 - только для значения функции True
|
||||
procedure TrueTablePrint(a: array[,] of boolean; f: integer);
|
||||
/// f = 2 (или не 0, 1, или отсутствует) - полная таблица истинности
|
||||
/// s = 'abcde' использует указанные буквы для именования колонок. Может отсутствовать.
|
||||
procedure TrueTablePrint(a: array[,] of boolean; f: integer; s: string);
|
||||
begin
|
||||
var (n, c) := (a.ColCount, 'a');
|
||||
for var i := 0 to n - 2 do
|
||||
begin
|
||||
Write(' ' + c);
|
||||
Inc(c)
|
||||
end;
|
||||
Writeln(' F');
|
||||
s := s?[:n];
|
||||
s := s.PadRight(n - 1, ' ');
|
||||
Write(' ');
|
||||
for var i := 1 to s.Length do
|
||||
Print(s[i]);
|
||||
Writeln('F');
|
||||
Writeln(' ' + (2 * n - 1) * '-');
|
||||
for var i := 0 to a.RowCount - 1 do
|
||||
if not (((f = 0) and a[i, n - 1]) or ((f = 1) and not a[i, n - 1])) then
|
||||
|
|
|
|||
Loading…
Reference in a new issue