diff --git a/doc/text/document.md b/doc/text/document.md index d2afe65..7d90fc7 100644 --- a/doc/text/document.md +++ b/doc/text/document.md @@ -391,7 +391,7 @@ tasks { - Режим без пренастройвани (запечатване) - освен ограниченията от предишният режим, полетата не могат да бъдат трити и пренастройвани - Режим на заключване (замразяване) - обекта става на практика константа, нито едно негово свойство не може да бъде променено -JavaScript кода може да променя режима от по-свободен към по-ограничаващ, но не и обратно. Това разрешава на разработчицитие да осигурят дадено ниво на константност на данните на обектите си. +JavaScript кода може да променя режима от по-свободен към по-ограничаващ, но не и обратно. Това разрешава на разработчиците да осигурят дадено ниво на константност на данните на обектите си. Накрая, обектите имат прототипи. Прототипа може да е `null` или обект. При търсенето на член, може обект да няма дадения ключ. Тогава търсенето продължава в прототипа на обекта. Понеже обаче прототипа е обект на практика съществува свързан списък от обекти, или т. нар. прототипна верига. Прототипите са в основата на обектно-ориентираното програмиране в JavaScript, понеже може чрез прототипите да бъде дефиниран един основен обект, който да съдържа всички функции за даден „тип“ обекти, а всички обекти от този „тип“ просто имат този основен обект като прототип. Освен това обаче прототипите могат да бъдат използвани и за осъществяване на наследство на обекти - обекта „AnimalPrototype“, който съдържа члена „speak“ може да бъде прототип на обекта „DogPrototype“, който съдържа члена „bark“. При тази конфигурация, „DogPrototype“ де факто има и двете полета - „speak“ и „bark“. @@ -688,7 +688,7 @@ public class Frame { ```txt ; Добавя 10 към стека LOAD_NUMBER 10 -; Добадя 1 към стека +; Добавя 1 към стека LOAD_NUMBER 1 ; Добавя първият елемент на ; стека с новодобавената единица @@ -792,7 +792,7 @@ STORE_MEMBER_STR | key, keep | value, object | Еквивалент на ST STORE_MEMBER_INT | key, keep | value, object | Еквивалент на STORE_MEMBER, но с константен числов ключ `key` GLOB_GET | name, force | | Зарежда променливата `name` от глобалния обект. Ако `force` е `true` не се хвърля грешка ако променливата не съществува. Стойността на променливата се добавя към стека GLOB_SET | name, keep, force | value | Съхранява променливата `name` в глобалния обект. Ако `force` е `true` не се хвърля грешка ако променливата не съществува. Стойността на променливата се добавя към стека, ако `keep` е `true` -GLOB_DEF | name | value | Създава променливата `name` със стойност `undefined` в глобавният обект, ако не съществува +GLOB_DEF | name | value | Създава променливата `name` със стойност `undefined` в глобалния обект, ако не съществува OPERATION | type | values... | Изпълнява дадената операция (фиг. [@operations-table]) с даденият брой операнда, които операцията изисква. Добавя стойността при изчислението на операцията към стека Набор от инструкции на междинния език (бележка: в колоната с аргументи от стека са показани аргументите в реда, в който се взимат от стека, освен ако друг ред не е уточнен) @@ -906,7 +906,7 @@ class Frame { ## Компилиране на проекта -Можете да изтеглите кода на проекта, като и всичко нужно за компилирането му от приложената флашка (в директорията „j2s“) или от Git репозиторията . За компилацията на кода е нужен следния софтуер: +Можете да изтеглите кода на проекта, като и всичко нужно за компилирането му от приложената флашка (в директорията „j2s“) или от Git хранилището . За компилацията на кода е нужен следния софтуер: - OpenJDK 17 SDK - Gradle 8.10 @@ -924,7 +924,7 @@ class Frame { ## Използване на проекта като зависимост в друг проект -За проекта е налично и Maven хранилище, достъпно чрез URL адреса [https://git.topcheto.eu/api/packages/topchetoeu/maven], в което присъстват всички компонети на проекта. +За проекта е налично и Maven хранилище, достъпно чрез URL адреса [https://git.topcheto.eu/api/packages/topchetoeu/maven], в което присъстват всички компоненти на проекта. ---- @@ -1095,7 +1095,7 @@ ArrayValue doInterestingStuff(Environment env, Value input) { } ``` -Често ще Ви се налага да създавате и Java функцкии (трябва да правите такива функции с повишено внимание, понеже те имат неограничен достъп до Java средата на изпълнение, което може да означава че зле написана Java функция може да компрометира сигурността). Следния код е пример как се създава Java функция: +Често ще Ви се налага да създавате и Java функции (трябва да правите такива функции с повишено внимание, понеже те имат неограничен достъп до Java средата на изпълнение, което може да означава че зле написана Java функция може да компрометира сигурността). Следния код е пример как се създава Java функция: ```java var func = new NativeFunction("myFunc", args -> { @@ -1171,7 +1171,7 @@ else return end.chainError(src.loc(i + n), "Expected end of statement"); Всеки клас за елемент от синтактичното дърво съответно има следните три основни функции: -- `compile` - Добавя съответставщите на елемента инструкции в подадения `CompileResult` +- `compile` - Добавя съответставащите на елемента инструкции в подадения `CompileResult` - `compileFunctions` - Използва се като служебна функция, която да позволява компилирането първо на по-дълбоките функции - `resolve` - Дефинира в подадения `CompileResult` променливите, които елемента декларира @@ -1193,7 +1193,7 @@ else return end.chainError(src.loc(i + n), "Expected end of statement"); Създадената система за добавяне на интерпретатори от своя страна е създадена такава, че може няколко интерпретатора да бъдат „наредени“ един след друг. Това позволява изключителна гъвкавост, както и допълнителна изолация на средата - може код, който използва компилатор да дефинира собствен компилатор без да знае за компилатора, на който е базиран. -Освен кода, за изпълнението на TypeScript кода са включени и типизации на стандартните билиотеки, описващи специфичната стандартна библиотека, дефинирана тук. +Освен кода, за изпълнението на TypeScript кода са включени и типизации на стандартните библиотеки, описващи специфичната стандартна библиотека, дефинирана тук. За да има достъп кода на стандартната библиотека до някои вътрешни функции на интерпретатора, беше създаден и класа „Primordials“, който създава набор от функции, които могат да бъдат използвани за ***незащитен*** достъп до иначе недостъпните чрез синтаксис функционалности.