ic10
v4.3.1
Published
ic10 interpreter
Downloads
304
Readme
ic10
Простое использование
typescript :
import { InterpreterIc10, DevEnv } from "ic10"
;(async () => {
const mem = new DevEnv()
// подписываемся на ошибки
mem.on("error", (e) => console.error(e.format()))
// подписываемся на предупреждения
// mem.on("warn", (e) => console.warn(e))
try {
const a = new InterpreterIc10(
mem,
`
alias test d0
`,
)
await a.testCode()
} catch (e: unknown) {
console.error("Не предвиденная ошибка", e)
}
})()
Написание своего окружения
Тезисно:
Наследуемся от
Environment
в get и set функциях используется "точечная" адресация
- адресация вида
a.b.c
означает что мы обращаемся к объектуa
и запрашиваем у него свойствоb
и у него свойствоc
Примеры:
- d0.Activate
- d0.Slots.1.Quantity
- d0.Reagents.{ReagentMod}.{ReagentHash}
- d0.Connection.{number}.Channel{number}
- адресация вида
добавляем устройства сначала в окружение
appendDevice
, а потом подключаем к портуattachDevice
в функциях
get
иset
обязательно должны быть эти строкиimport { dynamicDevicePort, dynamicRegister } from "./core/Helpers" name = dynamicRegister(this, name) name = dynamicDevicePort(this, name) // ---OR--- name = await dynamicDevicePortAsync(this, name) name = await dynamicRegisterAsync(this, name)
Это нужно, чтобы обрабатывать динамические адреса и динамические порты такие как
rrr1
иdrrr1