@@ -4,8 +4,6 @@ import * as bytes from "@goscript/bytes/index.js"
44
55import * as fmt from "@goscript/fmt/index.js"
66
7- import * as scannerhooks from "@goscript/go/internal/scannerhooks/index.js"
8-
97import * as token from "@goscript/go/token/index.js"
108
119import * as filepath from "@goscript/path/filepath/index.js"
@@ -123,14 +121,6 @@ export class Scanner {
123121 this . _fields . nlPos . value = value
124122 }
125123
126- // end position; defined only for STRING tokens
127- public get stringEnd ( ) : token . Pos {
128- return this . _fields . stringEnd . value
129- }
130- public set stringEnd ( value : token . Pos ) {
131- this . _fields . stringEnd . value = value
132- }
133-
134124 // public state - ok to modify
135125 // number of errors encountered
136126 public get ErrorCount ( ) : number {
@@ -152,11 +142,10 @@ export class Scanner {
152142 lineOffset : $ . VarRef < number > ;
153143 insertSemi : $ . VarRef < boolean > ;
154144 nlPos : $ . VarRef < token . Pos > ;
155- stringEnd : $ . VarRef < token . Pos > ;
156145 ErrorCount : $ . VarRef < number > ;
157146 }
158147
159- constructor ( init ?: Partial < { ErrorCount ?: number , ch ?: number , dir ?: string , err ?: ErrorHandler | null , file ?: token . File | null , insertSemi ?: boolean , lineOffset ?: number , mode ?: Mode , nlPos ?: token . Pos , offset ?: number , rdOffset ?: number , src ?: $ . Bytes , stringEnd ?: token . Pos } > ) {
148+ constructor ( init ?: Partial < { ErrorCount ?: number , ch ?: number , dir ?: string , err ?: ErrorHandler | null , file ?: token . File | null , insertSemi ?: boolean , lineOffset ?: number , mode ?: Mode , nlPos ?: token . Pos , offset ?: number , rdOffset ?: number , src ?: $ . Bytes } > ) {
160149 this . _fields = {
161150 file : $ . varRef ( init ?. file ?? null ) ,
162151 dir : $ . varRef ( init ?. dir ?? "" ) ,
@@ -169,7 +158,6 @@ export class Scanner {
169158 lineOffset : $ . varRef ( init ?. lineOffset ?? 0 ) ,
170159 insertSemi : $ . varRef ( init ?. insertSemi ?? false ) ,
171160 nlPos : $ . varRef ( init ?. nlPos ?? 0 as token . Pos ) ,
172- stringEnd : $ . varRef ( init ?. stringEnd ?? 0 as token . Pos ) ,
173161 ErrorCount : $ . varRef ( init ?. ErrorCount ?? 0 )
174162 }
175163 }
@@ -188,7 +176,6 @@ export class Scanner {
188176 lineOffset : $ . varRef ( this . _fields . lineOffset . value ) ,
189177 insertSemi : $ . varRef ( this . _fields . insertSemi . value ) ,
190178 nlPos : $ . varRef ( this . _fields . nlPos . value ) ,
191- stringEnd : $ . varRef ( this . _fields . stringEnd . value ) ,
192179 ErrorCount : $ . varRef ( this . _fields . ErrorCount . value )
193180 }
194181 return cloned
@@ -758,7 +745,7 @@ export class Scanner {
758745 return $ . bytesToString ( $ . goSlice ( s . src , offs , s . offset ) )
759746 }
760747
761- public async scanRawString ( ) : Promise < [ string , number ] > {
748+ public async scanRawString ( ) : Promise < string > {
762749 const s = this
763750 let offs = s . offset - 1
764751 let hasCR = false
@@ -777,11 +764,10 @@ export class Scanner {
777764 }
778765 }
779766 let lit = $ . goSlice ( s . src , offs , s . offset )
780- let rawLen = $ . len ( lit )
781767 if ( hasCR ) {
782768 lit = stripCR ( lit , false )
783769 }
784- return [ $ . bytesToString ( lit ) , rawLen ]
770+ return $ . bytesToString ( lit )
785771 }
786772
787773 public async skipWhitespace ( ) : Promise < void > {
@@ -922,7 +908,6 @@ export class Scanner {
922908 insertSemi = true
923909 tok = token . STRING
924910 lit = await s . scanString ( )
925- s . stringEnd = pos + ( $ . len ( lit ) as token . Pos )
926911 break
927912 }
928913 case 39 : {
@@ -934,9 +919,7 @@ export class Scanner {
934919 case 96 : {
935920 insertSemi = true
936921 tok = token . STRING
937- let rawLen : number = 0
938- ; [ lit , rawLen ] = await s . scanRawString ( )
939- s . stringEnd = pos + ( rawLen as token . Pos )
922+ lit = await s . scanRawString ( )
940923 break
941924 }
942925 case 58 : {
@@ -1112,21 +1095,14 @@ export class Scanner {
11121095 static __typeInfo = $ . registerStructType (
11131096 'go/scanner.Scanner' ,
11141097 new Scanner ( ) ,
1115- [ { name : "next" , args : [ ] , returns : [ ] } , { name : "peek" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "byte" } } ] } , { name : "Init" , args : [ { name : "file" , type : { kind : $ . TypeKind . Pointer , elemType : "go/token.File" } } , { name : "src" , type : { kind : $ . TypeKind . Slice , elemType : { kind : $ . TypeKind . Basic , name : "byte" } } } , { name : "err" , type : "go/scanner.ErrorHandler" } , { name : "mode" , type : "go/scanner.Mode" } ] , returns : [ ] } , { name : "error" , args : [ { name : "offs" , type : { kind : $ . TypeKind . Basic , name : "int" } } , { name : "msg" , type : { kind : $ . TypeKind . Basic , name : "string" } } ] , returns : [ ] } , { name : "errorf" , args : [ { name : "offs" , type : { kind : $ . TypeKind . Basic , name : "int" } } , { name : "format" , type : { kind : $ . TypeKind . Basic , name : "string" } } , { name : "args" , type : { kind : $ . TypeKind . Slice , elemType : { kind : $ . TypeKind . Interface , methods : [ ] } } } ] , returns : [ ] } , { name : "scanComment" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "string" } } , { type : { kind : $ . TypeKind . Basic , name : "int" } } ] } , { name : "updateLineInfo" , args : [ { name : "next" , type : { kind : $ . TypeKind . Basic , name : "int" } } , { name : "offs" , type : { kind : $ . TypeKind . Basic , name : "int" } } , { name : "text" , type : { kind : $ . TypeKind . Slice , elemType : { kind : $ . TypeKind . Basic , name : "byte" } } } ] , returns : [ ] } , { name : "scanIdentifier" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } , { name : "digits" , args : [ { name : "base" , type : { kind : $ . TypeKind . Basic , name : "int" } } , { name : "invalid" , type : { kind : $ . TypeKind . Pointer , elemType : { kind : $ . TypeKind . Basic , name : "int" } } } ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "int" } } ] } , { name : "scanNumber" , args : [ ] , returns : [ { type : "go/token.Token" } , { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } , { name : "scanEscape" , args : [ { name : "quote" , type : { kind : $ . TypeKind . Basic , name : "rune" } } ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "bool" } } ] } , { name : "scanRune" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } , { name : "scanString" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } , { name : "scanRawString" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "string" } } , { type : { kind : $ . TypeKind . Basic , name : "int" } } ] } , { name : "skipWhitespace" , args : [ ] , returns : [ ] } , { name : "switch2" , args : [ { name : "tok0" , type : "go/token.Token" } , { name : "tok1" , type : "go/token.Token" } ] , returns : [ { type : "go/token.Token" } ] } , { name : "switch3" , args : [ { name : "tok0" , type : "go/token.Token" } , { name : "tok1" , type : "go/token.Token" } , { name : "ch2" , type : { kind : $ . TypeKind . Basic , name : "rune" } } , { name : "tok2" , type : "go/token.Token" } ] , returns : [ { type : "go/token.Token" } ] } , { name : "switch4" , args : [ { name : "tok0" , type : "go/token.Token" } , { name : "tok1" , type : "go/token.Token" } , { name : "ch2" , type : { kind : $ . TypeKind . Basic , name : "rune" } } , { name : "tok2" , type : "go/token.Token" } , { name : "tok3" , type : "go/token.Token" } ] , returns : [ { type : "go/token.Token" } ] } , { name : "Scan" , args : [ ] , returns : [ { type : "go/token.Pos" } , { type : "go/token.Token" } , { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } ] ,
1098+ [ { name : "next" , args : [ ] , returns : [ ] } , { name : "peek" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "byte" } } ] } , { name : "Init" , args : [ { name : "file" , type : { kind : $ . TypeKind . Pointer , elemType : "go/token.File" } } , { name : "src" , type : { kind : $ . TypeKind . Slice , elemType : { kind : $ . TypeKind . Basic , name : "byte" } } } , { name : "err" , type : "go/scanner.ErrorHandler" } , { name : "mode" , type : "go/scanner.Mode" } ] , returns : [ ] } , { name : "error" , args : [ { name : "offs" , type : { kind : $ . TypeKind . Basic , name : "int" } } , { name : "msg" , type : { kind : $ . TypeKind . Basic , name : "string" } } ] , returns : [ ] } , { name : "errorf" , args : [ { name : "offs" , type : { kind : $ . TypeKind . Basic , name : "int" } } , { name : "format" , type : { kind : $ . TypeKind . Basic , name : "string" } } , { name : "args" , type : { kind : $ . TypeKind . Slice , elemType : { kind : $ . TypeKind . Interface , methods : [ ] } } } ] , returns : [ ] } , { name : "scanComment" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "string" } } , { type : { kind : $ . TypeKind . Basic , name : "int" } } ] } , { name : "updateLineInfo" , args : [ { name : "next" , type : { kind : $ . TypeKind . Basic , name : "int" } } , { name : "offs" , type : { kind : $ . TypeKind . Basic , name : "int" } } , { name : "text" , type : { kind : $ . TypeKind . Slice , elemType : { kind : $ . TypeKind . Basic , name : "byte" } } } ] , returns : [ ] } , { name : "scanIdentifier" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } , { name : "digits" , args : [ { name : "base" , type : { kind : $ . TypeKind . Basic , name : "int" } } , { name : "invalid" , type : { kind : $ . TypeKind . Pointer , elemType : { kind : $ . TypeKind . Basic , name : "int" } } } ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "int" } } ] } , { name : "scanNumber" , args : [ ] , returns : [ { type : "go/token.Token" } , { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } , { name : "scanEscape" , args : [ { name : "quote" , type : { kind : $ . TypeKind . Basic , name : "rune" } } ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "bool" } } ] } , { name : "scanRune" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } , { name : "scanString" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } , { name : "scanRawString" , args : [ ] , returns : [ { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } , { name : "skipWhitespace" , args : [ ] , returns : [ ] } , { name : "switch2" , args : [ { name : "tok0" , type : "go/token.Token" } , { name : "tok1" , type : "go/token.Token" } ] , returns : [ { type : "go/token.Token" } ] } , { name : "switch3" , args : [ { name : "tok0" , type : "go/token.Token" } , { name : "tok1" , type : "go/token.Token" } , { name : "ch2" , type : { kind : $ . TypeKind . Basic , name : "rune" } } , { name : "tok2" , type : "go/token.Token" } ] , returns : [ { type : "go/token.Token" } ] } , { name : "switch4" , args : [ { name : "tok0" , type : "go/token.Token" } , { name : "tok1" , type : "go/token.Token" } , { name : "ch2" , type : { kind : $ . TypeKind . Basic , name : "rune" } } , { name : "tok2" , type : "go/token.Token" } , { name : "tok3" , type : "go/token.Token" } ] , returns : [ { type : "go/token.Token" } ] } , { name : "Scan" , args : [ ] , returns : [ { type : "go/token.Pos" } , { type : "go/token.Token" } , { type : { kind : $ . TypeKind . Basic , name : "string" } } ] } ] ,
11161099 Scanner ,
1117- { "file" : { kind : $ . TypeKind . Pointer , elemType : "go/token.File" } , "dir" : { kind : $ . TypeKind . Basic , name : "string" } , "src" : { kind : $ . TypeKind . Slice , elemType : { kind : $ . TypeKind . Basic , name : "byte" } } , "err" : "go/scanner.ErrorHandler" , "mode" : "go/scanner.Mode" , "ch" : { kind : $ . TypeKind . Basic , name : "rune" } , "offset" : { kind : $ . TypeKind . Basic , name : "int" } , "rdOffset" : { kind : $ . TypeKind . Basic , name : "int" } , "lineOffset" : { kind : $ . TypeKind . Basic , name : "int" } , "insertSemi" : { kind : $ . TypeKind . Basic , name : "bool" } , "nlPos" : "go/token.Pos" , "stringEnd" : "go/token.Pos" , " ErrorCount" : { kind : $ . TypeKind . Basic , name : "int" } }
1100+ { "file" : { kind : $ . TypeKind . Pointer , elemType : "go/token.File" } , "dir" : { kind : $ . TypeKind . Basic , name : "string" } , "src" : { kind : $ . TypeKind . Slice , elemType : { kind : $ . TypeKind . Basic , name : "byte" } } , "err" : "go/scanner.ErrorHandler" , "mode" : "go/scanner.Mode" , "ch" : { kind : $ . TypeKind . Basic , name : "rune" } , "offset" : { kind : $ . TypeKind . Basic , name : "int" } , "rdOffset" : { kind : $ . TypeKind . Basic , name : "int" } , "lineOffset" : { kind : $ . TypeKind . Basic , name : "int" } , "insertSemi" : { kind : $ . TypeKind . Basic , name : "bool" } , "nlPos" : "go/token.Pos" , "ErrorCount" : { kind : $ . TypeKind . Basic , name : "int" } }
11181101 ) ;
11191102}
11201103
11211104export let prefix : $ . Bytes = $ . stringToBytes ( "line " )
11221105
1123- // Provide go/parser with backdoor access to the StringEnd information.
1124- export function init ( ) : void {
1125- scannerhooks . StringEnd = ( scanner : null | any ) : token . Pos => {
1126- return $ . mustTypeAssert < Scanner | null > ( scanner , { kind : $ . TypeKind . Pointer , elemType : 'go/scanner.Scanner' } ) ! . stringEnd
1127- }
1128- }
1129-
11301106export function trailingDigits ( text : $ . Bytes ) : [ number , number , boolean ] {
11311107 let i = bytes . LastIndexByte ( text , 58 ) // look from right (Windows filenames may contain ':')
11321108
0 commit comments