Мне было лень изучать жабаскрып, потому всего за полгода я сделал вот этот dtscript (как выразился Абикак, "питоний джабаскрып"). Синтаксис dtscript не завист от пробелов, табов, переносов строк. Конец одной конструкции определяется по символу ';' или '}' (если перед этим был символ '{') ========================================[переменные]======================================== объявление переменной и присвоение значения синтаксически никак не отличаются: тип(имя = значение); у переменных есть контекст: bool(h=false); if (...) { bool(j=true); Log("w", h); выведет true, так как есть доступ к переменным предыдущих уровней } Log("w", j); выдаст ошибку "KeyNotFoundException", так как вызывается с предшествующего объявлению переменной уровня ┌────────┬────────────────┬───────────┬───────────────────┐ │ тип │ аналог в c# │ операции │ пример │ ├────────┼────────────────┼───────────┼───────────────────┤ │ bool │ System.Boolean │ <,>,==,!= │ bool(a=1<3); │ ├────────┼────────────────┼───────────┼───────────────────┤ │ num │ System.Double │ +,-,*,/ │ num(a=9.6); │ ├────────┼────────────────┼───────────┼───────────────────┤ │ string │ System.String │ + │ string(a="text"); │ └────────┴────────────────┴───────────┴───────────────────┘ ==========================================[методы]========================================== Oбъявлять свои методы пока что нельзя, можно только использовать встроенные: метод; если нет параметров Метод(параметр0, параметр1...); параметрами могут быть значения и переменные, но не выражения ┌────────────────────────────┬─────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────┐ │ метод │ аналог в с# │ шо делает │ ├────────────────────────────┼─────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ pause │ System.Console.ReadKey() │ приостанавливает выполнение скрипта до нажатия клавиши │ ├────────────────────────────┼─────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ break │ break │ прекращает выполнение уровня скрипта │ ├────────────────────────────┼─────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ Log("w", "text", ...) │ DTLib.ColoredConsole.Write(params string[]) │ выводит в консоль цветной текст │ ├────────────────────────────┼─────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ Run("файл.ехе","аргументы")│ System.Diagnostics.Process.Start(string) │ запускает прогу │ ├────────────────────────────┼─────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ Download("f0", "f1") │ DTLib.NetWork.FSP_Download(this Socket, string, string) │ скачивает файл по FSP протоколу │ └────────────────────────────┴─────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────┘ =========================================[операторы]======================================== Параметром может быть переменная, но не выражение. while (bool) { ... } if (bool) { ... }