fix typos in thesis
This commit is contained in:
parent
4bfda6b0a1
commit
2619e50e9b
@ -391,7 +391,7 @@ tasks {
|
|||||||
- Режим без пренастройвани (запечатване) - освен ограниченията от предишният режим, полетата не могат да бъдат трити и пренастройвани
|
- Режим без пренастройвани (запечатване) - освен ограниченията от предишният режим, полетата не могат да бъдат трити и пренастройвани
|
||||||
- Режим на заключване (замразяване) - обекта става на практика константа, нито едно негово свойство не може да бъде променено
|
- Режим на заключване (замразяване) - обекта става на практика константа, нито едно негово свойство не може да бъде променено
|
||||||
|
|
||||||
JavaScript кода може да променя режима от по-свободен към по-ограничаващ, но не и обратно. Това разрешава на разработчицитие да осигурят дадено ниво на константност на данните на обектите си.
|
JavaScript кода може да променя режима от по-свободен към по-ограничаващ, но не и обратно. Това разрешава на разработчиците да осигурят дадено ниво на константност на данните на обектите си.
|
||||||
|
|
||||||
Накрая, обектите имат прототипи. Прототипа може да е `null` или обект. При търсенето на член, може обект да няма дадения ключ. Тогава търсенето продължава в прототипа на обекта. Понеже обаче прототипа е обект на практика съществува свързан списък от обекти, или т. нар. прототипна верига. Прототипите са в основата на обектно-ориентираното програмиране в JavaScript, понеже може чрез прототипите да бъде дефиниран един основен обект, който да съдържа всички функции за даден „тип“ обекти, а всички обекти от този „тип“ просто имат този основен обект като прототип. Освен това обаче прототипите могат да бъдат използвани и за осъществяване на наследство на обекти - обекта „AnimalPrototype“, който съдържа члена „speak“ може да бъде прототип на обекта „DogPrototype“, който съдържа члена „bark“. При тази конфигурация, „DogPrototype“ де факто има и двете полета - „speak“ и „bark“.
|
Накрая, обектите имат прототипи. Прототипа може да е `null` или обект. При търсенето на член, може обект да няма дадения ключ. Тогава търсенето продължава в прототипа на обекта. Понеже обаче прототипа е обект на практика съществува свързан списък от обекти, или т. нар. прототипна верига. Прототипите са в основата на обектно-ориентираното програмиране в JavaScript, понеже може чрез прототипите да бъде дефиниран един основен обект, който да съдържа всички функции за даден „тип“ обекти, а всички обекти от този „тип“ просто имат този основен обект като прототип. Освен това обаче прототипите могат да бъдат използвани и за осъществяване на наследство на обекти - обекта „AnimalPrototype“, който съдържа члена „speak“ може да бъде прототип на обекта „DogPrototype“, който съдържа члена „bark“. При тази конфигурация, „DogPrototype“ де факто има и двете полета - „speak“ и „bark“.
|
||||||
|
|
||||||
@ -688,7 +688,7 @@ public class Frame {
|
|||||||
```txt
|
```txt
|
||||||
; Добавя 10 към стека
|
; Добавя 10 към стека
|
||||||
LOAD_NUMBER 10
|
LOAD_NUMBER 10
|
||||||
; Добадя 1 към стека
|
; Добавя 1 към стека
|
||||||
LOAD_NUMBER 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`
|
STORE_MEMBER_INT | key, keep | value, object | Еквивалент на STORE_MEMBER, но с константен числов ключ `key`
|
||||||
GLOB_GET | name, force | | Зарежда променливата `name` от глобалния обект. Ако `force` е `true` не се хвърля грешка ако променливата не съществува. Стойността на променливата се добавя към стека
|
GLOB_GET | name, force | | Зарежда променливата `name` от глобалния обект. Ако `force` е `true` не се хвърля грешка ако променливата не съществува. Стойността на променливата се добавя към стека
|
||||||
GLOB_SET | name, keep, force | value | Съхранява променливата `name` в глобалния обект. Ако `force` е `true` не се хвърля грешка ако променливата не съществува. Стойността на променливата се добавя към стека, ако `keep` е `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]) с даденият брой операнда, които операцията изисква. Добавя стойността при изчислението на операцията към стека
|
OPERATION | type | values... | Изпълнява дадената операция (фиг. [@operations-table]) с даденият брой операнда, които операцията изисква. Добавя стойността при изчислението на операцията към стека
|
||||||
|
|
||||||
Набор от инструкции на междинния език (бележка: в колоната с аргументи от стека са показани аргументите в реда, в който се взимат от стека, освен ако друг ред не е уточнен)
|
Набор от инструкции на междинния език (бележка: в колоната с аргументи от стека са показани аргументите в реда, в който се взимат от стека, освен ако друг ред не е уточнен)
|
||||||
@ -906,7 +906,7 @@ class Frame {
|
|||||||
|
|
||||||
## Компилиране на проекта
|
## Компилиране на проекта
|
||||||
|
|
||||||
Можете да изтеглите кода на проекта, като и всичко нужно за компилирането му от приложената флашка (в директорията „j2s“) или от Git репозиторията <https://git.topcheto.eu/topchetoeu/j2s.git>. За компилацията на кода е нужен следния софтуер:
|
Можете да изтеглите кода на проекта, като и всичко нужно за компилирането му от приложената флашка (в директорията „j2s“) или от Git хранилището <https://git.topcheto.eu/topchetoeu/j2s.git>. За компилацията на кода е нужен следния софтуер:
|
||||||
|
|
||||||
- OpenJDK 17 SDK
|
- OpenJDK 17 SDK
|
||||||
- Gradle 8.10
|
- 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
|
```java
|
||||||
var func = new NativeFunction("myFunc", args -> {
|
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` - Използва се като служебна функция, която да позволява компилирането първо на по-дълбоките функции
|
- `compileFunctions` - Използва се като служебна функция, която да позволява компилирането първо на по-дълбоките функции
|
||||||
- `resolve` - Дефинира в подадения `CompileResult` променливите, които елемента декларира
|
- `resolve` - Дефинира в подадения `CompileResult` променливите, които елемента декларира
|
||||||
|
|
||||||
@ -1193,7 +1193,7 @@ else return end.chainError(src.loc(i + n), "Expected end of statement");
|
|||||||
|
|
||||||
Създадената система за добавяне на интерпретатори от своя страна е създадена такава, че може няколко интерпретатора да бъдат „наредени“ един след друг. Това позволява изключителна гъвкавост, както и допълнителна изолация на средата - може код, който използва компилатор да дефинира собствен компилатор без да знае за компилатора, на който е базиран.
|
Създадената система за добавяне на интерпретатори от своя страна е създадена такава, че може няколко интерпретатора да бъдат „наредени“ един след друг. Това позволява изключителна гъвкавост, както и допълнителна изолация на средата - може код, който използва компилатор да дефинира собствен компилатор без да знае за компилатора, на който е базиран.
|
||||||
|
|
||||||
Освен кода, за изпълнението на TypeScript кода са включени и типизации на стандартните билиотеки, описващи специфичната стандартна библиотека, дефинирана тук.
|
Освен кода, за изпълнението на TypeScript кода са включени и типизации на стандартните библиотеки, описващи специфичната стандартна библиотека, дефинирана тук.
|
||||||
|
|
||||||
За да има достъп кода на стандартната библиотека до някои вътрешни функции на интерпретатора, беше създаден и класа „Primordials“, който създава набор от функции, които могат да бъдат използвани за ***незащитен*** достъп до иначе недостъпните чрез синтаксис функционалности.
|
За да има достъп кода на стандартната библиотека до някои вътрешни функции на интерпретатора, беше създаден и класа „Primordials“, който създава набор от функции, които могат да бъдат използвани за ***незащитен*** достъп до иначе недостъпните чрез синтаксис функционалности.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user