pascalabcnet/SyntaxVisitors/TeacherControl/TeacherControl.cs
Mikhalkovich Stanislav 5aceb07990 Новый LightPT - интегрирован Робот, Чертежник и модуль PT4.pas
Немного скорректирован PT4
2022-07-21 13:32:03 +03:00

55 lines
2.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PascalABCCompiler.SyntaxTree;
namespace SyntaxVisitors
{
public class TeacherControlConverter : WalkingVisitorNew
{
public static TeacherControlConverter New
{
get { return new TeacherControlConverter(); }
}
public string Name { get => "TeacherContolConverter"; }
public syntax_tree_node Convert(syntax_tree_node root)
{
try
{
var program = root as program_module;
if (program == null) // если это не главная программа, то не преобразовывать
return root;
var FileName = program.file_name;
var fi = new System.IO.FileInfo(FileName);
var SourceFileDirectory = fi.DirectoryName;
var FullLightPTName = System.IO.Path.Combine(SourceFileDirectory, "lightpt.dat");
if (!System.IO.File.Exists(FullLightPTName))
return root;
if (program.used_units == null)
program.used_units = new uses_list();
// Добавляем в начало, а секции инициализации вызываются последними
// Проверять, какой CurrentIOSystem подключен, и если не стандартный, то не подключать Light
// Пробуем добавить последними, тогда секции инициализации LightPT вызываются первыми,
// что переключает ввод на LightPT,
// а секции финализации - последними (хорошо)
// Проблема - LightPT Print перекрывает PT4.Print и - ошибка, а флаг IsPT не установлен
program.used_units.Add(new unit_or_namespace("LightPT", null));
program.used_units.Add(new unit_or_namespace("Tasks", null));
}
catch
{
}
return root;
}
}
}