Удалил коммит со step
This commit is contained in:
parent
4a448b38eb
commit
389e9d27b2
|
|
@ -2,7 +2,7 @@
|
|||
// This CSharp output file generated by Gardens Point LEX
|
||||
// Version: 1.1.3.301
|
||||
// Machine: DESKTOP-8EAQPI9
|
||||
// DateTime: 20.06.2017 20:13:30
|
||||
// DateTime: 08.06.2017 12:30:07
|
||||
// UserName: ?????????
|
||||
// GPLEX input file <ABCPascal.lex>
|
||||
// GPLEX frame file <embedded resource>
|
||||
|
|
@ -1940,7 +1940,6 @@ string cur_yytext = yytext;
|
|||
case (int)Tokens.tkSealed:
|
||||
case (int)Tokens.tkPartial:
|
||||
case (int)Tokens.tkParams:
|
||||
case (int)Tokens.tkStep:
|
||||
case (int)Tokens.tkTo:
|
||||
case (int)Tokens.tkDownto:
|
||||
case (int)Tokens.tkUnit:
|
||||
|
|
|
|||
|
|
@ -345,7 +345,6 @@ UNICODEARROW \x890
|
|||
case (int)Tokens.tkSealed:
|
||||
case (int)Tokens.tkPartial:
|
||||
case (int)Tokens.tkParams:
|
||||
case (int)Tokens.tkStep:
|
||||
case (int)Tokens.tkTo:
|
||||
case (int)Tokens.tkDownto:
|
||||
case (int)Tokens.tkUnit:
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
%token <ti> tkDirectiveName tkAmpersend tkColon tkDotDot tkPoint tkRoundOpen tkRoundClose tkSemiColon tkSquareOpen tkSquareClose tkQuestion tkQuestionPoint tkDoubleQuestion tkQuestionSquareOpen
|
||||
%token <ti> tkSizeOf tkTypeOf tkWhere tkArray tkCase tkClass tkAuto tkConst tkConstructor tkDestructor tkElse tkExcept tkFile tkFor tkForeach tkFunction
|
||||
%token <ti> tkIf tkImplementation tkInherited tkInterface tkProcedure tkOperator tkProperty tkRaise tkRecord tkSet tkType tkThen tkUses tkVar tkWhile tkWith tkNil
|
||||
%token <ti> tkGoto tkOf tkLabel tkLock tkProgram tkEvent tkDefault tkTemplate tkPacked tkExports tkResourceString tkThreadvar tkSealed tkPartial tkTo tkDownto tkStep
|
||||
%token <ti> tkGoto tkOf tkLabel tkLock tkProgram tkEvent tkDefault tkTemplate tkPacked tkExports tkResourceString tkThreadvar tkSealed tkPartial tkTo tkDownto
|
||||
%token <ti> tkLoop
|
||||
%token <ti> tkSequence tkYield
|
||||
%token <id> tkNew
|
||||
|
|
@ -2528,11 +2528,7 @@ foreach_stmt_ident_dype_opt
|
|||
for_stmt
|
||||
: tkFor optional_var identifier for_stmt_decl_or_assign expr_l1 for_cycle_type expr_l1 optional_tk_do unlabelled_stmt
|
||||
{
|
||||
$$ = NewForStmt((bool)$2, $3, $4, $5, (for_cycle_type)$6, $7, null, $8, $9 as statement, @$);
|
||||
}
|
||||
| tkFor optional_var identifier for_stmt_decl_or_assign expr_l1 for_cycle_type expr_l1 tkStep expr_l1 optional_tk_do unlabelled_stmt
|
||||
{
|
||||
$$ = NewForStmt((bool)$2, $3, $4, $5, (for_cycle_type)$6, $7, $9, $10, $11 as statement, @$);
|
||||
$$ = NewForStmt((bool)$2, $3, $4, $5, (for_cycle_type)$6, $7, $8, $9 as statement, @$);
|
||||
}
|
||||
;
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -102,7 +102,6 @@ namespace GPPGParserScanner
|
|||
keywords.Add(Convert("record"), (int)Tokens.tkRecord);
|
||||
keywords.Add(Convert("repeat"), (int)Tokens.tkRepeat);
|
||||
keywords.Add(Convert("set"), (int)Tokens.tkSet);
|
||||
keywords.Add(Convert("step"), (int)Tokens.tkStep);
|
||||
keywords.Add(Convert("try"), (int)Tokens.tkTry);
|
||||
keywords.Add(Convert("type"), (int)Tokens.tkType);
|
||||
keywords.Add(Convert("then"), (int)Tokens.tkThen);
|
||||
|
|
|
|||
|
|
@ -172,6 +172,5 @@ script=
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -274,9 +274,9 @@ namespace GPPGParserScanner
|
|||
return nws;
|
||||
}
|
||||
|
||||
public for_node NewForStmt(bool opt_var, ident identifier, type_definition for_stmt_decl_or_assign, expression expr1, for_cycle_type fc_type, expression expr2, expression IncrementValue, token_info opt_tk_do, statement stmt, LexLocation loc)
|
||||
public for_node NewForStmt(bool opt_var, ident identifier, type_definition for_stmt_decl_or_assign, expression expr1, for_cycle_type fc_type, expression expr2, token_info opt_tk_do, statement stmt, LexLocation loc)
|
||||
{
|
||||
var nfs = new for_node(identifier, expr1, expr2, stmt, fc_type, IncrementValue, for_stmt_decl_or_assign, opt_var != false, loc);
|
||||
var nfs = new for_node(identifier, expr1, expr2, stmt, fc_type, null, for_stmt_decl_or_assign, opt_var != false, loc);
|
||||
if (opt_tk_do == null)
|
||||
{
|
||||
file_position fp = expr2.source_context.end_position;
|
||||
|
|
|
|||
|
|
@ -25,17 +25,6 @@ var
|
|||
ZazY1 := 5;
|
||||
ZazX2 := 10;
|
||||
ZazY2 := 16;
|
||||
|
||||
HelpStr := 'Разработчик исполнителя Чертежник: Михалкович С.С., 2002-17 '#10#13#10#13+
|
||||
'Команды исполнителя Чертежник:'#10#13+
|
||||
' PenDown - опустить перо'#10#13+
|
||||
' PenUp - поднять перо'#10#13
|
||||
' ToPoint(x,y) - переместиться в точку с координатами (x,y)'#10#13+
|
||||
' OnVector(a,b) - переместиться из текущей точки на вектор (a,b)'#10#13
|
||||
' a>0 - вправо, a<0 - влево, b>0 - вверх, b<0 - вниз'#10#13
|
||||
' Task(name) - вызвать задание с указанным именем'#10#13
|
||||
' StandardField - вызвать стандартное поле'#10#13
|
||||
' Field(n,m) - вызвать поле размера n на m'#10#13#10#13;
|
||||
|
||||
type
|
||||
TDMField = class
|
||||
|
|
@ -612,7 +601,18 @@ end;
|
|||
|
||||
procedure buttonHelpClick(o: Object; e: EventArgs);
|
||||
begin
|
||||
MessageBox.Show(HelpStr,'Исполнитель Чертежник - Справка');
|
||||
MessageBox.Show('Разработчик исполнителя Чертежник: Михалкович С.С., 2002-07 '#10#13#10#13+
|
||||
'Команды исполнителя Чертежник:'#10#13+
|
||||
' PenDown - опустить перо'#10#13+
|
||||
' PenUp - поднять перо'#10#13
|
||||
' ToPoint(x,y) - переместиться в точку с координатами (x,y)'#10#13+
|
||||
' OnVector(a,b) - переместиться из текущей точки на вектор (a,b)'#10#13
|
||||
' a>0 - вправо, a<0 - влево, b>0 - вверх, b<0 - вниз'#10#13
|
||||
' Speed(n) - установить скорость n (n=0..10)'#10#13
|
||||
' Stop - остановить Чертежника'#10#13
|
||||
' Start - запустить Чертежника'#10#13,
|
||||
'Исполнитель Чертежник - Справка');
|
||||
|
||||
(GraphABCControl as Control).Focus;
|
||||
end;
|
||||
|
||||
|
|
|
|||
|
|
@ -27,29 +27,6 @@ var
|
|||
LabelBadEndColor: Color;
|
||||
LabelGoodEndColor: Color;
|
||||
|
||||
HelpStr :=
|
||||
'Разработчик исполнителя Робот: Михалкович С.С., 2002-17 '#10#13#10#13+
|
||||
'Команды исполнителя Робот:'#10#13+
|
||||
' Right - вправо'#10#13+
|
||||
' Left - влево'#10#13
|
||||
' Up - вверх'#10#13+
|
||||
' Down - вниз'#10#13
|
||||
' Paint - закрасить текущую клетку'#10#13
|
||||
' Task(name) - вызвать задание с указанным именем'#10#13
|
||||
' StandardField - вызвать стандартное поле'#10#13
|
||||
' Field(n,m) - вызвать поле размера n на m'#10#13#10#13
|
||||
'Условия, проверяемые исполнителем Робот:'#10#13
|
||||
' WallFromRight - справа стена'#10#13
|
||||
' WallFromLeft - слева стена'#10#13
|
||||
' WallFromUp - сверху стена'#10#13
|
||||
' WallFromDown - снизу стена'#10#13
|
||||
' FreeFromRight - справа свободно'#10#13
|
||||
' FreeFromLeft - слева свободно'#10#13
|
||||
' FreeFromUp - сверху свободно'#10#13
|
||||
' FreeFromDown - снизу свободно'#10#13
|
||||
' CellIsPainted - клетка закрашена'#10#13
|
||||
' CellIsFree - клетка не закрашена'#10#13;
|
||||
|
||||
type
|
||||
TRobotField = class
|
||||
private
|
||||
|
|
@ -254,33 +231,35 @@ begin
|
|||
end;
|
||||
|
||||
procedure TRobotField.DrawFieldOnly;
|
||||
var ix,iy,w,h: integer;
|
||||
begin
|
||||
var w := CellSize*DimX;
|
||||
var h := CellSize*DimY;
|
||||
w := CellSize*DimX;
|
||||
h := CellSize*DimY;
|
||||
Brush.Color := clWhite;
|
||||
FillRectangle(X0,Y0,X0+w+1,Y0+h+1);
|
||||
Pen.Width := 1;
|
||||
Pen.Color := RGB(191,191,191);
|
||||
for var ix:=0 to DimX do
|
||||
for ix:=0 to DimX do
|
||||
Line(X0+ix*CellSize,Y0,X0+ix*CellSize,Y0+h);
|
||||
for var iy:=0 to DimY do
|
||||
for iy:=0 to DimY do
|
||||
Line(X0,Y0+iy*CellSize,X0+w,Y0+iy*CellSize);
|
||||
end;
|
||||
|
||||
procedure TRobotField.Draw0;
|
||||
var x,y: integer;
|
||||
begin
|
||||
DrawFieldOnly;
|
||||
Pen.Color:=clBlack;
|
||||
Pen.Width:=3;
|
||||
for var x:=1 to DimX do
|
||||
for var y:=0 to DimY do
|
||||
for x:=1 to DimX do
|
||||
for y:=0 to DimY do
|
||||
if HorizWalls[x,y] then
|
||||
begin
|
||||
MoveTo(X0+(x-1)*CellSize,Y0+y*CellSize);
|
||||
LineTo(X0+x*CellSize,Y0+y*CellSize);
|
||||
end;
|
||||
for var x:=0 to DimX do
|
||||
for var y:=1 to DimY do
|
||||
for x:=0 to DimX do
|
||||
for y:=1 to DimY do
|
||||
if VertWalls[x,y] then
|
||||
begin
|
||||
MoveTo(X0+x*CellSize,Y0+(y-1)*CellSize);
|
||||
|
|
@ -289,8 +268,8 @@ begin
|
|||
|
||||
Pen.Color:=clBlack;
|
||||
Pen.Width:=1;
|
||||
for var x:=1 to DimX do
|
||||
for var y:=1 to DimY do
|
||||
for x:=1 to DimX do
|
||||
for y:=1 to DimY do
|
||||
DrawCell(x,y);
|
||||
end;
|
||||
|
||||
|
|
@ -386,9 +365,10 @@ begin
|
|||
end;
|
||||
|
||||
procedure TRobotField.SetTagRect(x1,y1,x2,y2: integer);
|
||||
var x,y: integer;
|
||||
begin
|
||||
for var x:=x1 to x2 do
|
||||
for var y:=y1 to y2 do
|
||||
for x:=x1 to x2 do
|
||||
for y:=y1 to y2 do
|
||||
SetTag(x,y);
|
||||
end;
|
||||
|
||||
|
|
@ -568,14 +548,16 @@ begin
|
|||
end;
|
||||
|
||||
procedure TRobotField.HorizWall(x,y,len: integer);
|
||||
var xx: integer;
|
||||
begin
|
||||
for var xx:=x to x+len-1 do
|
||||
for xx:=x to x+len-1 do
|
||||
HorizWalls[xx,y] := True;
|
||||
end;
|
||||
|
||||
procedure TRobotField.VertWall(x,y,len: integer);
|
||||
var yy: integer;
|
||||
begin
|
||||
for var yy:=y to y+len-1 do
|
||||
for yy:=y to y+len-1 do
|
||||
VertWalls[x,yy] := True;
|
||||
end;
|
||||
|
||||
|
|
@ -622,15 +604,16 @@ begin
|
|||
end;
|
||||
|
||||
procedure TRobotField.Clear;
|
||||
var x,y: integer;
|
||||
begin
|
||||
for var x:=1 to Max_DimX do
|
||||
for var y:=0 to Max_DimY do
|
||||
for x:=1 to Max_DimX do
|
||||
for y:=0 to Max_DimY do
|
||||
HorizWalls[x,y] := False;
|
||||
for var x:=0 to Max_DimX do
|
||||
for var y:=1 to Max_DimY do
|
||||
for x:=0 to Max_DimX do
|
||||
for y:=1 to Max_DimY do
|
||||
VertWalls[x,y] := False;
|
||||
for var x:=1 to Max_DimX do
|
||||
for var y:=1 to Max_DimY do
|
||||
for x:=1 to Max_DimX do
|
||||
for y:=1 to Max_DimY do
|
||||
begin
|
||||
Painted[x,y] := 0;
|
||||
Tags[x,y] := False;
|
||||
|
|
@ -645,10 +628,12 @@ end;
|
|||
|
||||
function TRobotField.IsSolution: boolean;
|
||||
label 1;
|
||||
var x,y: integer;
|
||||
ID: boolean;
|
||||
begin
|
||||
var ID:=True;
|
||||
for var x:=1 to DimX do
|
||||
for var y:=1 to DimY do
|
||||
ID:=True;
|
||||
for x:=1 to DimX do
|
||||
for y:=1 to DimY do
|
||||
begin
|
||||
//ID := ID and (((Tags[x,y]=True) and ((Painted[x,y]=1) or (Painted[x,y]=2))) or ((Tags[x,y]=False) and ((Painted[x,y]=0) or (Painted[x,y]=2))));
|
||||
ID := ID and (((Tags[x,y]=True) and (Painted[x,y] in [1,2])) or ((Tags[x,y]=False) and (Painted[x,y] in [0,2])));
|
||||
|
|
@ -661,8 +646,9 @@ end;
|
|||
|
||||
//--------- Интерфейс и обработчики
|
||||
procedure LoadIni(var settings: IniSettings);
|
||||
var Ini: TIniFile;
|
||||
begin
|
||||
var Ini := new TIniFile(IniFileName);
|
||||
Ini := new TIniFile(IniFileName);
|
||||
settings.Width := Ini.ReadInteger('RobotWindow','Width',679);
|
||||
settings.Height := Ini.ReadInteger('RobotWindow','Height',490);
|
||||
settings.Left := Ini.ReadInteger('RobotWindow','Left',(Screen.PrimaryScreen.Bounds.Width-settings.Width) div 2);
|
||||
|
|
@ -692,10 +678,11 @@ begin
|
|||
end;
|
||||
|
||||
procedure SaveIni;
|
||||
var Ini: TIniFile;
|
||||
begin
|
||||
if (MainForm.Left<0) or (MainForm.Top<0) then
|
||||
exit;
|
||||
var Ini := new TIniFile(IniFileName);
|
||||
Ini := new TIniFile(IniFileName);
|
||||
Ini.WriteInteger('RobotWindow','Width',MainForm.Width);
|
||||
Ini.WriteInteger('RobotWindow','Height',MainForm.Height);
|
||||
Ini.WriteInteger('RobotWindow','Left',MainForm.Left);
|
||||
|
|
@ -710,9 +697,15 @@ begin
|
|||
halt;
|
||||
end;
|
||||
|
||||
procedure ABCWindowResize(o: Object; e: EventArgs) := CorrectWHLT;
|
||||
procedure ABCWindowResize(o: Object; e: EventArgs);
|
||||
begin
|
||||
CorrectWHLT;
|
||||
end;
|
||||
|
||||
procedure MainWindowClose := SaveIni;
|
||||
procedure MainWindowClose;
|
||||
begin
|
||||
SaveIni;
|
||||
end;
|
||||
|
||||
procedure buttonStartClick(o: Object; e: EventArgs);
|
||||
begin
|
||||
|
|
@ -741,7 +734,28 @@ end;
|
|||
|
||||
procedure buttonHelpClick(o: Object; e: EventArgs);
|
||||
begin
|
||||
MessageBox.Show(HelpStr,'Исполнитель Робот - Справка');
|
||||
MessageBox.Show('Разработчик исполнителя Робот: Михалкович С.С., 2002-07 '#10#13#10#13+
|
||||
'Команды исполнителя Робот:'#10#13+
|
||||
' Right - вправо'#10#13+
|
||||
' Left - влево'#10#13
|
||||
' Up - вверх'#10#13+
|
||||
' Down - вниз'#10#13
|
||||
' Paint - закрасить текущую клетку'#10#13
|
||||
' Speed(n) - установить скорость n (n=0..10)'#10#13
|
||||
' Stop - остановить Робота'#10#13
|
||||
' Start - запустить Робота'#10#13#10#13
|
||||
'Условия, проверяемые исполнителем Робот:'#10#13
|
||||
' WallFromRight - справа стена'#10#13
|
||||
' WallFromLeft - слева стена;'#10#13
|
||||
' WallFromUp - сверху стена;'#10#13
|
||||
' WallFromDown - снизу стена;'#10#13
|
||||
' FreeFromRight - справа свободно;'#10#13
|
||||
' FreeFromLeft - слева свободно;'#10#13
|
||||
' FreeFromUp - сверху свободно;'#10#13
|
||||
' FreeFromDown - снизу свободно;'#10#13
|
||||
' CellIsPainted - клетка закрашена;'#10#13
|
||||
' CellIsFree - клетка не закрашена.'#10#13,
|
||||
'Исполнитель Робот - Справка');
|
||||
|
||||
(GraphABCControl as Control).Focus;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -1,52 +0,0 @@
|
|||
// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
///Исполнитель Робот действует на прямоугольном клеточном поле. Между некоторыми клетками, а также по периметру поля находятся стены.
|
||||
///Основная цель Робота – закрасить указанные клетки и переместиться в конечную клетку.
|
||||
unit Робот;
|
||||
|
||||
uses Robot,RobotField;
|
||||
|
||||
procedure Вправо := Right;
|
||||
procedure Влево := Left;
|
||||
procedure Вверх := Up;
|
||||
procedure Вниз := Down;
|
||||
procedure Закрасить := Paint;
|
||||
function СправаСвободно := FreeFromRight;
|
||||
function СлеваСвободно := FreeFromLeft;
|
||||
function СверхуСвободно := FreeFromUp;
|
||||
function СнизуСвободно := FreeFromDown;
|
||||
function СправаСтена := WallFromRight;
|
||||
function СлеваСтена := WallFromLeft;
|
||||
function СверхуСтена := WallFromUp;
|
||||
function СнизуСтена := WallFromDown;
|
||||
function КлеткаНеЗакрашена := CellIsFree;
|
||||
function КлеткаЗакрашена := CellIsPainted;
|
||||
procedure Задание(имя: string) := Task(имя);
|
||||
procedure СтандартноеПоле := StandardField;
|
||||
procedure Поле(n,m: integer) := Field(n,m);
|
||||
|
||||
begin
|
||||
HelpStr :=
|
||||
'Разработчик исполнителя Робот: Михалкович С.С., 2002-17 '#10#13#10#13+
|
||||
'Команды исполнителя Робот:'#10#13+
|
||||
' Вправо'#10#13+
|
||||
' Влево'#10#13
|
||||
' Вверх'#10#13+
|
||||
' Вниз'#10#13
|
||||
' Закрасить - закрасить текущую клетку'#10#13
|
||||
' Задание(имя) - вызвать задание с указанным именем'#10#13
|
||||
' СтандартноеПоле - вызвать стандартное поле'#10#13
|
||||
' Поле(n,m) - вызвать поле размера n на m'#10#13
|
||||
'Условия, проверяемые исполнителем Робот:'#10#13
|
||||
' СправаСтена'#10#13
|
||||
' СлеваСтена'#10#13
|
||||
' СверхуСтена'#10#13
|
||||
' СнизуСтена'#10#13
|
||||
' СправаСвободно'#10#13
|
||||
' СлеваСвободно'#10#13
|
||||
' СверхуСвободно'#10#13
|
||||
' СнизуСвободно'#10#13
|
||||
' КлеткаЗакрашена'#10#13
|
||||
' КлеткаНеЗакрашена'#10#13;
|
||||
end.
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
///Исполнитель Чертежник предназначен для построения рисунков и чертежей на плоскости с координатами.
|
||||
///Чертежник имеет перо, которое он может поднимать, опускать и перемещать. При перемещении опущенного пера за ним остается след.
|
||||
unit Чертежник;
|
||||
|
||||
uses Drawman,DrawManField;
|
||||
|
||||
procedure ОпуститьПеро := PenDown;
|
||||
procedure ПоднятьПеро := PenUp;
|
||||
procedure КТочке(x,y: integer) := ToPoint(x,y);
|
||||
procedure НаВектор(a,b: integer) := OnVector(a,b);
|
||||
procedure Задание(имя: string) := Task(имя);
|
||||
procedure СтандартноеПоле := StandardField;
|
||||
procedure Поле(n,m: integer) := Field(n,m);
|
||||
|
||||
begin
|
||||
HelpStr := 'Разработчик исполнителя Чертежник: Михалкович С.С., 2002-17 '#10#13#10#13+
|
||||
'Команды исполнителя Чертежник:'#10#13+
|
||||
' ОпуститьПеро'#10#13+
|
||||
' ПоднятьПеро'#10#13
|
||||
' КТочке(x,y) - переместиться в точку с координатами (x,y)'#10#13+
|
||||
' НаВектор(a,b) - переместиться из текущей точки на вектор (a,b)'#10#13
|
||||
' a>0 - вправо, a<0 - влево, b>0 - вверх, b<0 - вниз'#10#13
|
||||
' Задание(name) - вызвать задание с указанным именем'#10#13
|
||||
' СтандартноеПоле - вызвать стандартное поле'#10#13
|
||||
' Поле(n,m) - вызвать поле размера n на m'#10#13#10#13;
|
||||
end.
|
||||
Loading…
Reference in a new issue