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
Нашёлся тест, который больше не компилируется: BookWormABCNET.pas
, а именно
arr,work: array ['а'..'я'] of integer;
пишет: ожидался порядковый тип.
begin
var s := 'xxx xxx';
// Ошибка: Нельзя обратиться к нестатическому методу Split через тип
var ss := s.Split;
// Работает:
//var ss := s.Split();
// Работает:
Writeln(s.Split);
end.
На синтаксическом уровне сделать узлы, позволяющие вызывать функции из PABCSystem
Сейчас это невозможно если кто-то объявит переменную с именем PABCSystem
Сделать видимо наподобие ?PABCSystem
var i := s.ToInteger;
i.
test
http://forum.mmcs.sfedu.ru/t/sreda-sedaet-vsyu-dostupnuyu-ozu-pri-otladke/773
Среда виснет при отладке программы с гигантским массивом при переходе на вкладку локальных переменных и при наведении на имя этого массива
uses PT4;
begin
Task('String13');
Print(ReadString.Count(c->c.IsDigit));
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;
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)
...
Названия перменных, классов и много другого требует рефакторинга, хорошего рефакторинга.
Так же в коде куча неиспользующегося кода, куча ненужных/непонятных закоментированных участков кода, да и просто неиспользующийся код.
Внутриблочные переменные не могут иметь те же имена, что и переменные из блока верхнего уровня
Выдается даже в такой ситуации. Уж не говоря о том, что имя переменной может совпадать с именем не переменной, а чего-то ещё
begin
var c1: integer;
var c1: integer;
end.
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);
Моя вина. Исправлю. Там - сложные проверки. В своё время не довёл до ума
begin
ReadLines('a.txt').Select(s->s.ToWords).Select(ss->Rec(ss[0],ss[1].ToInteger)).Println;
end.
Без скобок не работает. Тут две ошибки:
s.ToWords() и
ss[1].ToInteger()
{$reference ***}
begin
end.
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.
begin
var locker := new object();
var total := 0.0;
System.Threading.Tasks.Parallel.For (1, 10000000, i -> begin total += Math.Sqrt (i); end);
end.
Например, Hanoi.pas
foreach var s in ReadLines('sdgh') do - Интеллисенс не поддерживает s
Сделать настраиваемую панель инструментов
Добавить для этого свойство PlatformTarget в класс CompilerOptions
operator implicit(self: BigInteger):real;
function Sqrt(Self: real): real; extensionmethod;
begin
Result := Sqrt(Self);
end;
при помещении в модуль PABCSystem пишет "Повторное объявление"
procedure wr(a: array of T);
begin
end;
begin
var a := Arr(1,3,5);
wr(a.Reverse.ToArray);
end.
Без скобочек не работает
Пишу в основной программе
function HashSet<T>.operator in(Self: HashSet<T>; x: T): boolean;
begin
Result := Self.Contains(x);
end;
errin.pas(3) : Недопустимо описывать метод для синонима шаблонного типа
Это правильно.
Но в модуле PABCSystem это проходит - никто не ругается. У меня есть подозрение, что дальше с этим какие-то глюки будут.
Либо везде разрешить, либо - запретить
Такой код:
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 s := 'sfg rtf';
var q1 := s.Min;
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.
В bin/TestRunner.pas
захардкожены виндосовские разделители в путях (\
), соответственно, bin/TestRunner.exe
не может ничего найти. Я хотел исправить на /
(кажется, работает везде) или хотя бы на Path.DirectorySeparatorChar
, но не получилось скомпилировать bin/TestRunner.pas
, пишут
[4,3] TestRunner.pas: Assembly 'CodeCompletion.dll' not found
Действительно, не вижу этой dll.
var t: ()->integer;
'abcdefghijklmnop'.AsParallel().Select (c -> char.ToUpper(c)).ForAll (procedure (x)->write(x));
var s := 'каждый охотник желает знать где сидит фазан';
s := s.ToWords.Sorted.JoinIntoString;
Не работает Intellisense для JoinIntoString
begin
var l := new HashSet<integer>;
var l1 := new HashSet<integer>;
write(l = l1);
end.
Заменить System.Func и System.Tuple на синтаксическом уровне обёртками синтаксических узлов, хранящими .NET-овские типы
Хотелось бы иметь какое-то простое руководство для сборки. Желательно, под разные OS. До тех пор вряд ли стоит рассчитывать на подключение сторонних сил.
Делать надо просто и гибко. Добавить два ColorBox для цвета шрифта и фона редактора и FileDialog для выбора пользовательского файла подсветки.
var n: integer := 2;
const a = n*2; // компилируется, что неверно
const b = n; // не компилируется, что верно
begin
end.
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.
Не работает Intellisense для JoinIntoString
begin
var s := 'dst srf hdfh h';
var ss := s.ToWords;
write(ss.JoinIntoString('-'));
end.
begin
var f:(integer=2,integer=8);
writeln(f);
end.
По идее, это теперь возможно, переопределив все операции
{$reference windows.forms.dll}
begin
end.
Arr(1,2,3).OrderBy(x->x).Print - Print интеллисенс не видит
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.
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
Неверно автовыводится тип
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
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.