Class: JSScanner

@nginstack/engine/lib/compiler/ijs/JSScanner~ JSScanner


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.