@@ -53,7 +53,7 @@ function isInt(src: string) {
5353}
5454
5555function opr ( line : number , character : number ) : Range {
56- return { end : { line, character :character + 1 } , start : { line, character :character } } ;
56+ return { end : { line, character : character + 1 } , start : { line, character : character } } ;
5757}
5858
5959function pos ( line : number , character : number ) : Position {
@@ -69,42 +69,42 @@ function tpr(start: Position, end: Position): Range {
6969 * @param {string } source Source string.
7070 * @returns A list of tokens generated from source string.
7171 * @author efekos
72- * @version 1.0.8
72+ * @version 1.0.9
7373 * @since 0.0.2-alpha
7474 */
7575export function tokenizeSyx ( source : string ) : Token [ ] {
7676 const tokens : Token [ ] = [ ] ;
7777 const src = source . split ( '' ) ;
7878 let lastString = 'n' ;
7979 let inString = false ;
80- function t ( s : string ) {
81- if ( lastString === '\'' && s === '\'' ) { lastString = 'n' ; inString = ! inString ; }
82- if ( lastString === '"' && s === '"' ) { lastString = 'n' ; inString = ! inString ; }
83- if ( lastString === 'n' ) { lastString = s ; inString = ! inString ; }
80+ //TODO single quotes aren't working
81+ function t ( s : string ) {
82+ if ( lastString === 'n' ) { lastString = s ; inString = true ; }
83+ else if ( lastString === '\'' && s === '\'' || ( lastString === '"' && s === '"' ) ) { lastString = 'n' ; inString = false ; } ;
8484 }
8585 let curPos = 1 ;
8686 let curLine = 1 ;
8787
8888 while ( src . length > 0 ) {
89- if ( src [ 0 ] === '/' && src [ 1 ] === '/' && ! inString ) {
89+ if ( src [ 0 ] === '/' && src [ 1 ] === '/' && ! inString ) {
9090 while ( src . length > 0 && src [ 0 ] as string !== '\n' ) {
9191 src . shift ( ) ;
9292 curPos ++ ;
9393 }
9494 }
95- if ( src [ 0 ] === '(' ) tokens . push ( { type : inString ? 20 : TokenType . OpenParen , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
96- else if ( src [ 0 ] === ')' ) tokens . push ( { type : inString ? 20 : TokenType . CloseParen , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
97- else if ( src [ 0 ] === '{' ) tokens . push ( { type : inString ? 20 : TokenType . OpenBrace , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
98- else if ( src [ 0 ] === '}' ) tokens . push ( { type : inString ? 20 : TokenType . CloseBrace , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
99- else if ( src [ 0 ] === '[' ) tokens . push ( { type : inString ? 20 : TokenType . OpenSquare , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
100- else if ( src [ 0 ] === ']' ) tokens . push ( { type : inString ? 20 : TokenType . CloseSquare , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
101- else if ( src [ 0 ] === ',' ) tokens . push ( { type : inString ? 20 : TokenType . Comma , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
102- else if ( src [ 0 ] === ';' ) tokens . push ( { type : inString ? 20 : TokenType . Semicolon , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
103- else if ( src [ 0 ] === '<' ) tokens . push ( { type : inString ? 20 : TokenType . OpenDiamond , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
104- else if ( src [ 0 ] === '>' ) tokens . push ( { type : inString ? 20 : TokenType . CloseDiamond , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
105- else if ( src [ 0 ] === '\'' ) { tokens . push ( { type : TokenType . SingleQuote , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ; t ( '\'' ) ; }
106- else if ( src [ 0 ] === '"' ) { tokens . push ( { type : TokenType . DoubleQuote , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ; t ( '"' ) ; }
107- else if ( src [ 0 ] === '|' ) tokens . push ( { type : inString ? 20 : TokenType . VarSeperator , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
95+ if ( src [ 0 ] === '(' ) tokens . push ( { type : TokenType . OpenParen , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
96+ else if ( src [ 0 ] === ')' ) tokens . push ( { type : TokenType . CloseParen , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
97+ else if ( src [ 0 ] === '{' ) tokens . push ( { type : TokenType . OpenBrace , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
98+ else if ( src [ 0 ] === '}' ) tokens . push ( { type : TokenType . CloseBrace , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
99+ else if ( src [ 0 ] === '[' ) tokens . push ( { type : TokenType . OpenSquare , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
100+ else if ( src [ 0 ] === ']' ) tokens . push ( { type : TokenType . CloseSquare , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
101+ else if ( src [ 0 ] === ',' ) tokens . push ( { type : TokenType . Comma , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
102+ else if ( src [ 0 ] === ';' ) tokens . push ( { type : TokenType . Semicolon , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
103+ else if ( src [ 0 ] === '<' ) tokens . push ( { type : TokenType . OpenDiamond , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
104+ else if ( src [ 0 ] === '>' ) tokens . push ( { type : TokenType . CloseDiamond , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
105+ else if ( src [ 0 ] === '\'' ) { tokens . push ( { type : TokenType . SingleQuote , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ; t ( '\'' ) ; }
106+ else if ( src [ 0 ] === '"' ) { tokens . push ( { type : TokenType . DoubleQuote , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ; t ( '"' ) ; }
107+ else if ( src [ 0 ] === '|' ) tokens . push ( { type : TokenType . VarSeperator , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
108108 else if ( src [ 0 ] === '+' && chars . includes ( src [ 1 ] ) ) {
109109 if ( src [ 1 ] === 's' ) tokens . push ( { type : TokenType . WhitespaceIdentifier , value : '+s' , range : tpr ( pos ( curLine , curPos ) , pos ( curLine , curPos + 2 ) ) } ) ;
110110 curPos += 2 ;
@@ -128,7 +128,7 @@ export function tokenizeSyx(source: string): Token[] {
128128
129129 const reserved = keywords [ ident ] ;
130130 tokens . push ( { type : reserved ?? TokenType . Identifier , value : ident , range : tpr ( pos ( curLine , startPos ) , pos ( curLine , curPos ) ) } ) ;
131- } else if ( isSkippable ( src [ 0 ] ) && ! inString ) {
131+ } else if ( isSkippable ( src [ 0 ] ) && ! inString ) {
132132 src . shift ( ) ;
133133 curPos ++ ;
134134 if ( src [ 0 ] === '\n' ) { curLine ++ ; curPos = 0 ; } ;
@@ -153,19 +153,19 @@ export function tokenizeSys(source: string): Token[] {
153153 const tokens : Token [ ] = [ ] ;
154154 let lastString = 'n' ;
155155 let inString = false ;
156- function t ( s :string ) {
157- if ( lastString === '\'' && s === '\'' ) { lastString = 'n' ; inString = ! inString ; }
158- if ( lastString === '"' && s === '"' ) { lastString = 'n' ; inString = ! inString ; }
159- if ( lastString === 'n' ) { lastString = s ; inString = ! inString ; }
156+ function t ( s : string ) {
157+ if ( lastString === '\'' && s === '\'' ) { lastString = 'n' ; inString = ! inString ; }
158+ if ( lastString === '"' && s === '"' ) { lastString = 'n' ; inString = ! inString ; }
159+ if ( lastString === 'n' ) { lastString = s ; inString = ! inString ; }
160160 }
161161
162162 let curPos = 0 ;
163163 let curLine = 1 ;
164164
165165 while ( src . length > 0 && `${ src [ 0 ] } ${ src [ 1 ] } ${ src [ 2 ] } ` !== ':::' ) {
166- if ( src [ 0 ] === ';' ) tokens . push ( { type : inString ? 20 : TokenType . Semicolon , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
167- else if ( src [ 0 ] === '\'' ) { tokens . push ( { type : TokenType . SingleQuote , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ; t ( '\'' ) ; }
168- else if ( src [ 0 ] === '"' ) { tokens . push ( { type : TokenType . DoubleQuote , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ; t ( '"' ) ; }
166+ if ( src [ 0 ] === ';' ) tokens . push ( { type : TokenType . Semicolon , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ;
167+ else if ( src [ 0 ] === '\'' ) { tokens . push ( { type : TokenType . SingleQuote , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ; t ( '\'' ) ; }
168+ else if ( src [ 0 ] === '"' ) { tokens . push ( { type : TokenType . DoubleQuote , value : src . shift ( ) , range : opr ( curLine , curPos ++ ) } ) ; t ( '"' ) ; }
169169 else if ( isAlphabetic ( src [ 0 ] ) ) {
170170 let ident = '' ;
171171 const startPos = curPos ;
@@ -176,7 +176,7 @@ export function tokenizeSys(source: string): Token[] {
176176
177177 const reserved = keywords [ ident ] ;
178178 tokens . push ( { type : reserved ?? TokenType . Identifier , value : ident , range : tpr ( pos ( curLine , startPos ) , pos ( curLine , curPos ) ) } ) ;
179- } else if ( isSkippable ( src [ 0 ] ) && ! inString ) {
179+ } else if ( isSkippable ( src [ 0 ] ) && ! inString ) {
180180 src . shift ( ) ;
181181 curPos ++ ;
182182 if ( src [ 0 ] === '\n' ) curLine ++ ;
0 commit comments