/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ċ Ġ* Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ċ Ġ* Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ċ Ġ* Ġeither Ġexpress Ġor Ġimplied . ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġkw asm . format . text . token . util Ċ Ċ import Ġkw asm . format . Parse Context Ċ import Ġkw asm . format . ParseException Ċ import Ġkw asm . format . shift Column By Ċ import Ġkw asm . format . text . token . util . String Constants . BACK SL ASH Ċ import Ġkw asm . format . text . token . util . String Constants . DELETE Ċ import Ġkw asm . format . text . token . util . String Constants . D QUOTE Ċ import Ġkw asm . format . text . token . util . String Constants . N Ċ import Ġkw asm . format . text . token . util . String Constants . NEW LINE Ċ import Ġkw asm . format . text . token . util . String Constants . QUOTE Ċ import Ġkw asm . format . text . token . util . String Constants . R Ċ import Ġkw asm . format . text . token . util . String Constants . RETURN Ċ import Ġkw asm . format . text . token . util . String Constants . SPACE Ċ import Ġkw asm . format . text . token . util . String Constants . T Ċ import Ġkw asm . format . text . token . util . String Constants . TAB Ċ import Ġkw asm . format . text . token . util . String Constants . UNICODE _ PATTERN Ċ import Ġkotlin . math . pow Ċ Ċ /** Ċ Ġ* ĠPattern Ġto Ġcheck Ġfor Ġvalid ĠString Char Ġelements . Ċ Ġ* ĠFrom Ġ[ the Ġdocs ]( https :// web assembly . github . io / spec / core / text / values . html # text - string ): Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* ĠĠ Ġstring char Ġ::= Ġc : char ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> Ġc Ġ( if Ġc Ġâī ¥ ĠU + 2 0 ĠâĪ § Ġc Ġâī ł ĠU + 7 F ĠâĪ § Ġc Ġâī ł ĠâĢĺ " âĢĻ ĠâĪ § Ġc Ġâī ł ĠâĢĺ âĪ ĸ âĢĻ ) Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ t ' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 0 9 Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ n ' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 0 A Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ r ' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 0 D Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ "' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 2 2 Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ '' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 2 7 Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ \' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 5 C Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ u {' Ġn : hex num Ġ' }' ĠĠĠĠĠ Ġ=> ĠU +( n ) Ġ( if Ġn Ġ< Ġ 0 xD 8 0 0 ĠâĪ ¨ Ġ 0 xE 0 0 0 Ġâī ¤ Ġn Ġ< Ġ 0 x 1 1 0 0 0 0 ) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ const Ġval ĠSTRING CHAR _ PATTERN Ġ= Ġ" ([^ \\ u 0 0 7 F \" \\\\ ] |( \\\\ ( t | n | r | \" | \' |' | u \\ { ([ 0 - 9 a - fA - F ]+ )\\ } ))) " Ċ Ċ /** Ċ Ġ* ĠFrom Ġ[ the Ġdocs ]( https :// web assembly . github . io / spec / core / text / values . html # text - string ): Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* ĠĠ Ġstring elem Ġ::= Ġs : string char ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> Ġs Ġas ĠString Char Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ ' Ġn : he xd ig it Ġm : he xd ig it ĠĠ Ġ=> ĠString Char ( 1 6 Ġ* Ġn Ġ+ Ġm , Ġ 3 ) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ const Ġval ĠSTR INGE LEM _ PATTERN Ġ= Ġ"( ($ STRING CHAR _ PATTERN )| ( \\\\ [ 0 - 9 a - fA - F ]{ 2 })) " Ċ Ċ /** Ċ Ġ* ĠParses Ġa Ġsign Ġ(` + ` Ġor Ġ`- `) Ġfrom Ġthe Ġbeginning Ġof Ġthe Ġreceiving Ġ[ CharSequence ], Ġand Ġreturns Ġthe Ċ Ġ* Ġsign Ġvalue Ġand Ġintended Ġoffset Ġfor Ġparsing Ġthe Ġremainder Ġof Ġthe Ġvalue . Ċ Ġ*/ Ċ fun ĠCharSequence . parse Long Sign (): ĠPair < Int , ĠLong > Ġ= Ġwhen Ġ( this [ 0 ]) Ġ{ ĊĠĠĠ Ġ'-' Ġ-> ĠNumber Constants . negative Long With Offset ĊĠĠĠ Ġ'+' Ġ-> ĠNumber Constants . positive Long With Offset ĊĠĠĠ Ġelse Ġ-> ĠNumber Constants . positive Long Ċ } Ċ Ċ /** ĠParses Ġa Ġdigit Ġ( as Ġa Ġ[ Byte ]) Ġfrom Ġthe Ġreceiving Ġ[ CharSequence ] Ġat Ġthe Ġgiven Ġ[ index ]. Ġ*/ Ċ fun ĠCharSequence . parse Digit ( index : ĠInt , Ġcontext : ĠParse Context ? Ġ= Ġnull ): ĠByte Ġ= ĊĠĠĠ Ġthis [ index ]. parse Digit ( context ) Ċ fun ĠInt Array . parse Digit ( index : ĠInt , Ġcontext : ĠParse Context ? Ġ= Ġnull ): ĠByte Ġ= ĊĠĠĠ Ġthis [ index ]. to Char (). parse Digit ( context ) Ċ fun ĠChar . parse Digit ( context : ĠParse Context ? Ġ= Ġnull ): ĠByte Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġ' 0 ', Ġ' 1 ', Ġ' 2 ', Ġ' 3 ', Ġ' 4 ', Ġ' 5 ', Ġ' 6 ', Ġ' 7 ', Ġ' 8 ', Ġ' 9 ' Ġ-> Ġ( toInt () Ġ- Ġ 4 8 ). to Byte () ĊĠĠĠ Ġ' a ', Ġ' b ', Ġ' c ', Ġ' d ', Ġ' e ', Ġ' f ' Ġ-> Ġ( toInt () Ġ- Ġ 9 7 Ġ+ Ġ 1 0 ). to Byte () ĊĠĠĠ Ġ' A ', Ġ' B ', Ġ' C ', Ġ' D ', Ġ' E ', Ġ' F ' Ġ-> Ġ( toInt () Ġ- Ġ 6 5 Ġ+ Ġ 1 0 ). to Byte () ĊĠĠĠ Ġ'_' Ġ-> ĠNumber Constants . UNDER SCORE ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠParseException (" Illegal Ġchar Ġ'$ this ' Ġin Ġexpected Ġnumber .", Ġcontext ) Ċ } Ċ Ċ /** Ċ Ġ* ĠParses Ġa Ġ` string elem ` Ġfrom Ġthe Ġreceiving Ġ[ CharSequence ] Ġat Ġthe Ġgiven Ġ[ index ] Ġas Ġa Ġ[ String Char ]. Ċ Ġ* Ċ Ġ* ĠFrom Ġ[ the Ġdocs ]( https :// web assembly . github . io / spec / core / text / values . html # text - string ): Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* ĠĠ Ġstring elem Ġ::= Ġs : string char ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> Ġs Ġas ĠString Char Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ ' Ġn : he xd ig it Ġm : he xd ig it ĠĠ Ġ=> ĠString Char ( 1 6 Ġ* Ġn Ġ+ Ġm , Ġ 3 ) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun ĠCharSequence . parse String Elem ( ĊĠĠĠ Ġindex : ĠInt , ĊĠĠĠ Ġin out Val : ĠString Char Ġ= ĠString Char (), ĊĠĠĠ Ġcontext : ĠParse Context ? Ġ= Ġnull Ċ ): ĠString Char Ġ= Ġcode Points (). toArray (). parse String Elem ( index , Ġin out Val , Ġcontext ) Ċ fun ĠInt Array . parse String Elem ( ĊĠĠĠ Ġindex : ĠInt , ĊĠĠĠ Ġin out Val : ĠString Char Ġ= ĠString Char (), ĊĠĠĠ Ġcontext : ĠParse Context ? Ġ= Ġnull Ċ ): ĠString Char Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( ĊĠĠĠĠĠĠĠ Ġthis [ index ] Ġ== ĠBACK SL ASH Ġ&& ĊĠĠĠĠĠĠĠ Ġindex Ġ<= Ġthis . size Ġ- Ġ 3 Ġ&& ĊĠĠĠĠĠĠĠ Ġthis [ index Ġ+ Ġ 1 ]. to Char (). is Hex Digit () Ġ&& ĊĠĠĠĠĠĠĠ Ġthis [ index Ġ+ Ġ 2 ]. to Char (). is Hex Digit () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġin out Val . sequence Length Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġin out Val . value Ġ= Ġ 1 6 Ġ* Ġparse Digit ( index Ġ+ Ġ 1 , Ġcontext ) Ġ+ Ġparse Digit ( index Ġ+ Ġ 2 , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġin out Val ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġparse String Char ( index , Ġin out Val , Ġcontext ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠChar . is Hex Digit (): ĠBoolean Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġ' 0 ', Ġ' 1 ', Ġ' 2 ', Ġ' 3 ', Ġ' 4 ', Ġ' 5 ', Ġ' 6 ', Ġ' 7 ', Ġ' 8 ', Ġ' 9 ' Ġ-> Ġtrue ĊĠĠĠ Ġ' a ', Ġ' b ', Ġ' c ', Ġ' d ', Ġ' e ', Ġ' f ' Ġ-> Ġtrue ĊĠĠĠ Ġ' A ', Ġ' B ', Ġ' C ', Ġ' D ', Ġ' E ', Ġ' F ' Ġ-> Ġtrue ĊĠĠĠ Ġelse Ġ-> Ġfalse Ċ } Ċ Ċ /** Ċ Ġ* ĠParses Ġa Ġ[ String Char ] Ġfrom Ġthe Ġreceiving Ġ[ CharSequence ] Ġat Ġthe Ġgiven Ġ[ index ]. Ċ Ġ* Ċ Ġ* ĠFrom Ġ[ the Ġdocs ]( https :// web assembly . github . io / spec / core / text / values . html # text - string ): Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* ĠĠ Ġstring char Ġ::= Ġc : char ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> Ġc Ġ( if Ġc Ġâī ¥ ĠU + 2 0 ĠâĪ § Ġc Ġâī ł ĠU + 7 F ĠâĪ § Ġc Ġâī ł ĠâĢĺ " âĢĻ ĠâĪ § Ġc Ġâī ł ĠâĢĺ âĪ ĸ âĢĻ ) Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ t ' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 0 9 Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ n ' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 0 A Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ r ' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 0 D Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ "' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 2 2 Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ '' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 2 7 Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ \' ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ=> ĠU + 5 C Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' âĪ ĸ u {' Ġn : hex num Ġ' }' ĠĠĠĠĠ Ġ=> ĠU +( n ) Ġ( if Ġn Ġ< Ġ 0 xD 8 0 0 ĠâĪ ¨ Ġ 0 xE 0 0 0 Ġâī ¤ Ġn Ġ< Ġ 0 x 1 1 0 0 0 0 ) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ @ Opt In ( Experimental Unsigned Types :: class ) Ċ fun ĠCharSequence . parse String Char ( ĊĠĠĠ Ġindex : ĠInt , ĊĠĠĠ Ġin out Val : ĠString Char Ġ= ĠString Char (), ĊĠĠĠ Ġcontext : ĠParse Context ? Ġ= Ġnull Ċ ): ĠString Char Ġ= Ġcode Points (). toArray (). parse String Char ( index , Ġin out Val , Ġcontext ) Ċ Ċ @ Opt In ( Experimental Unsigned Types :: class ) Ċ fun ĠInt Array . parse String Char ( ĊĠĠĠ Ġindex : ĠInt , ĊĠĠĠ Ġin out Val : ĠString Char Ġ= ĠString Char (), ĊĠĠĠ Ġcontext : ĠParse Context ? Ġ= Ġnull Ċ ): ĠString Char Ġ{ ĊĠĠĠ Ġval Ġc Ġ= Ġthis [ index ] ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġc Ġ== ĠBACK SL ASH Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġescaped Ġ= Ġthis . take If Ġ{ Ġindex Ġ<= Ġit . size Ġ- Ġ 2 Ġ} ?. get ( index Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠParseException (" At tempting Ġto Ġescape Ġan Ġempty Ġsequence ", Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunicode Match String Ġ= ĠString ( this , Ġindex , Ġthis . size Ġ- Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunicode Match Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUNICODE _ PATTERN . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find ( unicode Match String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . range . first Ġ== Ġ 0 Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġin out Val . sequence Length Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin out Val . value Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġescaped Ġ== ĠT Ġ-> ĠTAB ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġescaped Ġ== ĠN Ġ-> ĠNEW LINE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġescaped Ġ== ĠR Ġ-> ĠRETURN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġescaped Ġ== ĠD QUOTE Ġ-> ĠD QUOTE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġescaped Ġ== ĠQU OTE Ġ-> ĠQU OTE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġescaped Ġ== ĠBACK SL ASH Ġ-> ĠBACK SL ASH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunicode Match Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠParse Ġa Ġhex Ġnumber Ġfrom Ġthe Ġmatch . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhex Num Ġ= Ġunicode Match . groups [ 1 ]?. value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNum ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . shift Column By ( unicode Match . groups [ 1 ]?. range ?. first Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ Ġforce Hex Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠParseException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Illegal Ġunicode Ġvalue : Ġ${ unicode Match . value }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin out Val . sequence Length Ġ= Ġunicode Match . value . length ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthat Ġthe Ġvalue Ġis Ġwithin Ġthe Ġsupported Ġrange . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunicode Value Ġ= Ġhex Num . value . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( unicode Value Ġ>= Ġ 0 xD 8 0 0 Ġ&& Ġunicode Value Ġ! in Ġ 0 xE 0 0 0 Ġuntil Ġ 0 x 1 1 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠParseException (" Unicode Ġvalue Ġout Ġof Ġvalid Ġrange ", Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunicode Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc String Ġ= Ġc . toString As Code point () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġescaped String Ġ= Ġescaped . toString As Code point () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠParseException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Invalid Ġescape Ġsequence : Ġ$ c String $ escaped String ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġc Ġ>= ĠSPACE Ġ&& Ġc Ġ!= ĠDELETE Ġ&& Ġc Ġ!= ĠD QUOTE Ġ&& Ġc Ġ!= ĠBACK SL ASH Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin out Val . sequence Length Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin out Val . value Ġ= Ġc ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠParseException (" Invalid ĠString Char : Ġ$ c Ġ( U +$ c )", Ġcontext . shift Column By ( index )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġin out Val Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġsingle Ġcharacter Ġas Ġa Ġunicode Ġcode point , Ġand Ġits Ġoriginal Ġlength Ġin Ġa Ġwast Ġfile Ġas Ċ Ġ* Ġpart Ġof Ġa Ġstring Ġliteral . Ċ Ġ*/ Ċ data Ġclass ĠString Char ( var Ġvalue : ĠInt Ġ= Ġ- 1 , Ġvar Ġsequence Length : ĠInt Ġ= Ġ 1 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĠString ( code Points Ġ= Ġint ArrayOf ( value ), Ġoffset Ġ= Ġ 0 , Ġlength Ġ= Ġ 1 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠFrom Ġ[ the Ġdocs ]( https :// web assembly . github . io / spec / core / syntax / values . html # aux - sign ific and ). Ċ Ġ*/ Ċ fun ĠInt . sign ific and ( context : ĠParse Context ? Ġ= Ġnull ): ĠInt Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠ 3 2 Ġ-> Ġ 2 3 ĊĠĠĠĠ 6 4 Ġ-> Ġ 5 2 ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠParseException (" Illegal Ġsignific and ", Ġcontext ) Ċ } Ċ Ċ /** Ċ Ġ* ĠFrom Ġ[ the Ġdocs ]( https :// web assembly . github . io / spec / core / syntax / values . html # aux - exponent ). Ċ Ġ*/ Ċ fun ĠInt . exp on ( context : ĠParse Context ? Ġ= Ġnull ): ĠInt Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠ 3 2 Ġ-> Ġ 8 ĊĠĠĠĠ 6 4 Ġ-> Ġ 1 1 ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠParseException (" Illegal Ġexp on ", Ġcontext ) Ċ } Ċ Ċ /** Ċ Ġ* ĠFrom Ġ[ the Ġdocs ]( https :// web assembly . github . io / spec / core / syntax / values . html # aux - can on ). Ċ Ġ*/ Ċ data Ġclass ĠCan on in cal NaN ( val Ġmagnitude : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġvalue : ĠLong Ġ= Ġmagnitude . can on () Ċ } Ċ Ċ /** Ċ Ġ* ĠFrom Ġ[ the Ġdocs ]( https :// web assembly . github . io / spec / core / syntax / values . html # aux - can on ). Ċ Ġ*/ Ċ fun ĠInt . can on ( context : ĠParse Context ? Ġ= Ġnull ): ĠLong Ġ= ĊĠĠĠĠ 2 . 0 . pow ( this . sign ific and ( context ) Ġ- Ġ 1 ). to Long () Ċ Ċ /** ĠReturn Ġvalue Ġof Ġ[ Raw Token ]' s Ġ` find \[ Token ]` Ġextension Ġmethods . Ġ*/ Ċ data Ġclass ĠToken Match Result ( val Ġindex : ĠInt , Ġval Ġsequence : ĠCharSequence ) Ċ Ċ private Ġfun ĠInt . toString As Code point (): ĠString Ġ= ĠString ( int ArrayOf ( this ), Ġ 0 , Ġ 1 ) Ċ Ċ internal Ġobject ĠNumber Constants Ġ{ ĊĠĠĠ Ġval Ġnegative Long With Offset Ġ= Ġ 1 Ġto Ġ- 1 L ĊĠĠĠ Ġval Ġpositive Long With Offset Ġ= Ġ 1 Ġto Ġ 1 L ĊĠĠĠ Ġval Ġpositive Long Ġ= Ġ 0 Ġto Ġ 1 L ĊĊĠĠĠ Ġconst Ġval ĠUN DER SCORE Ġ= Ġ(- 1 ). to Byte () ĊĊĠĠĠ Ġconst Ġval ĠDEFAULT _ FLOAT _ MAG N IT UDE Ġ= Ġ 6 4 Ċ } Ċ Ċ internal Ġobject ĠString Constants Ġ{ ĊĠĠĠ Ġconst Ġval ĠT Ġ= Ġ' t '. toInt () ĊĠĠĠ Ġconst Ġval ĠN Ġ= Ġ' n '. toInt () ĊĠĠĠ Ġconst Ġval ĠR Ġ= Ġ' r '. toInt () ĊĠĠĠ Ġconst Ġval ĠSPACE Ġ= Ġ'\ u 0 0 2 0 '. toInt () ĊĠĠĠ Ġconst Ġval ĠDELETE Ġ= Ġ'\ u 0 0 7 F '. toInt () ĊĠĠĠ Ġconst Ġval ĠQU OTE Ġ= Ġ'\ u 0 0 2 7 '. toInt () ĊĠĠĠ Ġconst Ġval ĠD QUOTE Ġ= Ġ'\ u 0 0 2 2 '. toInt () ĊĠĠĠ Ġconst Ġval ĠBACK SL ASH Ġ= Ġ'\ u 0 0 5 C '. toInt () ĊĠĠĠ Ġconst Ġval ĠTAB Ġ= Ġ'\ u 0 0 0 9 '. toInt () ĊĠĠĠ Ġconst Ġval ĠNEW LINE Ġ= Ġ'\ u 0 0 0 A '. toInt () ĊĠĠĠ Ġconst Ġval ĠRETURN Ġ= Ġ'\ u 0 0 0 D '. toInt () ĊĊĠĠĠ Ġval ĠUNICODE _ PATTERN Ġ= Ġobject Ġ: ĠThread Local < Regex >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinitial Value (): ĠRegex Ġ= Ġ" \\\\ u \\ { ([ 0 - 9 a - fA - F ]+ )\\ }". to Regex () ĊĠĠĠ Ġ} Ċ } Ċ