new JSScanner()
Classe que realiza a análise léxica (identificação e extração de pedaços de código) da linguagem javascript.
Example
var JSScanner = require('@nginstack/engine/lib/compiler/ijs/JSScanner'); // O exemplo abaixo extrai todas a variáveis do código e as armazena no Array variables. var scanner = new JSScanner(); scanner.prepare('for (var i = 0; i < 10; i++) { var x = i * 2 }'); var token; var variables = []; while ((token = scanner.nextToken()) !== JSTokenType.NONE) { if (token === JSTokenType.IDENTIFIER) { if (variables.indexOf(scanner.tokenWord.str) === -1) { variables.push(scanner.tokenWord.str); } } } variables; //O resultado será: i, x
Members
-
lineBreaks :boolean
-
Informa se o último token lido inicia uma linha. A linha 1(um) não é considerada.
O exemplo abaixo lista todos os strings de token que iniciam uma nova linha que não senha a linha 1.Type:
- boolean
Example
var JSScanner = require('@nginstack/engine/lib/compiler/ijs/JSScanner'); var scanner = new JSScanner(); scanner.prepare( "for(var i = 0; i < 10; i++) { var x = i * 2; if (false) { } }"); var result = ''; while (scanner.nextToken() !== JSTokenType.NONE) { if (scanner.lineBreaks) { result += scanner.tokenWord.str + '\r\n'; } } result //O resultado será: <b>for, var, if, }, }</b>
-
lineBreaksInsideString :boolean
-
Informa se o último token lido é uma string com quebra de linha.
O exemplo abaixo lista todas as string que possuem quebra de linha.Type:
- boolean
Example
var JSScanner = require('@nginstack/engine/lib/compiler/ijs/JSScanner'); var scanner = new JSScanner() scanner.prepare(" var str1 = 'str 1' var str1 = 'str 2' var str1 = 'str 3' var str1 = 'str 4' "); var result = "" while (scanner.nextToken() !== JSTokenType.NONE) { if (scanner.lineBreaksInsideString) { result += scanner.tokenWord.str + "\r\n"; } } result //O resultado será <b>str 2 str 4</b>
-
position :number
-
Retorna posição do varredor dentro do código fonte. A posição é zero indexada.
Type:
- number
-
source :string
-
Retorna o código fonte preparado
Type:
- string
-
token :string
-
Retorna o token atual
Type:
- string
-
tokenWord :JSTokenWord
-
Objeto com informações da palavra do token
Type:
Methods
-
clear()
-
Se houver, remove o código fonte atual que está preparado para ser varrido pelo JSScanner.
-
nextToken()
-
Obtém o próximo token(pedaço atômico do código fonte). Os valores deste campo devem ser testados com as propriedades estáticas da classe JSTokenType
Returns:
Próximo token do código fonte.
- Type
- string
-
prepare(source)
-
Prepara o código fonte para ser varrido pelo JSScanner
Parameters:
Name Type Description source
string Código fonte que será preparado para ser varrido.