pascalabcnet / pascalabcnet Goto Github PK
View Code? Open in Web Editor NEWThe new generation Pascal programming language for .NET
Home Page: http://pascalabc.net
The new generation Pascal programming language for .NET
Home Page: http://pascalabc.net
test
type
someclass = class
procedure genproc<T>(var x, y: T);
begin
end;
procedure Test(A, b: integer);
begin
genproc(a, b);
end;
end;
begin
end.
Такой код:
procedure Print1(self: array [,] of T); extensionmethod;
begin
write(self[0,0].ToString());
end;
begin
var a := MatrixRandom(3,4);
a.Print1;
end.
вызывает исключение "Ошибка времени выполнения: Среда выполнения Common Language Runtime обнаружила недопустимую программу."
var n: integer := 2;
const a = n*2; // компилируется, что неверно
const b = n; // не компилируется, что верно
begin
end.
begin
var f:(integer=2,integer=8);
writeln(f);
end.
Хотелось бы иметь какое-то простое руководство для сборки. Желательно, под разные OS. До тех пор вряд ли стоит рассчитывать на подключение сторонних сил.
function operator+<T1,T2,T3,T4>(a: System.Tuple<T1,T2>; b: System.Tuple<T3,T4>): System.Tuple<T1,T2,T3,T4>;
begin
Result := Rec(a.Item1,a.Item2,b.Item1,b.Item2)
end;
begin
Print(Rec(1,2)+Rec(3,4));
end.
var i := s.ToInteger;
i.
На синтаксическом уровне сделать узлы, позволяющие вызывать функции из PABCSystem
Сейчас это невозможно если кто-то объявит переменную с именем PABCSystem
Сделать видимо наподобие ?PABCSystem
var OnProcessCommand: string ->();
Интеллисенс выводит тип OnProcessCommand наоборот
var ss := 'dsghfgs';
var r := new Regex('<img[^>]*src="([^"]*)"');
var h := new HashSet<string>;
foreach var x in r.Matches(ss) do
h.Add(x.Groups[1].Value);
Моя вина. Исправлю. Там - сложные проверки. В своё время не довёл до ума
Заменить System.Func и System.Tuple на синтаксическом уровне обёртками синтаксических узлов, хранящими .NET-овские типы
begin
var locker := new object();
var total := 0.0;
System.Threading.Tasks.Parallel.For (1, 10000000, i -> begin total += Math.Sqrt (i); end);
end.
begin
var ученики := ReadLines('Ученики.txt').Select(s -> s.ToWords);
var экзамены := ReadLines('Экзамены.txt').Select(s -> s.ToWords);
var q := ученики.Join(экзамены,ученик->ученик[0],экзамен->экзамен[0],
(ученик,экзамен) -> Arr(ученик[1],ученик[2],экзамен[1],экзамен[2]));
q.GroupBy(x->x[3]).Select(g->Rec(g.Key,g)).Println(NewLine);
end.
() : Внутренняя ошибка компилятора в модуле [pabcnetc.exe] :'System.Exception: System.InvalidCastException: Не удалось привести тип объекта "PascalABCCompiler.SyntaxTree.array_type" к типу "PascalABCCompiler.SyntaxTree.named_type_reference".
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_type_list_with_check(List1 types, List
1 gpe_list, Boolean where_checking)
...
uses PT4;
begin
Task('String13');
Print(ReadString.Count(c->c.IsDigit));
end.
По идее, это теперь возможно, переопределив все операции
var s := 'sfg rtf';
var q1 := s.Min;
Добавить для этого свойство PlatformTarget в класс CompilerOptions
{$reference windows.forms.dll}
begin
end.
function Sqrt(Self: real): real; extensionmethod;
begin
Result := Sqrt(Self);
end;
при помещении в модуль PABCSystem пишет "Повторное объявление"
Нашёлся тест, который больше не компилируется: BookWormABCNET.pas
, а именно
arr,work: array ['а'..'я'] of integer;
пишет: ожидался порядковый тип.
Названия перменных, классов и много другого требует рефакторинга, хорошего рефакторинга.
Так же в коде куча неиспользующегося кода, куча ненужных/непонятных закоментированных участков кода, да и просто неиспользующийся код.
procedure wr(a: array of T);
begin
end;
begin
var a := Arr(1,3,5);
wr(a.Reverse.ToArray);
end.
Без скобочек не работает
function operator in<T>(x: T; Self: List<T>): boolean; extensionmethod;
begin
Result := Self.Contains(x);
end;
begin
var l := new List<integer>;
l += 666;
write(666 in l);
end.
errin.pas(14) : Операция 'in' не применима к типам integer и List
Делать надо просто и гибко. Добавить два ColorBox для цвета шрифта и фона редактора и FileDialog для выбора пользовательского файла подсветки.
Внутриблочные переменные не могут иметь те же имена, что и переменные из блока верхнего уровня
Выдается даже в такой ситуации. Уж не говоря о том, что имя переменной может совпадать с именем не переменной, а чего-то ещё
begin
var c1: integer;
var c1: integer;
end.
function operator-<T>(x,y: HashSet<T>): HashSet<T>; extensionmethod;
begin
end;
function operator-<T>(x,y: HashSet<T>): HashSet<T>; extensionmethod;
begin
end;
var s := 'каждый охотник желает знать где сидит фазан';
s := s.ToWords.Sorted.JoinIntoString;
Не работает Intellisense для JoinIntoString
begin
ReadLines('a.txt').Select(s->s.ToWords).Select(ss->Rec(ss[0],ss[1].ToInteger)).Println;
end.
Без скобок не работает. Тут две ошибки:
s.ToWords() и
ss[1].ToInteger()
Hello!
Congratulations for this product, that I have just discovered. I would be interested in providing to french-speaking users a french version of the IDE interface. Is it possible? If it is possible, could you explain what I have to do?
PascalABC.NET is announced here:
http://www.developpez.net/forums/d1563718/autres-langages/pascal/outils-telecharger/pascalabc-net-environnement-developpement-net-pascal/
Best regards.
begin
var q := Range('A','Z')+Range('a','z')+Range('0','9');
var s := q.ToArray();
var qqq := SeqFill(10,SeqGen(8,i->s[Random(s.Length)]).JoinIntoString).Print(NewLine);
end.
begin
var s := 'xxx xxx';
// Ошибка: Нельзя обратиться к нестатическому методу Split через тип
var ss := s.Split;
// Работает:
//var ss := s.Split();
// Работает:
Writeln(s.Split);
end.
operator implicit(self: BigInteger):real;
Например, Hanoi.pas
Пишу в основной программе
function HashSet<T>.operator in(Self: HashSet<T>; x: T): boolean;
begin
Result := Self.Contains(x);
end;
errin.pas(3) : Недопустимо описывать метод для синонима шаблонного типа
Это правильно.
Но в модуле PABCSystem это проходит - никто не ругается. У меня есть подозрение, что дальше с этим какие-то глюки будут.
Либо везде разрешить, либо - запретить
var t: ()->integer;
'abcdefghijklmnop'.AsParallel().Select (c -> char.ToUpper(c)).ForAll (procedure (x)->write(x));
Не работает Intellisense для JoinIntoString
begin
var s := 'dst srf hdfh h';
var ss := s.ToWords;
write(ss.JoinIntoString('-'));
end.
http://forum.mmcs.sfedu.ru/t/sreda-sedaet-vsyu-dostupnuyu-ozu-pri-otladke/773
Среда виснет при отладке программы с гигантским массивом при переходе на вкладку локальных переменных и при наведении на имя этого массива
{$reference ***}
begin
end.
Arr(1,2,3).OrderBy(x->x).Print - Print интеллисенс не видит
begin
var l := new HashSet<integer>;
var l1 := new HashSet<integer>;
write(l = l1);
end.
Неверно автовыводится тип
procedure p1(a: sequence of integer);
begin
writeln(333);
end;
procedure p1(params a: array of integer);
begin
writeln(444);
end;
procedure p2<T>(a: sequence of T);
begin
writeln(111);
end;
procedure p2<T>(params a: array of T);
begin
writeln(222);
end;
begin
var s := Seq(1,3,5);
var l := Lst(1,3,5);
p1(s);
p1(l);
p2(s);
p2(l);
end.
Результат:
333
333
111
222
Сделать настраиваемую панель инструментов
foreach var s in ReadLines('sdgh') do - Интеллисенс не поддерживает s
В bin/TestRunner.pas
захардкожены виндосовские разделители в путях (\
), соответственно, bin/TestRunner.exe
не может ничего найти. Я хотел исправить на /
(кажется, работает везде) или хотя бы на Path.DirectorySeparatorChar
, но не получилось скомпилировать bin/TestRunner.pas
, пишут
[4,3] TestRunner.pas: Assembly 'CodeCompletion.dll' not found
Действительно, не вижу этой dll.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.