package Ġcom . b aj dcc . L AL R 1 . grammar . runtime Ċ Ċ import Ġcom . b aj dcc . L AL R 1 . grammar . Grammar Ċ import Ġcom . b aj dcc . L AL R 1 . grammar . runtime . RuntimeException . RuntimeError Ċ import Ġcom . b aj dcc . L AL R 1 . grammar . runtime . Runtime Process . Companion . USER _ PROC _ PIPE _ PREFIX Ċ import Ġcom . b aj dcc . L AL R 1 . grammar . runtime . data . Runtime Array Ċ import Ġcom . b aj dcc . L AL R 1 . grammar . runtime . data . Runtime Func Object Ċ import Ġcom . b aj dcc . L AL R 1 . grammar . runtime . data . Runtime Map Ċ import Ġcom . b aj dcc . L AL R 1 . grammar . runtime . service . IR untime Service Ċ import Ġcom . b aj dcc . L AL R 1 . grammar . type . Token Tools Ċ import Ġcom . b aj dcc . L AL R 1 . interpret . module .* Ċ import Ġcom . b aj dcc . L AL R 1 . interpret . module . std . Module Std Base Ċ import Ġcom . b aj dcc . L AL R 1 . interpret . module . std . Module Std Shell Ċ import Ġcom . b aj dcc . L AL R 1 . interpret . module . user . Module User Base Ċ import Ġcom . b aj dcc . L AL R 1 . interpret . module . user . Module User C Parser Ċ import Ġcom . b aj dcc . L AL R 1 . interpret . module . user . Module User L isp Ċ import Ġcom . b aj dcc . L AL R 1 . interpret . module . user . Module User Web Ċ import Ġcom . b aj dcc . L AL R 1 . syntax . handler . Syntax Exception Ċ import Ġcom . b aj dcc . util . Hash List Map Ex Ċ import Ġcom . b aj dcc . util . Hash List Map Ex 2 Ċ import Ġcom . b aj dcc . util . lexer . error . Regex Exception Ċ import Ġcom . b aj dcc . util . lexer . token . Token Ċ import Ġcom . b aj dcc . util . lexer . token . TokenType Ċ import Ġorg . apache . log 4 j . Logger Ċ import Ġjava . io . File Ċ import Ġjava . io . InputStream Ċ Ċ /** Ċ Ġ* ĠãĢĲ èĻļæĭŁ æľº ãĢĳ è¿Ĳè¡Į æĹ¶ èĩªåĬ¨ æľº Ċ Ġ* Ċ Ġ* Ġ@ author Ġb aj dcc Ċ Ġ*/ Ċ class ĠRuntime Machine Ġ@ Throws ( Exception :: class ) Ċ @ Jvm Over loads Ġconstructor ( private Ġval Ġring : ĠInt Ġ= Ġ 0 , Ġprivate Ġval Ġprocess : ĠRuntime Process ? Ġ= Ġnull ) Ġ: ĠI Runtime Stack , ĠI Runtime Status , ĠI Runtime Ring 3 Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġring 3 Struct : ĠRing 3 Struct ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġpage Map Ġ= ĠHash List Map Ex < String , ĠRuntime Code Page >() ĊĠĠĠ Ġprivate Ġvar Ġpage Refer Ġ= Ġmutable Map Of < String , ĠMutable List < Runtime Code Page >>() ĊĠĠĠ Ġprivate Ġvar Ġcode Cache Ġ= Ġmutable Map Of < String , ĠRuntime Code Page >() ĊĠĠĠ Ġprivate Ġvar Ġst k Yield Data Ġ= Ġmutable ListOf < RuntimeObject >() ĊĠĠĠ Ġprivate Ġvar Ġst k Yield Map Ġ= ĠHash List Map Ex 2 < String , ĠInt >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcurrent Stack : ĠRuntime Stack ĊĠĠĠ Ġprivate Ġvar Ġstack Ġ= Ġmutable ListOf < Runtime Stack >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠcurrentPage : ĠRuntime Code Page ĊĠĠĠ Ġprivate Ġvar Ġpage Name : ĠString Ġ= Ġ"" ĊĠĠĠ Ġoverride Ġvar Ġpage : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġdescription : ĠString Ġ= Ġ"" ĊĠĠĠ Ġoverride Ġvar Ġpid : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġoverride Ġvar Ġparent Pid : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġtries Count : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġis Debug Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġval Ġpriority : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprocess !!. get Priority ( pid ) ĊĊĠĠĠ Ġoverride Ġval Ġservice : ĠI Runtime Service ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprocess !!. service ĊĊĠĠĠ Ġoverride Ġval Ġusr Pro cs : ĠList < Int > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprocess !!. usr Pro cs ĊĊĠĠĠ Ġoverride Ġval Ġsys Pro cs : ĠList < Int > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprocess !!. sys Pro cs ĊĊĠĠĠ Ġoverride Ġval Ġall Pro cs : ĠList < Int > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprocess !!. all Pro cs ĊĊĠĠĠ Ġoverride Ġval Ġproc Info : ĠArray < Any > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunc Name Ġ= Ġcurrent Stack . func Simple Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( if Ġ( process !!. is Block ( pid )) Ġ" Ġ" Ġelse Ġ"*", Ġring . toString (), Ġpid . toString (), Ġpage , Ġfunc Name , Ġdescription ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġis Ring 3 : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġring 3 Struct Ġ!= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġhandles : ĠSet < Int > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġring 3 Struct !!. handles ĊĊĠĠĠ Ġoverride Ġvar Ġblock Handle : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġring 3 Struct !!. block Handle ĊĠĠĠĠĠĠĠ Ġset ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġring 3 Struct !!. block Handle Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġfunc Args Count : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcurrent Stack . func Args Count 1 ĊĊĠĠĠ Ġoverride Ġval Ġring 3 : ĠI Runtime Ring 3 ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ĊĊĠĠĠ Ġoverride Ġval Ġall Docs : ĠRuntime Array ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠRuntime Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( modules System , Ġmodules User ). flatMap Ġ{ Ġit Ġ}. forEach Ġ{ Ġmodule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule . code Page . info . extern Func List . forEach Ġ{ Ġarr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarr . insert ( 0 , ĠRuntime Object ( i ++ )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarr . insert ( 1 , ĠRuntime Object ( module . moduleName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray . add ( RuntimeObject ( arr )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġarray ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġis EOF : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcurrent Stack . reg . exec Id Ġ< Ġ 0 Ġ|| Ġcurrent Stack . reg . exec Id Ġ>= ĠcurrentPage . inst s . size ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲĳ åīį å¯ » æī¾ å½ĵåīį æłĪ çļĦ çĪ¶ æłĪ ĊĠĠĠĠ Ġ* Ġ@ return Ġ éĿŀ yield æłĪ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġlast Stack : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġcurrent Stack . parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( parent Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġcurrent Stack . level ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠRing 3 Option Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ èĩªåĬ¨ ä¿ĿåŃĺ è¿Ĳè¡Į æĹ¥å¿Ĺ æĸĩä»¶ ï¼Į é»ĺè®¤ true ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠLOG _ FILE , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ è¿Ĳè¡Į ç»ĵæŀľ èĩªåĬ¨ ä¿ĿçķĻ è¾ĵåĩº ç®¡ éģĵ ï¼Į é»ĺè®¤ false ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠLOG _ PIPE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠRing 3 Struct Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġput Handle : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġb Save LogFile : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġb Save Pipe File : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġhandles : ĠMutable Set < Int > ĊĠĠĠĠĠĠĠ Ġvar Ġblock Handle : ĠInt Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Handle Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Save LogFile Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Save Pipe File Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandles Ġ= Ġmutable Set Of () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Handle Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġcopy From ( ring 3 : ĠRing 3 Struct ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Save LogFile Ġ= Ġring 3 !!. b Save LogFile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Save Pipe File Ġ= Ġring 3 . b Save Pipe File ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġset Options Bool ( option : ĠRing 3 Option , Ġflag : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( option ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime Machine . Ring 3 Option . LOG _ FILE Ġ-> Ġb Save LogFile Ġ= Ġflag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime Machine . Ring 3 Option . LOG _ PIPE Ġ-> Ġb Save Pipe File Ġ= Ġflag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġis Options Bool ( option : ĠRing 3 Option ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( option ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime Machine . Ring 3 Option . LOG _ FILE Ġ-> Ġb Save LogFile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime Machine . Ring 3 Option . LOG _ PIPE Ġ-> Ġb Save Pipe File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . stack . add ( Runtime Stack ()) ĊĠĠĠĠĠĠĠ Ġthis . refresh Stack () ĊĠĠĠĠĠĠĠ Ġif Ġ( ring Ġ< Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( module Ġin Ġmodules System ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess !!. service . file Service . add V fs ( module . moduleName , Ġmodule . module Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( module . moduleName , Ġmodule . code Page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSyntax Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . page Name Ġ= Ġmodule . moduleName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . fileName Ġ= Ġmodule . java Class . simple Name Ġ+ Ġ". txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( module Ġin Ġmodules User ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess !!. service . file Service . add V fs ( module . moduleName , Ġmodule . module Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( module . moduleName , Ġmodule . code Page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSyntax Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . page Name Ġ= Ġmodule . moduleName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . fileName Ġ= Ġmodule . java Class . simple Name Ġ+ Ġ". txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġconstructor ( name : ĠString , Ġring : ĠInt , Ġid : ĠInt , ĠparentId : ĠInt , Ġprocess : ĠRuntime Process ) Ġ: Ġthis ( ring , Ġprocess ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . page Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġthis . description Ġ= Ġif Ġ( ring Ġ== Ġ 3 ) Ġ" user Ġproc " Ġelse Ġ" none " ĊĠĠĠĠĠĠĠ Ġthis . pid Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġthis . parent Pid Ġ= ĠparentId ĊĠĠĠĠĠĠĠ Ġif Ġ( ring Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġring 3 Struct Ġ= ĠRing 3 Struct () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġring 3 Struct !!. put Handle Ġ= Ġprocess . service . pipe Service . create ( USER _ PROC _ PIPE _ PREFIX Ġ+ Ġpid , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Stack () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Stack Ġ= Ġstack [ stack . size Ġ- Ġ 1 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFOR K è¿Ľç¨ĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġmachine Ġ è¢« F ORK çļĦ è¿Ľç¨ĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġfun Ġcopy From ( machine : ĠRuntime Machine ) Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( machine . ring Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġring 3 Struct !!. copyFrom ( machine . ring 3 Struct ) ĊĠĠĠĠĠĠĠ Ġpage Map Ġ= Ġmachine . page Map . copy () ĊĠĠĠĠĠĠĠ Ġpage Refer Ġ= Ġmachine . page Refer . entries . associate Ġ{ Ġit . key Ġto Ġit . value . to Mutable List () Ġ}. to Mutable Map () ĊĠĠĠĠĠĠĠ Ġcode Cache Ġ= ĠHashMap ( machine . code Cache ) ĊĠĠĠĠĠĠĠ Ġst k Yield Data Ġ= Ġmachine . stk Yield Data . to Mutable List () ĊĠĠĠĠĠĠĠ Ġst k Yield Map Ġ= Ġmachine . stk Yield Map . copy () ĊĠĠĠĠĠĠĠ Ġstack Ġ= Ġmachine . stack . map Ġ{ Ġit . copy () Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠ Ġcurrent Stack Ġ= Ġstack [ machine . stack . indexOf ( machine . current Stack )] ĊĠĠĠĠĠĠĠ ĠcurrentPage Ġ= Ġmachine . currentPage ĊĠĠĠĠĠĠĠ Ġtries Count Ġ= Ġmachine . tri es Count ĊĠĠĠĠĠĠĠ Ġstore ( RuntimeObject (- 1 L )) ĊĠĠĠĠĠĠĠ Ġop Return () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġrun ( name : ĠString , Ġinput : ĠInputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun ( name , ĠRuntime Code Page . import From Stream ( input )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġrun Page ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtxt Ġ= ĠFile ( name ). read Lines (). join ToString ( System . line Separator ()) ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Loading Ġfile : Ġ$ name ") ĊĠĠĠĠĠĠĠ Ġval Ġgrammar Ġ= ĠGram mar ( txt ) ĊĠĠĠĠĠĠĠ Ġrun ( name , Ġgrammar . code Page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġrun Process ( name : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtxt Ġ= ĠFile ( name ). read Lines (). join ToString ( System . line Separator ()) ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Loading Ġfile : Ġ$ name ") ĊĠĠĠĠĠĠĠ Ġval Ġgrammar Ġ= ĠGram mar ( txt ) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. create Process ( pid , Ġ 0 , Ġname , Ġgrammar . code Page , Ġ 0 , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġrun Process X ( name : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġprocess !!. getPage ( name ) Ġ?: Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess . create Process ( pid , Ġ 0 , Ġname , Ġpage , Ġ 0 , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġrun Us r Process ( name : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtxt Ġ= ĠFile ( name ). read Lines (). join ToString ( System . line Separator ()) ĊĠĠĠĠĠĠĠ Ġval Ġgrammar Ġ= ĠGram mar ( txt ) ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. create Process ( pid , Ġ 1 , Ġname , Ġgrammar . code Page , Ġ 0 , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġrun Us r Process X ( name : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġprocess !!. getPage ( name ) Ġ?: Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess . create Process ( pid , Ġ 1 , Ġname , Ġpage , Ġ 0 , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( name : ĠString , Ġpage : ĠRuntime Code Page ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( page Name Ġ== Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( page Map . contains ( name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwarn ( RuntimeError . DUP _ P AG ENAME , Ġ" ä»£çłģ é¡µ Ġ$ page Name Ġ åĬłè½½ Ġ$ name ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpage Map . add ( name , Ġpage ) ĊĠĠĠĠĠĠĠ Ġpage Refer [ name ] Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġpage Refer [ name ] !!. add ( page ) ĊĠĠĠĠĠĠĠ Ġpage . info . data Map [" desc "] Ġ= Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġrun ( name : ĠString , Ġpage : ĠRuntime Code Page ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( name , Ġpage ) ĊĠĠĠĠĠĠĠ ĠcurrentPage Ġ= Ġpage ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reg . page Id Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġswitch Page () ĊĠĠĠĠĠĠĠ Ġrun Inst s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġprivate Ġfun Ġrun Inst s () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ( run By Step ()); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġinit Step ( name : ĠString , Ġpage : ĠRuntime Code Page , Ġrefers : ĠList < Runtime Code Page >, Ġpc : ĠInt , Ġobj : ĠRuntime Object ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( name , Ġpage ) ĊĠĠĠĠĠĠĠ ĠcurrentPage Ġ= Ġpage ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reg . page Id Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġswitch Page () ĊĠĠĠĠĠĠĠ Ġpage Refer [ page Name ] !!. addAll ( ref ers ) ĊĠĠĠĠĠĠĠ Ġop Open Func () ĊĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġop Push Obj ( obj ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġop Push Args () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġop Push Ptr ( pc ) ĊĠĠĠĠĠĠĠ Ġop Call () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġrun Step (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠRuntime Inst . values ()[ current Inst ()] ĊĠĠĠĠĠĠĠ Ġif Ġ( inst Ġ== ĠRuntime Inst . ih alt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ring Ġ< Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess !!. destroy Process ( pid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( run By Step ()) Ġ 0 Ġelse Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġprivate Ġfun Ġrun By Step (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinst Ġ= ĠRuntime Inst . values ()[ current Inst ()] ĊĠĠĠĠĠĠĠ Ġif Ġ( inst Ġ== ĠRuntime Inst . ih alt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( isDebug ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ( current Stack . reg . exec Id . toString () Ġ+ Ġ": Ġ" Ġ+ Ġinst . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġop Ġ= ĠToken Tools . ins 2 op ( inst ) ĊĠĠĠĠĠĠĠ Ġnext Inst () ĊĠĠĠĠĠĠĠ Ġif Ġ( op Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Runtime Tools . calc Op ( inst , Ġthis )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . UNDEFINED _ CONVERT , Ġop . desc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Runtime Tools . calc Data ( inst , Ġthis )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Runtime Tools . calc Jump ( inst , Ġthis )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ INST , Ġinst . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( isDebug ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ( current Stack . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print (" åįı ç¨ĭ æłĪ ï¼ļ ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ( stk Yield Data . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġload (): ĠRuntime Object Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Stack . isEmpty Stack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . NULL _ STACK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Stack . pop Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġstore ( obj : ĠRuntime Object ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġde queue (): ĠRuntime Object Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( stk Yield Data . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . NULL _ QUEUE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġst k Yield Data [ stk Yield Data . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġst k Yield Data . remove At ( stk Yield Data . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġenqueue ( obj : ĠRuntime Object ) Ġ{ ĊĠĠĠĠĠĠĠ Ġst k Yield Data . add ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġfun Ġtop (): ĠRuntime Object Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Stack . isEmpty Stack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . NULL _ STACK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Stack . top () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġload Int (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġif Ġ( obj . type Ġ!= ĠRuntime ObjectType . k Ptr ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ OPERATOR , ĠRuntime ObjectType . k Int . desc Ġ+ Ġ" Ġ" Ġ+ Ġobj . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġobj . obj Ġas ĠInt ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġload String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġif Ġ( obj . type Ġ!= ĠRuntime ObjectType . k String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ OPERATOR , ĠRuntime ObjectType . k Int . desc Ġ+ Ġ" Ġ" Ġ+ Ġobj . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġobj . obj . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġload Bool (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġif Ġ( obj . type Ġ!= ĠRuntime ObjectType . k Bool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ OPERATOR , ĠRuntime ObjectType . k Bool . desc Ġ+ Ġ" Ġ" Ġ+ Ġobj . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġobj . obj Ġas ĠBoolean ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġload Bool Ret ain (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġtop () ĊĠĠĠĠĠĠĠ Ġif Ġ( obj . type Ġ!= ĠRuntime ObjectType . k Bool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ OPERATOR , ĠRuntime ObjectType . k Bool . desc Ġ+ Ġ" Ġ" Ġ+ Ġobj . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġobj . obj Ġas ĠBoolean ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġpush () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠRuntime Object ( current ()) ĊĠĠĠĠĠĠĠ Ġstore ( obj ) ĊĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġpop () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Stack . isEmpty Stack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . NULL _ STACK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Stack . pop Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġnext Inst () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id ++ ĊĠĠĠĠĠĠĠ Ġif Ġ( is EOF ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ CODE PAGE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġoperator Ġfun Ġnext () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isDebug ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print (" Ġ" Ġ+ Ġcurrent ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ+= Ġ 4 ĊĠĠĠĠĠĠĠ Ġif Ġ( is EOF ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ CODE PAGE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġerr ( type : ĠRuntimeError ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSystem . err . println ( current Stack ) ĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( type , Ġcurrent Stack . reg . exec Id , Ġtype . message Ġ+ Ġ"\ n \ n [ ĠCODE Ġ] \ n " Ġ+ ĠcurrentPage . get Debug Info By Inc ( current Stack . reg . exec Id . to Long ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġerr ( type : ĠRuntimeError , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSystem . err . println ( current Stack ) ĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( type , Ġcurrent Stack . reg . exec Id , Ġtype . message Ġ+ Ġ" Ġ" Ġ+ Ġmessage Ġ+ Ġ"\ n \ n [ ĠCODE Ġ] \ n " Ġ+ ĠcurrentPage . get Debug Info By Inc ( current Stack . reg . exec Id . to Long ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġfun Ġerr RT ( type : ĠRuntimeError , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSystem . err . println ( current Stack ) ĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( type , Ġcurrent Stack . reg . exec Id , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwarn ( type : ĠRuntimeError , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . warn ( String . format ("# % 0 3 d Ġ[% s ] Ġ% s Ġ% s ", Ġpid , Ġpage Name , Ġtype . message , Ġmessage )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġcreate Process ( func : ĠRuntime Func Object ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. create Process ( pid , Ġ 0 , Ġfunc . page , Ġpage Map [ func . page ], Ġfunc . addr , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġcreate Process ( func : ĠRuntime Func Object , Ġobj : ĠRuntime Object ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. create Process ( pid , Ġ 0 , Ġfunc . page , Ġpage Map [ func . page ], Ġfunc . addr , Ġobj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġcreate Us r Process ( func : ĠRuntime Func Object ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. create Process ( pid , Ġ 1 , Ġfunc . page , Ġpage Map [ func . page ], Ġfunc . addr , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġcreate Us r Process ( func : ĠRuntime Func Object , Ġobj : ĠRuntime Object ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. create Process ( pid , Ġ 1 , Ġfunc . page , Ġpage Map [ func . page ], Ġfunc . addr , Ġobj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Page Ref ers ( page : ĠString ): ĠList < Runtime Code Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpage Refer . get OrDefault ( page , ĠlistOf ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Priority ( priority : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. set Priority ( pid , Ġpriority ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsleep (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Proc Desc ( desc : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdesc ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġexec ( code : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrammar Ġ= ĠGram mar ( code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. create Process ( pid , Ġ 3 , Ġpage , Ġgrammar . code Page , Ġ 0 , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRegex Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr RT ( RuntimeError . TH ROWS _ EXCEPTION , Ġe . position . toString () Ġ+ Ġ", Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSyntax Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr RT ( RuntimeError . TH ROWS _ EXCEPTION , ĠString . format ("% s Ġ% s Ġ% s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . position , Ġe . message , Ġe . info )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġexec File ( filename : ĠString , Ġcode : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġcode Cache [ filename ] Ġ?: ĠGram mar ( code ). code Page ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. create Process ( pid , Ġ 3 , Ġfilename , Ġpage , Ġ 0 , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRegex Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr RT ( RuntimeError . TH ROWS _ EXCEPTION , Ġe . position . toString () Ġ+ Ġ", Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSyntax Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr RT ( RuntimeError . TH ROWS _ EXCEPTION , ĠString . format ("% s Ġ% s \ n % s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . position , Ġe . message , Ġe . info )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġput ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpipe Ġ= Ġprocess !!. service . pipe Service ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtext . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpipe . write ( ring 3 Struct !!. put Handle , Ġtext [ i ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Options Bool ( option : ĠRing 3 Option , Ġflag : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġring 3 Struct !!. set Options Bool ( option , Ġflag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Options Bool ( option : ĠRing 3 Option ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġring 3 Struct !!. is Options Bool ( option ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Handle ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġring 3 Struct !!. handles . add ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Handle ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġring 3 Struct !!. handles . remove ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġfork (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. create Process ( pid , Ġring , Ġ" fork ", ĠcurrentPage , Ġ- 1 , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Func Args ( index : ĠInt ): ĠRuntime Object ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Stack . get Func Args ( index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Ring 3 ( pid : ĠInt ): ĠI Runtime Ring 3 ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. get Ring 3 ( pid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Proc Info ById ( id : ĠInt ): ĠArray < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess !!. get Proc Info ById ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġswitch Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! current Stack . reg . page Id . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentPage Ġ= Ġpage Map [ current Stack . reg . page Id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Name Ġ= ĠcurrentPage . info . data Map [" desc "]. toString () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ CODE PAGE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġget Inst ( pc : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= ĠcurrentPage . inst s ĊĠĠĠĠĠĠĠ Ġif Ġ( pc Ġ< Ġ 0 Ġ|| Ġpc Ġ>= Ġcode . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ INST , Ġpc . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcode [ pc ]. toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġcurrent Inst (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( current Stack . reg . exec Id Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Inst ( current Stack . reg . exec Id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime Inst . ih alt . ordinal ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġcurrent (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġop Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġb : ĠInt ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġget Inst ( current Stack . reg . exec Id Ġ+ Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġop Ġ+= Ġ( b Ġand Ġ 0 xFF ) Ġshl Ġ( 8 Ġ* Ġi ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġop ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġfetch From Global Data ( index : ĠInt ): ĠRuntime Object Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġ 0 Ġ|| Ġindex Ġ>= ĠcurrentPage . data . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ OPERATOR , Ġindex . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠRuntime Object ( currentPage . data [ index ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġfetch From Global Data ( idx ) ĊĠĠĠĠĠĠĠ Ġif Ġ( obj . symbol Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj . symbol Ġ= ĠcurrentPage . data [ idx ] ĊĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Load Func () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġval Ġfunc Ġ= ĠRuntime Func Object ( page Name , Ġidx ) ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠRuntime Object ( func ) ĊĠĠĠĠĠĠĠ Ġval Ġenv Size Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ ĠFOR _ LOOP @ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġenv Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġid Ġ= Ġload Int () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġload Int () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġfetch From Global Data ( id ). string ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue : ĠRuntime Debug Value ? Ġ= ĠcurrentPage . info . getValue Call ByName ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunc . add Env ( id , Ġvalue . value ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= ĠcurrentPage . info . getAddress Of Export Func ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunc . add Env ( id , ĠRuntime Object ( Runtime Func Object ( page Name , Ġindex ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrefers Ġ= Ġpage Refer [ currentPage . info . data Map [" desc "]. toString ()] !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( page Ġin Ġrefers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġpage . info . getValue Call ByName ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunc . add Env ( id , Ġvalue . value ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue @ FOR _ LOOP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġpage . info . getAddress Of Export Func ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunc . add Env ( id , ĠRuntime Object ( Runtime Func Object ( page . info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. data Map [" desc "]. toString (), Ġindex ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue @ FOR _ LOOP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ LOAD _ EXTERN , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunc . add Env ( id , Ġcurrent Stack . find Variable ( func . page , Ġid )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Reload Func () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġval Ġfunc Ġ= ĠRuntime Func Object ( current Stack . reg . page Id , Ġcurrent Stack . reg . exec Id ) ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠRuntime Object ( func ) ĊĠĠĠĠĠĠĠ Ġobj . symbol Ġ= ĠcurrentPage . data [ idx ] ĊĠĠĠĠĠĠĠ Ġcurrent Stack . store Variable Direct ( idx , Ġobj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Store () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġcurrent Stack . find Variable ( page Name , Ġidx ) ĊĠĠĠĠĠĠĠ Ġtarget . copyFrom ( obj ) ĊĠĠĠĠĠĠĠ Ġstore ( target ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Store Copy () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġcurrent Stack . find Variable ( page Name , Ġidx ) ĊĠĠĠĠĠĠĠ Ġtarget . copyFrom ( obj ) ĊĠĠĠĠĠĠĠ Ġstore ( target . clone ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Store Direct () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġif Ġ( obj . symbol Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj . symbol Ġ= ĠcurrentPage . data [ idx ] ĊĠĠĠĠĠĠĠ Ġcurrent Stack . store Variable Direct ( idx , Ġobj ) ĊĠĠĠĠĠĠĠ Ġstore ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Open Func () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! current Stack . push Func Data ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . STACK _ OVER FLOW ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Load Args () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠ Ġif Ġ( idx Ġ< Ġ 0 Ġ|| Ġidx Ġ>= Ġcurrent Stack . func Args Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ ARG INVALID , Ġ"${ current Stack . func Simple Name } Ġhas Ġ>= Ġ$ idx Ġargs Ġbug Ġonly Ġgot Ġ${ current Stack . func Args Count } Ġargs ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstore ( current Stack . load Func Args ( idx )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Push Args () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġif Ġ(! current Stack . push Func Args ( obj )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . ARG _ OVER FLOW , Ġobj . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Return () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Stack . isEmpty Stack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . NULL _ STACK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( current Stack . is Yield ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Yield Stack () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Stack . op Return ( current Stack . reg ) ĊĠĠĠĠĠĠĠ Ġswitch Page () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Call () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġcurrent Stack . op Call ( address , Ġpage Name , Ġcurrent Stack . reg . exec Id , Ġpage Name , ĠcurrentPage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. info . get Func Name By Address ( address )) ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġaddress ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reg . page Id Ġ= Ġpage Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Push Null () Ġ{ ĊĠĠĠĠĠĠĠ Ġstore ( RuntimeObject ( null )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Push Zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġstore ( RuntimeObject ( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Push Nan () Ġ{ ĊĠĠĠĠĠĠĠ Ġstore ( RuntimeObject ( null , ĠRuntime ObjectType . k Nan )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Push Ptr ( pc : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstore ( RuntimeObject ( pc )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Push Obj ( obj : ĠRuntime Object ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstore ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Load Var () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġstore ( RuntimeObject . createObject ( current Stack . find Variable ( page Name , Ġidx ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Jump () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġcurrent () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Jump Bool ( bool : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtf Ġ= Ġload Bool () ĊĠĠĠĠĠĠĠ Ġif Ġ( tf Ġ== Ġbool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Jump Bool Ret ain ( bool : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtf Ġ= Ġload Bool Ret ain () ĊĠĠĠĠĠĠĠ Ġif Ġ( tf Ġ== Ġbool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Jump Zero ( bool : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ` val ` Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġif Ġ(` val ` Ġ== Ġ 0 Ġ== Ġbool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Jump Yield () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhash Ġ= ĠRuntime Tools . getY ield Hash ( last Stack , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . func Level , Ġpage Name , Ġcurrent Stack . reg . exec Id Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( stk Yield Map . contains ( hash )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Jump Nan () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġtop () ĊĠĠĠĠĠĠĠ Ġif Ġ( obj . type Ġ== ĠRuntime ObjectType . k Nan ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Import () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġfetch From Global Data ( idx ) ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġobj . string ĊĠĠĠĠĠĠĠ Ġif Ġ( ring Ġ== Ġ 3 Ġ&& Ġ! name . startsWith (" user .")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ IMPORT , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! page Map . contains ( name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ IMPORT , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Map [ name ] ĊĠĠĠĠĠĠĠ Ġpage Refer [ page Name ] !!. add ( page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Load Ex tern () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġfetch From Global Data ( idx ) ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġobj . string ĊĠĠĠĠĠĠĠ Ġvar Ġvalue : ĠRuntime Debug Value ? Ġ= ĠcurrentPage . info . getValue Call ByName ( name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( value . value ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= ĠcurrentPage . info . getAddress Of Export Func ( name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( RuntimeObject ( Runtime Func Object ( page Name , Ġindex ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrefers Ġ= Ġpage Refer [ currentPage . info . data Map [" desc "]. toString ()] !! ĊĠĠĠĠĠĠĠ Ġfor Ġ( page Ġin Ġrefers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġpage . info . getValue Call ByName ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( value . value ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġpage . info . getAddress Of Export Func ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( RuntimeObject ( Runtime Func Object ( page . info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. data Map . get (" desc "). toString (), Ġindex ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ LOAD _ EXTERN , Ġname ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Call Ex tern ( invoke : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġvar Ġname Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( invoke ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġobj : ĠRuntime Object ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( idx Ġ== Ġ- 1 ) Ġ{ Ġ// Ġcall Ġ( call Ġexp ) Ġ( args ...) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġcurrent Stack . level ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ>= Ġ 0 Ġ&& Ġobj Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ= Ġstack [ i ]. find Variable ( page Name , Ġidx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= Ġcurrent Stack . parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ== Ġobj ?. type Ġ-> Ġerr ( RuntimeError . WRONG _ LOAD _ EXTERN , Ġidx . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . type Ġ== ĠRuntime ObjectType . k Func Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunc Ġ= Ġobj . obj Ġas ĠRuntime Func Object ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġfunc . env ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( id , Ġo ) Ġin Ġenv ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . store Closure ( id , Ġo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( obj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġfunc . addr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . op Call ( address , Ġfunc . page , Ġcurrent Stack . reg . exec Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Name , Ġpage Map [ func . page ]. info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Func Name By Address ( address )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġaddress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . page Id Ġ= Ġfunc . page ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Page () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . type Ġ== ĠRuntime ObjectType . k String Ġ-> Ġname Ġ= Ġobj . string ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerr ( RuntimeError . WRONG _ LOAD _ EXTERN , Ġobj . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġfetch From Global Data ( idx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġobj . string ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrefers Ġ= Ġpage Refer [ page Name ] !! ĊĠĠĠĠĠĠĠ Ġfor Ġ( page Ġin Ġrefers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġpage . info . getAddress Of Export Func ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( address Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjmp Page Ġ= Ġpage . info . data Map [" desc "]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . op Call ( address , Ġjmp Page , Ġcurrent Stack . reg . exec Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . page Id , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġaddress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . page Id Ġ= Ġjmp Page ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Page () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( page Ġin Ġrefers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexec Ġ= Ġpage . info . getExec Call ByName ( name ) Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Count Ġ= Ġcurrent Stack . func Args Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtypes Ġ= Ġexec . type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( types . size Ġ!= Ġargs Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ ARG COUNT , Ġname Ġ+ Ġ" Ġ" Ġ+ Ġargs Count . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġmutable ListOf < RuntimeObject >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġargs Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġif Ġ( types . size Ġ> Ġi ) Ġtypes [ i ] Ġelse ĠRuntime ObjectType . k Object ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Param Ġ= Ġcurrent Stack . load Func Args ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= ĠRuntime ObjectType . k Object ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Type Ġ= Ġobj Param . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Type Ġ!= Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠToken . createFrom Object ( obj Param . obj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj TokenType Ġ= ĠRuntime Object . to TokenType ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj TokenType Ġ=== ĠTokenType . ERROR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ ARG TYPE , Ġname Ġ+ Ġ" Ġ" Ġ+ Ġobj TokenType . desc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Token Tools . prom ote ( obj TokenType , Ġtoken )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . UNDEFINED _ CONVERT , Ġname Ġ+ Ġ" Ġ" Ġ+ Ġtoken . toString () Ġ+ Ġ" Ġ" Ġ+ Ġobj TokenType . desc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj Param . obj Ġ= Ġtoken . obj ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add ( obj Param ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . op Call ( current Stack . reg . exec Id , Ġcurrent Stack . reg . page Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id , Ġcurrent Stack . reg . page Id , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠretVal : ĠRuntime Object ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠretVal Ġ= Ġexec . call !! ( args , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e . error Ġ== ĠRuntimeError . TH ROWS _ EXCEPTION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop Push Obj ( RuntimeObject ( e . info )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop Throw () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ret Val Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstore ( RuntimeObject ( null )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstore ( ret Val ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġop Return () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ LOAD _ EXTERN , Ġname ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Help String ( name : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrefers Ġ= Ġpage Refer [ page Name ] !! ĊĠĠĠĠĠĠĠ Ġrefers . forEach Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexec Ġ= Ġpage . info . getExec Call ByName ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exec Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġexec . doc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" è¿ĩç¨ĭ ä¸įåŃĺåľ¨ " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġget Func Addr ( name : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrefers Ġ= Ġpage Refer [ page Name ] !! ĊĠĠĠĠĠĠĠ Ġrefers . forEach Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġpage . info . getAddress Of Export Func ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( address Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaddress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ FUNC NAME , Ġname ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Yield ( input : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( input ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenqueue ( load ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore ( de queue ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Yield Switch ( forward : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( forward ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy ld Line Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Ġ= ĠRuntime Tools . getY ield Hash ( last Stack , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . func Level , Ġpage Name , Ġy ld Line ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! stk Yield Map . contains ( hash )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ COR OUT INE , Ġhash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Stack Ġ= Ġstack [ stk Yield Map [ hash ]] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack Ġ= Ġnew Stack ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Stack . level Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ COR OUT INE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Stack . parent Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ COR OUT INE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack Ġ= Ġstack [ current Stack . parent ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġswitch Page () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġload Yield Data (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġst k Yield Data . size ĊĠĠĠĠĠĠĠ Ġwhile Ġ(! stk Yield Data . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġop Yield ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsize ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġload Yield Args ( args Size : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġargs Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġop Push Args () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear Yield Stack () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcurrent Stack . yield ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack . remove At ( stack . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġst k Yield Map . pop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reset Yield () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Yield Create Context () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Stack Ġ= ĠRuntime Stack ( stack . size ) ĊĠĠĠĠĠĠĠ Ġnew Stack . parent Ġ= Ġcurrent Stack . level ĊĠĠĠĠĠĠĠ Ġval Ġy ld Line Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠ Ġval Ġhash Ġ= ĠRuntime Tools . getY ield Hash ( current Stack . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . func Level , Ġpage Name , Ġy ld Line ) ĊĠĠĠĠĠĠĠ Ġst k Yield Map . add ( hash , Ġnew Stack . level ) ĊĠĠĠĠĠĠĠ Ġcurrent Stack . add Yield () ĊĠĠĠĠĠĠĠ Ġstack . add ( new Stack ) ĊĠĠĠĠĠĠĠ Ġrefresh Stack () ĊĠĠĠĠĠĠĠ Ġval Ġyield Size Ġ= Ġload Yield Data () ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġload Int () ĊĠĠĠĠĠĠĠ Ġop Open Func () ĊĠĠĠĠĠĠĠ Ġload Yield Args ( yield Size Ġ- Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġop Call () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġop Call Ex tern ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġop Call Ex tern ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġop Yield Destroy Context () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġst k Ġ= Ġlast Stack ĊĠĠĠĠĠĠĠ Ġstack . remove At ( stack . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġst k Yield Map . pop () ĊĠĠĠĠĠĠĠ Ġcurrent Stack Ġ= Ġstack [ stk ] ĊĠĠĠĠĠĠĠ Ġcurrent Stack . pop Yield () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Scope ( enter : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Stack . func Level Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . EMPTY _ CALL STACK ) ĊĠĠĠĠĠĠĠ Ġif Ġ( enter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . enter Scope () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . leave Scope () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Arr () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠ Ġval Ġarr Ġ= ĠRuntime Array () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarr . add ( load ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( RuntimeObject ( arr )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Map () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠRuntime Map () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . put ( load String (), Ġload ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( RuntimeObject ( map )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Index () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġval Ġtype Idx Ġ= Ġindex . type ĊĠĠĠĠĠĠĠ Ġval Ġtype Obj Ġ= Ġobj . type ĊĠĠĠĠĠĠĠ Ġif Ġ( type Idx Ġ== ĠRuntime ObjectType . k Int ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Obj Ġ== ĠRuntime ObjectType . k Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( RuntimeObject ( obj . array [ index . int ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Obj Ġ== ĠRuntime ObjectType . k String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( RuntimeObject ( obj . string [ index . int ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Idx Ġ== ĠRuntime ObjectType . k String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Obj Ġ== ĠRuntime ObjectType . k Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( RuntimeObject ( obj . map [ index . obj . toString () ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ ARG TYPE , Ġobj . toString () Ġ+ Ġ", Ġ" Ġ+ Ġindex . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Index Assign () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġval Ġexp Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġval Ġtype Idx Ġ= Ġindex . type ĊĠĠĠĠĠĠĠ Ġval Ġtype Obj Ġ= Ġobj . type ĊĠĠĠĠĠĠĠ Ġif Ġ( type Idx Ġ== ĠRuntime ObjectType . k Int ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Obj Ġ== ĠRuntime ObjectType . k Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . array [( index . obj Ġas ĠLong ). toInt ()] Ġ= Ġexp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( obj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Idx Ġ== ĠRuntime ObjectType . k String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Obj Ġ== ĠRuntime ObjectType . k Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . map . put ( index . obj . toString (), Ġexp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . push Data ( obj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġerr ( RuntimeError . WRONG _ ARG TYPE , Ġobj . toString () Ġ+ Ġ", Ġ" Ġ+ Ġindex . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Try () Ġ{ ĊĠĠĠĠĠĠĠ Ġtries Count ++ ĊĠĠĠĠĠĠĠ Ġval Ġjmp Ġ= Ġcurrent () ĊĠĠĠĠĠĠĠ Ġif Ġ( jmp Ġ!= Ġ- 1 Ġ&& Ġcurrent Stack . tr ys Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . DUP _ EXCEPTION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠ Ġcurrent Stack . tr ys Ġ= Ġjmp ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( RuntimeException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġop Throw () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġif Ġ( tri es Count Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj . type Ġ!= ĠRuntime ObjectType . k Null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . TH ROWS _ EXCEPTION , Ġobj . obj . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( RuntimeError . TH ROWS _ EXCEPTION , Ġ" NULL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( current Stack . has No Try ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( current Stack . has No Try ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop Yield Switch ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Yield Stack () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( current Stack . has Catch ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġop Scope ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhile Ġ( current Stack . tr ys Ġ== Ġ- 1 ) Ġ{ Ġ// Ġredirect Ġto Ġtry Ġstack ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Stack . op Return ( current Stack . reg ) Ġ// Ġclear Ġstack ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reg . exec Id Ġ= Ġcurrent Stack . tr ys ĊĠĠĠĠĠĠĠ Ġstore ( obj ) ĊĠĠĠĠĠĠĠ Ġcurrent Stack . reset Try () ĊĠĠĠĠĠĠĠ Ġtries Count -- ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogger . getLogger (" machine ") ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmodules System : ĠList < I Interpreter Module > ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmodules User : ĠList < I Interpreter Module > ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Loading Ġmodules ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodules System Ġ= Ġmutable ListOf ( Module Base . instance , ĠModule Math . instance , ĠModule List . instance , ĠModule String . instance , ĠModule Proc . instance , ĠModule Function . instance , ĠModule UI . instance , ĠModule Task . instance , ĠModule Remote . instance , ĠModule L isp . instance , ĠModule Net . instance , ĠModule File . instance , ĠModule Class . instance , ĠModule Std Base . instance , ĠModule Std Shell . instance ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Loading Ġuser Ġmodules ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodules User Ġ= Ġmutable ListOf ( Module User Base . instance , ĠModule User Web . instance , ĠModule User L isp . instance , ĠModule User C Parser . instance ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ